2016-04-25 10 views
1

私は、レコードセットが書き込まれたファイルを作成するVisual Scriptを作成しようとしています。だから、名前vbsを使用してデータベース内のレコードを使用しているファイル

Dim Filename 
Dim Connection 
Dim commandoSQL 
Dim Archivo 
Dim Nombre 
Dim objFSO 
Dim outputFile 

Call Main 
Sub Main 
    Set objFSO=CreateObject("Scripting.FileSystemObject") 
    Call startConnection() Set commandoSQL = Connection.Execute("select rest_def.obj_num, hdr_def.line_01, hdr_def.line_02, hdr_def.line_03, hdr_def.line_04, hdr_def.line_05, hdr_def.line_06, trlr_def.line_01, trlr_def.line_02, trlr_def.line_03, trlr_def.line_04, trlr_def.line_05, trlr_def.line_06, trlr_def.line_07, trlr_def.line_08, trlr_def.line_09, trlr_def.line_10, trlr_def.line_11, trlr_def.line_12 from rest_def inner join hdr_def on hdr_def.obj_num rest_def.obj_num inner join trlr_def on trlr_def.obj_num = hdr_def.obj_num where hdr_def.obj_num = 101") 
    'Archivo = "D:\archives\" 
    Set Filename = Connection.Execute("Select obj_num FROM rest_def") 
    Nombre = Filename.getString 
    Archivo = "D:\archives\" + Nombre + ".txt" 
    Set outputFile = objFSO.CreateTextFile(Archivo,True) 
    outputFile.Write commandoSQL & vbCrLf 
    outputFile.Close 
    Call closeConnection() 
End Sub 

Sub startConnection() 
    Set Connection = WScript.CreateObject("ADODB.Connection") 
    Connection.Open "DSN=milo; UID=dataBase; PWD=password" 
End Sub 

Sub closeConnection() 
    Connection.Close 
End Sub 

ファイル名のデータの場合:例を入れて、私はクエリは、クエリがファイルに書き込まれたく、およびファイルの名前は、テーブルの行の1つである、ここに私のコードです私は、ファイルに書かれているすべてのレコードセットを使って7890.txtという名前のファイルを作成したいと思っています...助けてください、これは私の最初の試みです。...

答えて

0

ADODBオブジェクトをVBScript私はrecommeしたい最初にADO API Referenceを読んで、さまざまなオブジェクトに慣れるようにしてください。

この特定のケースでは

Set Filename = Connection.Execute("Select obj_num FROM rest_def") 

ラインは、あなたがFieldsコレクションを使用するクエリの結果にアクセスし、このいずれかの場合0で返されるフィールドの順序位置を渡すために、ADODB.Recordsetオブジェクトを返しますか、名前付きフィールドはobj_numとなります。

Nombre = Filename.Fields("obj_num").Value 

Nombre = Filename.getString 

からこの行を変更することになる

ADODB.RecordsetオブジェクトのgetString()としてそのような方法は存在しません。

Sub Main 
    Set objFSO=CreateObject("Scripting.FileSystemObject") 
    Call startConnection() 
    Set Filename = Connection.Execute("Select obj_num FROM rest_def") 
    'Continue to iterate through the recordset until we reach the last 
    'record (EOF). 
    Do While Not Filename.EOF 
     Nombre = Filename.Fields("obj_num").Value & "" 
     Archivo = "D:\archives\" & Nombre & ".txt" 
     Set outputFile = objFSO.CreateTextFile(Archivo, True) 
     outputFile.Write commandoSQL & vbCrLf 
     outputFile.Close 
     'Move to next record 
     Call Filename.MoveNext() 
    Loop 
    Call closeConnection() 
End Sub 

Main() Subプロシージャを変更すると、動作するはずです。返されるレコードごとにファイルを作成するかどうかによって異なりますが、制限された説明からこれが私の解釈です。

+1

これは完璧に機能しました。ありがとう、私の友人... – DarkVader

関連する問題