
PostgreSQLのDBに、SQL文を投げて、結果をシートに書きだす、というマクロを組みました。 しかし、A5などのソフトでこのSQL文を実行すると正しく結果が返ってくるのですが、下記のマクロで流そうとすると、
.CommandText = Array(myCmd)
部分で”型が一致しません”とエラーを返します。
この原因がおわかりの方がいたら、是非教えて下さい。
netで調べたりしたけどわかりません。
ちなみに、マクロで、注意A)のSQL文を実行すると
エラーなく実行できました。尚、下記のSQL文の改行は
見やすくするためにしているだけで、実際とは異なります。
また、SQL文を3つの変数に区切り、最後にmyCmdにドッキングして
実行したりもしましたがダメでした。
Sub test()
Dim myCnc As String
Dim myCmd As String
'Worksheets.Add 'ワークシートの追加
Sheets("ユーザー名簿").Select
'接続先サーバーを指定
myCnc = "ODBC;DRIVER={PostgreSQL Unicode};DATABASE=" & t_name &
";SERVER=" & s_ver & ";PORT=5432;UID=" & user &
";;SSLmode=disable;ReadOnly=0;Protocol=7,"
'Select 文
myCmd =
"SELECT t_syukka.order_dtl_id As 受注先コード,t_torihikisaki.ryknm As 受注先
FROM
t_nonyusaki, t_syukka,t_torihikisaki
WHERE
t_torihikisaki.tkcd = t_nonyusaki.tkcd
And
t_nonyusaki.jscd = t_syukka.juchusaki_id
And
t_syukka.syukka_date >='20091120'
And
t_syukka.syukka_date <='20091201'"
With ActiveSheet.QueryTables.Add( _
Connection:=myCnc, Destination:=Range("A5"))
.CommandText = Array(myCmd)
.name = t_name
.Refresh BackgroundQuery:=False
End With
End Sub
注意A)
myCmd =
"SELECT
t_syukka.order_dtl_id As 受注先コード,t_torihikisaki.ryknm As 受注先
FROM
t_nonyusaki, t_syukka,t_torihikisaki
WHERE
t_syukka.syukka_date >='20091120' And t_syukka.syukka_date <='20091201'"
環境)
DB:Linux PostgrSQL
クライアント:WindowsXP,VISTA Office2007
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
どもども、解決したようで何よりです。
(^-^)一応自分もプログラマの端くれなので一つご指摘を。
>サンプルをよくわからないまま流用したのが失敗のもとでした。
う~ん、趣味でならコレでも良いですけど・・・
仕事としてプログラミングをしているのであればサンプルなど
ソース流用する場合は内容を理解した上で使いましょう。
理解しないままだと、ソースコードレビューでの指摘や
テストでバグ発生した などで説明が求められたときに
「ソース流用したので動きは良くわかんないです」とかじゃ
自分の首を絞める以外の何者でもないです。
・・・ま、昔は自分も良くやりました。(-_-;)頑張ってくださいね。
No.1
- 回答日時:
Array関数ってVariant型の配列を返すものだと思うけど、
CommandTextプロパティは良く知らないけど名前から文字列型かなぁ・・・
Variant型の配列→String型に格納しようとしてるからエラーが出てるのかと思われます。
参考URL:http://msdn.microsoft.com/ja-jp/library/cc389626 …
lesskeyさん!あなたの回答を参考に次の2点を変更することでうまくエラーも出ずに実行することができましたっ!
ご指摘のように、Stringではなく、Variantにしてみました。
それで、実行しましたが、それまでのように、「型が一致しません」は
あいかわらず出ました。
そこで、=Array(myCmd)を =myCmd にしたところ問題が出ずに実行できました。
ありがとうございました。
元々、サンプルをよくわからないまま流用したのが失敗のもとでした。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
実行時エラー -'-2147417848
-
なぜこんな初歩的なVBAのIf文で...
-
ExcelVBA Range クラスの Page...
-
VBAがブレークモードになっ...
-
マクロについて教えてください...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー3001「引数が間違...
-
vbaのvlookup関数エラー原因を...
-
VB6+SQL サーバー 2000 で 実行...
-
実行時エラー48発生時のDLL特定...
-
INSERT INTOステートメント構文...
-
Access2000での未定義関数repla...
-
アクセス 実行時エラー3265
-
マクロでのActiveSheet.Pasteで...
-
VBAで、定数式が必要ですのエラ...
-
VBAでのエラー
-
VBAのエラー発生場所をメッセー...
-
職場から目的地までの距離集計
-
『実行時エラー 5 プロシージャ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
実行時エラー -'-2147417848
-
ExcelVBA Range クラスの Page...
-
マクロについて教えてください...
-
VBAでのエラー
-
【Excel VBA】マクロをボタンに...
-
実行時エラー48発生時のDLL特定...
-
EXCEL VBAマクロ中断でデバッグ...
-
なぜエラーになるのでしょうか...
-
実行時エラー3001「引数が間違...
-
OLEDB.NETで接続できない
-
INSERT INTOステートメント構文...
-
VBAのエラー発生場所をメッセー...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
ADODB.Streamを使用してUTF-8を...
-
カーソルオープンでエラー(ORA...
-
Invalid procedure call or arg...
おすすめ情報