|
すみません、うまい文章がかけません。分かりにくかったら、読み飛ばして、(C)以降を呼んでください
(A)
If Me.Filter = "" Then
strWhere = True
Else
strWhere = Me.Filter
End If
上記ロジックが存在すると思いますが、Me.Filterの値をstrWhere変数に代入しています。
このMe.Filterは、フォームのプロパティのはずで、SQLのWHERE句の「WHERE」を外した部分が
格納されているはずです。その値が「カラム名=値(又はカラム名)」形式になっているはずです。
このsteWhereをSQL作成に使用しているため、steWhereに格納されている条件式にもエイリアスが必要となるはずです。「エイリアス.カラム名=値(又はエイリアス.カラム名)」
値の確認方法は、マウスを変数の上に持っていくか、イミディエイトウィンドウを使用します。(C)を参照
(B)
「3を指定してください」というエラー自体は
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
の実行時に発生しているはずで、SQLのロジックエラーと理解してください。つまり、SQLとしては成立していないはずです。
(C)
生成されたSQLを見せていただいた方が速いと思います。
SQLの問題であることは、エラーを見る限り間違いありません。
どこまでご存知か不明のため、念のため記載します。
1.以下の行にカーソルを合わせる
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
2.「F9」キーを押す。ブレークポイントが作られ行の背景が茶っぽくなります。
3.2.までを実行した上で、問題が発生するパターンでプログラムを実行
4.プログラム実行がブレークポイントで止まります。
5.イミディエイトウィンドウに「?strSQL」と打って「Enter」
6.変数内に格納されているSQL文が表示されます。
※イミディエイトウィンドウが表示されていない場合は、メニューの表示(V)→イミディエイトウィンドウ(I)で表示させます。
|
|