プロが教える店舗&オフィスのセキュリティ対策術

ACCESS VBAについて教えてください。

DoCmd.OpenFormのWhereConditionの部分の記述がわからないのです。
1つの条件の場合は問題なく表示できたのですが、複数条件にすると「抽出条件でデータ型が一致しません。」とエラーになってしまいます。
なぜでしょうか?

このように記述しています。
DoCmd.OpenForm "会員データ", , , "種別 = '" & Me![種別] & "' AND 会員番号 = '" & Me![会員番号] & "'"

種別、会員番号ともに数値データです。

A 回答 (2件)

こちら(Access2010)では、抽出条件・・・のエラーになりました。


先の回答者さんも指摘されていますが
DoCmd.OpenForm "会員データ", , , "種別 = '" & Me![種別] & "' AND 会員番号 = '" & Me![会員番号] & "'"

種別、会員番号ともに『数値データ』です。
なので、シングルクォーテーションで括る必要は有りません。
DoCmd.OpenForm "会員データ", , , "種別 =" & Me![種別] & " AND 会員番号 =" & Me![会員番号]
です。
これでエラーになるのなら、
DoCmd.OpenForm "会員データ"
だけで試してみれば問題解決の糸口が掴めるかと。
なお、日付型の場合は、# で括ってください。
    • good
    • 0

Option Compare Database


Option Explicit

Private Sub コマンド0_Click()
On Error GoTo err_コマンド0_Click
  DoCmd.OpenForm "画像一覧", , , "id=1"
  DoCmd.OpenForm "画像一覧", , , "id='1'"
  DoCmd.OpenForm "画像一覧", , , "id=''"
exit_コマンド0_Click:
  Exit Sub
err_コマンド0_Click:
  MsgBox Err.Description
  Resume exit_コマンド0_Click:
End Sub

3つの書き方の内、下の2つはエラーになります。
でも、エラーメッセージが違います。

"OpenFormアクションはキャンセルされました"

もちろん、原因は<型の不一致>です。

'1'・・・文字列型
''・・・・ヌル値

>抽出条件でデータ型が一致しません。

これは、クエリの実行時のエラーだと推察します。
ですから、<ACCESS VBAのOpenForm書き方>のみに問題がある訳ではないと思います。
でも、先に発生するエラーは、"OpenFormアクションはキャンセルされました"の筈。
だとするならば、DoCmd.OpenFormは正常に実行されていることになります。

つまり、問題が複層している可能性があります。

なお、Access2002の場合ですが・・・。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>つまり、問題が複層している可能性があります。

再度、見直すと矛盾があるような気がしてきました・・・
もう一度見直します。
その時に疑問が沸いたら、整理したうえで質問いたします。

早速の回答ありがとうございました。

お礼日時:2011/10/09 22:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A