0

数年前からCrystal Reportsを使用していますが、今まで「コマンド追加」は避けてきました。

注文確認を生成するレポートがあります。特定の間隔で確認を印刷するようにスケジュールしたいのですが、そのためには、注文が最後に変更された日時が必要です。その情報は監査テーブルで見つけることができますが、監査テーブルには、変更された回数に応じて、同じ注文の複数のコピーが含まれる場合があります。この監査テーブルに直接参加することはできません。これは、注文確認に重複した行が作成されるためです。サブレポートの監査テーブルから必要な情報を収集することはできますが、それらの結果でメイン レポートをフィルター処理することはできません。

監査テーブルを取得し、各注文の最新のレコードのみを取得して、編集日時でフィルターできるようにしたいと考えています。

この声明を書くのを手伝ってくれる人はいますか?

これが私がこれまでに持っているものです:

SELECT "OEP40A"."ORDN40", "OEP40A"."ADAT40", "OEP40A"."ATIM40", "OEP40A"."APRG40", "OEP40A"."ARCT40"
 FROM   "S103EC55"."OSLD1F3"."OEP40A" "OEP40A"
 WHERE  "OEP40A"."ARCT40"='2' AND "OEP40A"."APRG40"='OE340'
 ORDER BY "OEP40A"."ORDN40", "OEP40A"."ADAT40" DESC, "OEP40A"."ATIM40" DESC

注文番号は OEP40A.ORDN40 です。私が抱えている問題の 1 つは、日付 (OEP40A.ADAT40) と時刻 (OEP40A.ATIM40) が別のフィールドであることです。これらのフィールドが分​​かれている場合、最大の日付と時刻を持つレコードを選択するにはどうすればよいですか? 上記のステートメントは、常に最初に日付でソートし、次に時間でソートすることによってそれを達成しますか?

追加するために編集:

私のサーバーは、V5R4 を実行する IBM iSeries です。他の誰かがそれを必要とする場合に備えて、私が思いついた解決策を次に示します。

COUNT、osld1f3.oep40a.cono40、osld1f3.oep40a.adat40、osld1f3.oep40a. .oep40a.atim40

osld1f3.oep40a から

WHERE osld1f3.oep40a.arct40=2 および osld1f3.oep40a.aprg40='OE340' および osld1f3.oep40a.actf40<>'X'

4

2 に答える 2

0

私の知る限りあなたの問題を見ることで、望ましい結果を得るためにコマンドを書く必要はありません。

以下のプロセスを試してください:

  1. 最初にdatetimefromを作成し、DateTime使用しDateTimeValue (date, time)ます。以下のリンクをチェック

http://www-01.ibm.com/support/knowledgecenter/SS4JCV_7.5.5/com.businessobjects.integration.eclipse.designer.doc/html/topic664.html

  1. 次に、注文番号でグループを作成し、作成したDatetime値を詳細に配置します。

これにより、その注文グループの詳細に日時の異なるレコードがあります。

  1. 詳細を抑制し、日時フィールドを右クリックして日時の最大値を取得します。これにより、最近の発生が表示されます。

  2. このすべてを行う前に、データベース エキスパートで注文番号を使用してテーブルをリンクします。

于 2015-01-16T07:59:45.663 に答える
0
  1. 役立つ可能性を最大限に高めるために、問題のテーブルのテーブル作成スクリプトを提供する必要があります。

  2. 余談ですが、コマンド アプローチを使用しているため、(可能であれば) Crystal でコマンドを実行する前に、まずターゲット データベース (Oracle、SQL Server) でクエリが完全に機能するようにします。その方法でデバッグする方が簡単です。

  3. 最新のレコードの取得に関して、テーブルが順次主キーを使用している場合、次のようなサブクエリを実行できます。

select z.claim_id, z.ASSIGN_ID from (select c.claim_id , (select max(key_id) from audit_table ca where ca.fk_Id = c.fk_id) ASSIGN_ID from primary_table c) Z

于 2015-01-15T19:47:15.443 に答える