0

Role Tailored Client Report を使用して Microsoft Dynamic NAV のレコードを更新する関数を作成するにはどうすればよいですか?

前もって、マカラさん

4

2 に答える 2

2

レポート トリガーにコードを配置できます。

以下は、Customer テーブルを参照する Customer データ項目の OnAfterGetRecord トリガーに配置できるコードの簡単な例です。

IF Customer.Name[1] = 'A' THEN BEGIN
  Customer.Name[1] := 'B';
  Customer.MODIFY;
END

上記のコードは、レポートに含まれる、大文字の「A」で始まる顧客の名前の最初の文字を大文字の「B」に変更します。

この機能のみを備え、印刷出力のない完全なレポートは、ペーストビンから見つけることができます: Simple Dynamics Nav Report Sample

ペーストの内容全体をテキスト ファイルにコピーし、Nav にテキストとしてインポートできます。

ただし、これを行うと、ID が 50000 の以前のレポートが、追加の警告やプロンプトなしでこの例に置き換えられることに注意してください。テキストとしてインポートされたレポートは、実行する前に Nav にコンパイル済みの形式で保存する必要があります。

于 2012-06-21T07:41:50.610 に答える
1

C / ALコードをRTCレポートに直接配置することはできません。代わりに、「クラシック」クライアント/開発環境のDataItemの背後にあるトリガーを使用する必要があります。このコードはクラシックレポートとRTCレポートの両方に共通であり、レポートの実行時に実行されるためです。どちらの環境でも。

同様の例を使用するには;

Vendor - OnAfterGetRecord()
----------------------------

...

IF Vendor."Phone No." = '' THEN BEGIN
  Vendor."Phone No." := NewPhoneNo;
  Vendor.MODIFY;
END;

...

レポート自体に次のプロパティを設定して、印刷ダイアログとリクエストフォームを非表示にすることができます(フィルターを適用したくない場合)。

UseReqForm := FALSE;
ProcessingOnly := TRUE;

注意すべきもう1つの重要な点は、セクションの後ろにあるコードはクラシックレポートにのみ使用され、RTCで実行されている場合は実行されないことです(予期しない結果を説明する可能性があります)。

于 2012-06-21T04:25:20.570 に答える