Tips

Passing a nil pointer parameter.

日付2003/04/04
ID26688 (英語原文参照)
バージョン6.7.x, 6.8.x and 2003
プラットフォームMac & Win

タイトル
U.S)Passing a nil pointer parameter.
JP)ヌルポインタパラメータを渡す

このTipsでは、ヌル値のパラメータを渡すことについて説明します。

クロスタブレポートの印刷を処理するためのメソッドを4D2003の新しいQRコマンドを使って作成するとします。クロスタブレポートの一連の印刷を処理するための一般的なメソッドを記述しています。ひとつは、州毎、四半期毎のセールスの要約。もうひとつは、州毎、製品カテゴリー毎のセールスの要約です。。

さまざまなレポートとフォーマットを処理するために、「Rpt_QRCrsTabReports」メソッドを作成します。「Rpt_QRCrsTabReports」メソッドは13コのパラメータを渡します。

以下のプロシジャーコールは、州毎、四半期毎の販売のレポートを作成するための「Rpt_QRCrsTabReports」メソッドです。年4回のレポートを作成するため、日付けフィールドへポインタを渡す6番目のパラメータが必要になります。同じく、年4回のレポートを作成するために、年を渡す7番目のパラメータを使用しています。

Rpt_QRCrsTabReports ("QuarterlySales";->[Invoices];"[Invoices]InvoiceDate";->[Customers]State;->[Invoices]InvoiceTotal;->[Invoices]InvoiceDate;"1998";"$^^^,^^0.00";"Grand Totals by Quarter";"Grand Totals by State";"4D Video Sales Report: Quarterly Sales Per State";1;"")

しかし、年4回のレポートではないレポート、例えば州毎、製品カテゴリー毎の販売レポートを印刷するために「QRCrsTabReports」メソッドを使用する場合、6番目のパラメータ(日付けフィールドへのポインタ)を使用しないし、7番目のパラメータ(年4回のレポートの年)も使用しません。

7番目のパラメータ、年4回のレポートの年が文字列なので、ヌル値を渡すことはヌルストリング("")を渡すことによって簡単に行えます。しかし、6番目のパラメータ、日付けフィールドへのポインタはどうでしょうか?ヌルポインタパラメータはどのように渡しましょうか?単にパラメータを空にしておく、または->[]を渡すとコンパイルエラーが発生します。ヌルポインタパラメータを渡すには以下のように、ポインタ変数を宣言して、その変数をパラメータとして渡すことによって、正確に行われます。

C_POINTER($pNilPointer)
Rpt_QRCrsTabReports ("Sales";->[LineItems];"[Customers]State";->[Products]Category;->[LineItems]ExtendedPrice;$pNilPointer;"";"$^^^,^^0.00";"Grand Totals by State";"Grand Totals by Category";"4D Video Sales Report: Sales Per State Per Product Category";1;"")