• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL文でデータを抽出できない。)

SQL文でデータを抽出できない

このQ&Aのポイント
  • SQL文でデータを抽出できない原因として、現行のSQL文の仕様に問題があることが考えられます。
  • 変更したいSQL文では、特定の日付範囲内で最も若いデータを抽出するための条件が追加されています。
  • エラーメッセージによると、変数の使用方法やSQL文自体に問題がある可能性があります。適切な方法を知るために、技術者の方に相談することをおすすめします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.2

>ただ、コンパイルは通ったのですが、データ自体が正しく取得することができません。 "SELECT .sID,B.subject,B.D_time FROM (SELECT sID,Min(D_time) AS mtime ,subject FROM Reg1Data WHERE D_time <= & w_jyukobistart GROUP BY sID,subject) A INNER JOIN Reg1Data B ON A.sID=B.sID AND A.mtime=B.D_time GROUP BY B.sID,B.subject,B.D_time ORDER BY B.sID,B.subject;" だとすべて文字列として扱われるのでコンパイルは正常に終了します。 ただw_jyukobistartは変数であり変数名で検索を行うわけではありません。 Dim str As String str = "10" "A <= " & str は「A <= 10」という文字列 "A <= & str"は 「A <= & str」という文字列になります。 つまり上のSQLだと変数の値を表示していません。 "SELECT .sID,B.subject,B.D_time FROM (SELECT sID,Min(D_time) AS mtime ,subject FROM Reg1Data WHERE D_time <= " & w_jyukobistart & " GROUP BY sID,subject) A INNER JOIN Reg1Data B ON A.sID=B.sID AND A.mtime=B.D_time GROUP BY B.sID,B.subject,B.D_time ORDER BY B.sID,B.subject;" SQLの文字列を Debug.PrintやMsgBoxで表示してみるとわかりやすいです。 >日付の最小値を取得することに加え、日付の範囲を指定することに無理があるのでしょうか? それなりによく行います。

boojar
質問者

お礼

変数の取り扱い方に問題がやはりあったようです。 問題は解決いたしました。 丁寧な説明ありがとうございました。

その他の回答 (1)

  • sh_hirose
  • ベストアンサー率66% (56/84)
回答No.1

D_time <= & w_jyukobistart ではなく D_time <= " & w_jyukobistart & " では?

boojar
質問者

補足

ご回答ありがとうございます。 この程度の質問であり申し訳ございませんでした。 ただ、コンパイルは通ったのですが、データ自体が正しく取得することができません。 日付の最小値を取得することに加え、日付の範囲を指定することに無理があるのでしょうか?データの取得を考えた場合、他のSQL文で抽出する方法があるのでしょうか?もし詳しくおしりでしたら教えて下さい。よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう