0

これが機能しない理由は本当にわかりませんが、次のことを機能させようとしています。

If Me.Text1 = DLookup("Field1", "Test1_Table", "Test1_Table.Field1= _
     & Me.Text1") Then
   MsgBox "It works"
Else
End If

上記のコードは、私が取り組んでいる大規模なプロジェクトのテスト コードであるため、テーブルとフィールドの名前はテスト用です。また、Field1 は数値フィールドです。基本的に、Text1 に 1 を入力すると、DLookup 機能が Test1_Table.Field1 内で 1 を見つけて、それが機能することを示すメッセージを表示するようにしたいと考えています。これを次のような文字列値で機能させることができます。

If Me.Text1 = DLookup("Field1", "Test1_Table", "Test1_Table.Field1='" _
    & Me.Text1 & "'")Then

同様に、これは Text1 に 1 が入力された場合に機能します。

If 1 = DLookup("Field1", "Test1_Table", "Test1_Table.Field1= _
    & Me.Text1") Then

しかし、私は試しました:

If Me.Text1 = DLookup("Field1", "Test1_Table", "Test1_Table.Field1= _
    & Forms!TestSearch_Form!Text0)Then

If Me.Text1 = DLookup("Field1", "Test1_Table", "Test1_Table.Field1= _
    & Forms!TestSearch_Form!Text0)Then

等...

さまざまな組み合わせを試してみましたが、数値を扱うときに 2 つを等しくすることができないようです。誰かが私が欠けているものを知っているか、何かアイデアを持っていますか?

ありがとうございました、

ダミオン

4

3 に答える 3

2

どうですか:

 If Not IsNull(DLookup("Field1", "Test1_Table", "Field1=" & Me.Text1)) Then

これは、Field1 が数値フィールドとして定義されている場合にのみ機能します。日時フィールドまたはテキスト フィールドの場合は、区切り記号が必要です。

編集:

上記のステートメントは、Me.Text1 の値と等しいか、null です。DllookUp を使用する別の方法は、次のように言うことです。

 SomeVar=DLookup("Field1", "Test1_Table", "Field1=" & Me.Text1)

SomeVar は null (つまり、見つからない) になるか、値または Field1 (Me.Text1 と等しい) を返します。このことから、Field1 の値を返すのは無意味であることがわかります。これは、見つかって text1 と等しいか、見つからず、null です。DlookUp の値を取得する唯一の理由は、テーブル内の他の値または計算を検索する場合です。

この後、正確な一致を探していることを覚えておくことが重要です。小数点の右側では、10 進数の値がまったく異なる可能性があります。

于 2009-05-19T17:12:29.450 に答える
0

CInt(Me.Text1) = DLookup("Field1", "Test1_Table", "Test1_Table.Field1=" & Me.Text1) の場合...

上記のコードは完全に機能します。Guiness のおかげで、オリジナルのコードを活用して、if ステートメントに CInt を追加するだけで済みました。

また、ご意見をお寄せいただきありがとうございます。

DFM

于 2009-05-20T00:02:57.850 に答える
0
Dim sWhere as String
sWhere = "Test1_Table.Field1=" & Me.Text1
If CInt(Me.Text1)=DLookup("Field1", "Test1_Table", sWhere) Then         
     MsgBox "It works" 
Else
   'do something else
End If

DLookup 内であまりにも多くの vba を実行しようとすると、問題になる可能性がありますか?

于 2009-05-19T15:43:06.257 に答える