Dynamics AX 2012には、HcmWorkerテーブルとHcmEmploymentテーブル(他の中のもの)で構成されるAOTクエリがあります。私の問題は、SSRSではなくレポートを作成するときや、このクエリを使用するときに、HcmEmployment内の有効な時刻状態の従業員しか取得できないということです。AOTクエリの有効な時間状態を回避する
私はこの表に記録されているすべての従業員を、現在の雇用がなくても1回だけ取得したいと考えています。最適な解決策は、現在の雇用がある場合はHcmEmploymentからレコードを取得し、それ以外の場合は開始日が「今すぐ」の最後のレコードを取得することです。しかし、私は最後の開始日に参加するソリューションを受け入れることができます。
コードを使用するたびに(つまりAOTクエリで解決する)コードを追加する必要がないソリューションが望ましいです。
コードからクエリのvalidTimeStateDateTimeRangeプロパティを設定しようとしましたが、従業員に複数の雇用がある場合は重複した行になりました。
HcmEmploymentデータソースをExistsJoinとfirstOnlyに設定すると、ビューでは機能しますが、レポートでは機能しません(レコードは重複します).(レポートでこのビューを使用することはオプションではありません。 HcmEmploymentからDefaultDimensionにフィルタリングするために、私はそれを見たよう
どのように私はこの問題を解決することができ
ユーザーフィルタと一致するレコードがない場合、従業員は印刷しないでください。 ANYレコードが一致する場合、その従業員は一度印刷する必要があります。あなたのソリューションは、クエリが使用されている場所(MANYレポート)のすべての場所でかなりのコードを必要とします。私はこれを避けることを望んでいます。しかし、提案に感謝:) –
2番目のオプションを取って 'ExistsJoin'を使い、seperat selectの残りのフィールドを見つけてください。 –
もし 'ExistsJoin'を使うと、私はまだ重複したレコードを取得します。あなたは 'maxof'をどうやって使うといいと思いますか?私が使用できることがわかる唯一の方法は、HcmEmploymentデータソースを無効にすることです。従業員を反復するときに、(ユーザー範囲を使用して)雇用者がいるかどうかを確認できます。残念なことに、多くの従業員を抱えるデータベースではパフォーマンスがひどくなります。それは解決策ですが、私がより良いものを見つけられなければ、それを使うことを検討します。 –