|
ご丁寧なご回答有難うございます。
>生成されたSQLを見せていただいた方が速いと思います。
>SQLの問題であることは、エラーを見る限り間違いありません。
?strSQL
SELECT A , COMM AS テスト , C AS 名A , D AS 名B , E AS アドレス , F AS 機会番号 , G As 名C , H As 使用者 , コメント , I , J , K FROM (select TEST_TABLE.[COMM], TEST_TABLE.[A], TEST_TABLE.[C], TEST_TABLE.[G], TEST_TABLE.[D], TEST_TABLE.[E], TEST_TABLE.[F], TEST_TABLE.[H], TEST_TABLE.[コメント] from TEST_TABLE WHERE (((TEST_TABLE.E) In (SELECT [E] FROM [TEST_TABLE] As Tmp GROUP BY [E] HAVING Count(*)>1 )) AND ((TEST_TABLE.E)<>""))ORDER BY TEST_TABLE.E DESC ) As TEST_TABLE WHERE True ORDER BY TEST_TABLE.COMM DESC
と記載されておりました。
お手数ですが、よろしくお願いします。
▼247b さん:
>すみません、うまい文章がかけません。分かりにくかったら、読み飛ばして、(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)で表示させます。
|
|