2017-01-13 12 views
0

フィールド値を表示するためにテキストボックスを使用するMS Accessレポートを作成しようとしています。最初の値は別のテーブルのエントリよりも高くまたは低くなります。MS Access、式ビルダーを使用して1つのテーブルのフィールドと別のテーブルのDLookupを比較する

レポートには、 "テーブル1"のレコードソースと、フィールド "Value1"に数値を表示する "txt_Value1"というテキストボックスがあります。私は比較したいフィールド "PassValue"を持つ2番目のテーブル "Customer_Criteria"を持っています。私の表現ビルダーステートメントは次のとおりです。

IIf([txt_Value1]<(DLookUp("[PassValue]","[Customer_Criteria]","[Customer] = 'ABC'")),"TRUE","FALSE") 

このステートメントは、正しい論理結果が何であるかにかかわらず、常にfalseを返します。私はそれをテストしてみた

、書き込み:

IIf(1<(DLookUp("[PassValue]","[Customer_Criteria]","[Customer] = 'ABC'")),"TRUE","FALSE") 

そして、私は正しい結果を得ます。また、私が書く場合:

IIf([txt_Value1]< 1,"TRUE","FALSE") 

私は正しい結果を得る。テキストボックス値とDlookupを比較するために私は何が欠けていますか?

答えて

1

私が理解するように、両方のフィールドは数値です。アクセスは、これらのフィールドをテキストと見なすことができるので、使用タイプの正しい変換を比較するためには、 これを試してみてください:フィールドはNULL値が含まれる可能性がある場合、このときの型変換関数はエラーを返します必要

IIf(CLng(Nz([txt_Value1],0))< _ 
    CLng(Nz(DLookUp("[PassValue]","[Customer_Criteria]","[Customer] = 'ABC'"),0)), _ 
    "TRUE","FALSE") 

Nz

+0

'PassValue'はおそらくすでにintです。その場合、第2の「CLng」は必要ない。 'txt_Value1'がnullにならないように、そして/またはDLookupがnullを返すのを防ぐために、システム内に他にどのようなバリデーションが存在するかによっては(レコードのnull PassValueまたは条件に一致するレコードがない)、' Nz' 。最後に、 'txt_Value1'に入力されたものが数字であることを確認してください。 – SunKnight0

関連する問題