2

私は決してプログラマーではありません。私は、自分のニーズに合わせてレポートを変更しようとしている、好奇心旺盛な下級管理者にすぎません。発注書とそれらの発注書に対する支払いを示す Crystal Reports .rpt ファイルがあります。私の問題は、支払い明細が注文番号を参照していないことです。現在、レポートをエクスポートしてから Excel で確認し、各 AP 明細を一致する注文番号と手動で照合する必要があります。AP行にも注文番号を表示してほしいです。

レポートには「@Voucher_PO_ID」というフィールドがあり、次の式が含まれています。

if {LAGL019Q.RECORD_TYPE} = "3" then
   if {LAGL019Q.SOURCE} = "AP" then
     {LAGL019Q.TRANS_REF_NUM}
   else if {LAGL019Q.SOURCE} = "PO" or {LAGL019Q.SOURCE} = "RQ" then
             {LAGL019Q.PO_ID}
    else " "
else " "

私が理解しているように、この式は、SOURCE が AP (買掛金) の場合、その行に TRANS_REF_NUM (支払いの小切手番号) を表示しますが、SOURCE が PO (注文書) の場合は PO_ID (注文書番号)。

繰り返しになりますが、プログラミングについてほとんど知らないので、 if then ステートメントを次のように変更するだけの簡単なものになることを望んでいました。

   if {LAGL019Q.SOURCE} = "AP" then
     {LAGL019Q.TRANS_REF_NUM} and {LAGL019Q.PO_ID}

しかし、これはうまくいきません。{LAGL019Q.TRANS_REF_NUM} + "blah" を追加することで、{LAGL019Q.TRANS_REF_NUM} の末尾にテキストを追加できるので、別のフィールドを追加しない理由がわかりません。

式のこの部分を変更することはできません。

"   if {LAGL019Q.SOURCE} = "AP" then
     {LAGL019Q.TRANS_REF_NUM}"

私が単に試してみると:

   if {LAGL019Q.SOURCE} = "AP" then
     {LAGL019Q.PO_ID}

それでもうまくいかないのですが、その理由はわかりませんか? 買掛金明細の場合は、対応する PO_ID を表示する必要があります。AP 明細に対応する PO があることを知っていても、これを行うと空白のフィールドが表示されます。

実際のデータベースがどのようにセットアップされているかに関して、私が気付いていないもっと大きなことがあると思います。AP ラインは実際には PO_ID を参照していない可能性があります。

私が持ってきたほとんどのグーグル検索はここに戻ってきたので、私の問題を投稿しようと思いました. 同様の質問を検索しましたが、ほとんどが私のリーグ外です。ご提案いただきありがとうございます。

4

1 に答える 1

0

あなたの唯一の問題は、文字列演算子 (または文字)ANDの代わりに論理演算子 (キーワード)を使用しようとしていることだと思います。うまくいけば、それは次のように簡単です:+&

if {LAGL019Q.RECORD_TYPE} = "3" then
   if {LAGL019Q.SOURCE} = "AP" then
     "This is the transaction#: " + {LAGL019Q.TRANS_REF_NUM} + 
     ", and this is the PO ID: " + {LAGL019Q.PO_ID}
   else if {LAGL019Q.SOURCE} = "PO" or {LAGL019Q.SOURCE} = "RQ" then
             {LAGL019Q.PO_ID}
    else " "
else " "

{LAGL019Q.PO_ID}="AP" の場合、次のようになります

This is the transaction#: <TheActualNumber>, and this is the PO ID: <TheActualPOID>

EDIT1: もう 1 つの考え: データベースが実際にこれらのレコードの有効な PO 番号を保持していることをどの程度確信していますか? 使用しようとしてif {LAGL019Q.SOURCE} = "AP" then {LAGL019Q.PO_ID}空白になった場合は、そのレコードの {LAGL019Q.PO_ID} が実際には null であることを示すかなり良い指標です。

于 2012-12-11T20:23:46.437 に答える