- ベストアンサー
アクセス DLookup
If Nz(DLookup("[主キー]", strテーブル名, "[主キー] = '" & str主キー & "'"), False) = True Then bl_未転記データ = True 'ないならば Else bl_未転記データ = False 'あるならば End If このコードはどこがおかしいですか? テーブルに主キーがあるかどうかを調べたいのですが あってもなくても、 bl_未転記データ = False 'あるならば になってしまいます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>テーブルに主キーがあるかどうかを調べたいのですが Dlookupの結果が主キーになってるからです。 [主キー] = True の結果は False にしかなりません。 DCount関数で、0 or 1以上の数値 で結果を出せばいいです。 If (DCount("*", strテーブル名, "[主キー] = '" & str主キー & "'") > 0 Then bl_未転記データ = True 'ないならば Else bl_未転記データ = False 'あるならば End If
その他の回答 (3)
- hatena1989
- ベストアンサー率87% (378/433)
主キーはテキスト型ですよね。 DLookupは該当のレコードが見つかればそのテキストを返します。 "テキスト"はTrueとは違いますので、"テキスト"=True はFalseになります。 該当レコードが見つからない場合は、Nullを返します。Nz関数で Null を Falseに変換してますので、その場合も結果はFalseになります。 Nullを返せば該当レコードなし、テキストを返せば該当レコードがあり、ということですので、Nullかどうかを調べればいいです。IsNull関数で調べることができます。 If IsNull(DLookup("[主キー]", strテーブル名, "[主キー] = '" & str主キー & "'")) Then なお、DCountで結果が0かどうかで調べることもできますが、DCountだと全件をカウントしますが、DLookupは該当レコードが見つかった時点で処理を終了しますので、高速になることが期待できます。
お礼
ご回答ありがとうございました。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
お礼
ご回答ありがとうございました。