解決済み

VBScriptでSQLに接続し、CSV出力したい

  • すぐに回答を!
  • 質問No.7339062
  • 閲覧数1930
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 66% (2/3)

お世話になります。
VBScriptでSQLに接続し、CSV出力したいのですが、どうしても上手くいかないのでどうかアドバイスを頂けたらと思います。

検索したサンプルを基に作成したプログラムです。

--------------------------------------
Dim ObjConn
Dim objFso
Dim objCsv
Dim objRc

Set ObjConn = Server.CreateObject("ADODB.Connection")
ObjConn.Open "Provider=SQLOLEDB;Server=XXXXX;Database=XXXXX;UID=XXXXX;PWD=XXXXX"
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objRc = Server.CreateObject("ADODB.Recordset")
Set objCsv = objFso.CreateTextFile("C:\テスト.csv", True )

sql = "select * from `商品マスタ`"

objRc.Open sql, ObjConn

Dim i
Dim Buffer

Do While not objRc.EOF

Buffer = ""
For i = 0 to objRc.Fields.Count - 1
if Buffer <> "" then
Buffer = Buffer & ","
end if
Buffer = Buffer & objRc.Fields(i).Value
objCsv.WriteLine(Buffer)
Next

objRc.MoveNext
Loop
--------------------------------------
これを実行すると、無限ループのような状態になり、テスト.csvに延々改行のみが出力されます。(文字は何も出力されない)
sql文の結果としては正しくは10レコードだけなので、For~Nextのループも10回しか繰り返さない筈なのですが、延々繰り返してしまっています。
objRc.RecordCount をやってレコード数を調べてみようともしましたが、結果としては何も返ってきません。
カーソルタイプによっては『-1』しか返らないとのことですが、-1すら返りません。
つまり、接続の時点で失敗していると思われるのですが、どこが間違っているのかが分かりません。

お詳しい方、ご教示いただけないでしょうか。
どうぞ、宜しくお願いいたします。

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

  • 回答No.1

ベストアンサー率 33% (1403/4213)

まずは以下の2行を入れ替える。
objCsv.WriteLine(Buffer)
Next
1行分のBufferを組み立ててからWriteLineでしょ。

確認のためには、シンプルなパターンを作りませんか?
Doループを構成する行(3行)とForループをコメントアウトして、
一回だけfields(0)だけを書き出す。
補足コメント
ykrhm30

お礼率 66% (2/3)

ありがとうございます。
確かに、その2行は逆でした、ご指摘ありがとうございます。
出力部もシンプルにさせてみましたが、やはり何も書き出されませんでした。

他におかしいところはございませんでしょうか・・・
申し訳ありません、どうぞ宜しくお願いいたします。
投稿日時 - 2012-03-03 01:32:44
お礼コメント
ykrhm30

お礼率 66% (2/3)

半分自己解決したのですが、出来ました!
改めてありがとうございました!
投稿日時 - 2012-03-03 11:58:28
感謝経済
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


感謝指数によるOK-チップ配布スタート!

ピックアップ

ページ先頭へ