2017-11-30 5 views
0

私はテキストフィールドに選択したクエリパラメータを表示するレポートヘッダーを作成しています。具体的には、ユーザはフォームにアクセスし、利用可能なコンボボックスの任意の組み合わせを選択し、送信ボタンをクリックして、レポートを生成するために使用されるクエリに選択されたパラメータを渡す。AccessでNzとDLookupを使用して#Errorを抑制できない

コンボボックスには、検索クエリのレコードが表示されます。たとえば、私のパラメータの1つはステータスです。 Statusコンボボックスの行ソースには、Statusテーブルの単なるクエリであるqry_StatusLookupという行ソースがあります。コンボボックスに動的な結果が表示されます。コンボボックスの列数は2で、列幅は0、 "1"に設定されています。これにより、ユーザーが選択内容を送信するときにID番号がクエリに渡されるように、ID列(名前列ではない)がバインドされます。

私のレポートヘッダーには、フォームに選択されたパラメーターを反映する必要があるフィールドと同じフィールドがあります。例えば、ヘッダ内のステータステキストボックスのように制御源と設定され:

=DLookUp("[Status_Name]","tbl_Status","[Status_ID] =" & [Forms]![frm_ParameterSelection]![cboStatusLookup]) 

これは、ID番号の代わりに、選択されたパラメータの名前を示しています。フォームを送信すると、値がクエリに渡され、レポートが表示されます。フォーム上でステータスが選択されていれば、正常に表示されます。ただし、ユーザーがステータスを選択しない場合、クエリは正常に実行され(ステータス別にフィルタリングしない)、レポートは正しくなりますが、選択されたステータスパラメータを表示するはずのヘッダーフィールドは#Errorとして表示されます。

DlookupをNZ関数でラップしようとしましたが、これはまだ#Errorが表示されます。パラメータはフォームから選択されていません。しかし、フォームからパラメーターを選択すると、状況は正常に表示されます。

私のNz関数の構文に問題はありますか?

=Nz(DLookUp("[Status_Name]","tbl_Status","[Status_ID] =" & [Forms]![frm_ParameterSelection]![cboStatusLookup]),"") 

または、コンボボックスの空の値が技術的にnullでないクエリに渡されていますか?

答えて

0

エラーがヌル、あなたはNz、ない分野でDLookUpをラップしているされていない、とフィールドが

次試してみてくださいnullの場合DLookUpはエラーを返します:

DLookUp("[Status_Name]","tbl_Status","[Status_ID] =" & Nz([Forms]![frm_ParameterSelection]![cboStatusLookup], 0)) 

(私はあなたのStatus_IDの列に0がないと仮定していますが、Iif(IsNull([frm_ParameterSelection]![cboStatusLookup]),を使用することもできます)

+0

+1!説明と提案をありがとう。 Nz関数を削除し、0を追加すると、機能が期待どおりに動作します。私は援助に感謝します。 (私はupvotedしかし、私はそれが表示されませんが記録されているので、15ポイント未満repのポイントがある) – dgibbons82

関連する問題