• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELマクロのSQL文での引用符の使い方)

EXCELマクロでpostgreSQLのデーターベーステーブルに接続してフィルタをかける方法

このQ&Aのポイント
  • EXCELマクロを使用して、postgreSQLのデーターベーステーブルに接続し、フォームに入力した値でフィルタをかけた結果をEXCELシートに転記する方法を教えてください。
  • ACCESSでVBAを使用したことはありますが、EXCELのマクロやSQLの扱いには慣れていません。どなたか教えていただけると助かります。
  • 現在、以下のコードを標準モジュールに書いて、Callで呼び出しています。

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

>お手数掛けて申し訳ないんですが、s_numが数値型の場合はどのように囲めばいいのかご教授いただければ幸いです。 s_numが数値型? じゃあ、owner_idも数値型なんでしょうか。 LIKEは文字列型しか使えませんよ。 LIKEではなく、=を使うとしたら、そのまま&でつなげるだけです。 " where owner_id = " & s_num & " and・・・・・・;"

thunder-sg
質問者

お礼

s_numは整数型のデータなのですが、整数型の宣言をすると「型が違います」エラーが出てたので、文字列扱いにして作業していました。 件局、文字列では「データが無い」というエラーが出たので、整数型にしてVal関数でうまく行きました。 以下、変更箇所 Dim s_num As Integer s_num = Val(form1.NUMBER) MySql = " select start_date, end_date, name, place, note from schedule" & _ " where owner_id = '" & s_num & "' and (start_date Between '" & Format(day1, "yyyy/m/d") & "' AND '" & Format(day2, "yyyy/m/d") & "') " & _ " order by start_date ASC; " Set QT = ActiveSheet.QueryTables.Add(Connection:=oRS, Destination:=Range("A3"))'ここ(コネクションの指定)もまちがってた。 この度は、ありがとうございました。 どうも片手間でやってると進歩が無く、なんとか時間を割いてレベルアップしたいと思います。 また、お手数掛けることがあるかもしれませんが、よろしくお願いします。

その他の回答 (1)

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

MySql = " select start_date, end_date, name, place, note from schedule" & _ " where owner_id LIKE s_num and (start_date Between #"" & day1 & ""# AND #"" & day2 & ""#) " & _ " order by start_date ASC; " なぜ引用符を2つ続けているのでしょうか。1つだけでいいです。 s_numはVBAの変数ですから、SQLの中に含めることはできません。 s_numの型はLIKEを使っているから文字列なんでしょうね。引用符を2つ続けるのはここです。 MySql = " select start_date, end_date, name, place, note from schedule" & _ " where owner_id LIKE """ & s_num & """ and (start_date Between #" & day1 & "# AND #" & day2 & "#) " & _ " order by start_date ASC; "

thunder-sg
質問者

お礼

ご教授ありがとうございます。 早速試してみましたところ、値はうまく取得できているようです。 ※データが無いと実行時エラーが発生しましたが、これは別の問題なので。 お手数掛けて申し訳ないんですが、s_numが数値型の場合はどのように囲めばいいのかご教授いただければ幸いです。 <(_ _)><(_ _)><(_ _)>