アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
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すら返りません。
つまり、接続の時点で失敗していると思われるのですが、どこが間違っているのかが分かりません。

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

A 回答 (1件)

まずは以下の2行を入れ替える。


objCsv.WriteLine(Buffer)
Next
1行分のBufferを組み立ててからWriteLineでしょ。

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

この回答への補足

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

他におかしいところはございませんでしょうか・・・
申し訳ありません、どうぞ宜しくお願いいたします。

補足日時:2012/03/03 01:32
    • good
    • 1
この回答へのお礼

半分自己解決したのですが、出来ました!
改めてありがとうございました!

お礼日時:2012/03/03 11:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!