お世話になります。
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ベストアンサー
- 回答日時:
まずは以下の2行を入れ替える。
objCsv.WriteLine(Buffer)
Next
1行分のBufferを組み立ててからWriteLineでしょ。
確認のためには、シンプルなパターンを作りませんか?
Doループを構成する行(3行)とForループをコメントアウトして、
一回だけfields(0)だけを書き出す。
この回答への補足
ありがとうございます。
確かに、その2行は逆でした、ご指摘ありがとうございます。
出力部もシンプルにさせてみましたが、やはり何も書き出されませんでした。
他におかしいところはございませんでしょうか・・・
申し訳ありません、どうぞ宜しくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Visual Basic(VBA) データベースから絞り込んでデータを読み込み 1 2023/02/21 19:51
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHP MySql ページング 2 2022/09/20 06:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
For文の終了値を関数にしても問...
-
ループの特定入力終了
-
ループを途中で抜けたいのですが。
-
break文でループを一気に抜ける...
-
C言語 数字を削除する関数
-
入力した文字列から母音だけを...
-
if文の中にfor文なのか、for文...
-
while doについて
-
aが500として ループ文の中に i...
-
エクセルでC言語のfor文と同じ...
-
#define _CRT_SECURE_NO_WARNIN...
-
Enterキーを押されたら次の処理...
-
OpenGLの惑星プログラム
-
数字以外が入力されたらエラー...
-
2÷3などの余りについて
-
「Aに対するBの割合」と「Aに対...
-
複数桁10進数の*桁目だけを抽出...
-
小数か整数かを判定する方法
-
プログラムでの数字につく”f”の...
-
DWORDの実際の型は何でしょうか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
break文でループを一気に抜ける...
-
ループを途中で抜けたいのですが。
-
do-while文が禁止される理由
-
入力した数値を倍々するプログラム
-
For文の終了値を関数にしても問...
-
C言語forループが完結した場合...
-
エクセルVBAで Do While (1)って?
-
入力した文字列から母音だけを...
-
if文の中にfor文なのか、for文...
-
Excel VBAで年度をまたぐ期間の...
-
C言語、whileループを抜け出す...
-
for文while文の無限ループの違...
-
Cプログラムが終了しない
-
プログラムで関数は使わない方...
-
PIC のプログラムについて ど...
-
アルゴリズムです!四つの数字...
-
UWSCにてある一定の動作を無限...
-
繰り返し文の利点について
-
ループの特定入力終了
-
PAD図の書き方
おすすめ情報