2013-07-18 19 views
1

我只是試圖將查詢的結果寫入.txt文件。我陷入困境,似乎無法進一步發展。vbs從記錄集中寫入

' # writes records to a .txt file 
Wscript.timeout = 600 
Const adLockBatchOptimistic = 4 
Const adUseClient = 3 
Const writeFile = "C:\Path\CallLog.txt" 
Dim strWrite, strSQL, strResult 
Set conn = CreateObject("ADODB.Connection") 
conn.ConnectionTimeout=30 
conn.CommandTimeout=30 
conn.Open "Provider=SQLOLEDB;Data Source=Server;Trusted_Connection=Yes;" & _ 
      "Initial Catalog=Database;User ID=User;Password=Password;" 
Set rs = CreateObject("ADODB.Recordset") 
strSQL = "SELECT fld1, fld2, " & _ 
     "fld3, fld4, fld5, fld6, fld7, fld8, fld9" & _ 
     "FROM Database.dbo.[table]" 
'conn.Execute strSQL 
rs = strSQL, conn ' <- this line causes an error. 
Open writeFile For Ouput As #1 
Do Until rs.EOF 
    strResult = rs 
    Print #1, strResult 
    rs.MoveNext 
Loop 
Close #1 
rs.Close 
Set rs = Nothing 
+0

你會得到什麼錯誤? – ApolloSoftware

+0

行:17 字符:12 錯誤:語句的預期結束 代碼:800A0401 來源:Microsoft VBScript編譯錯誤。 - 第17行,字符12是: rs = strSQL,conn – Archias

+0

rs.Open strSQL,conn – ApolloSoftware

回答

0

好的,我們將嘗試一些不同的東西。試試下面的代碼:

Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set writeFile = objFSO.OpenTextFile("C:\Path\CallLog.txt", 1) 

Wscript.timeout = 600 
Const adLockBatchOptimistic = 4 
Const adUseClient = 3 
Dim strWrite, strSQL, strResult 
Set conn = CreateObject("ADODB.Connection") 
conn.ConnectionTimeout=30 
conn.CommandTimeout=30 
conn.Open "Provider=SQLOLEDB;Data Source=Server;Trusted_Connection=Yes;Initial 
Catalog=Database;User ID=User;Password=Password;" 
Set rs = CreateObject("ADODB.Recordset") 
strSQL = "SELECT fld1, fld2, " & _ 
"fld3, fld4, fld5, fld6, fld7, fld8, fld9" & _ 
"FROM Database.dbo.[table]" 
'conn.Execute strSQL 
rs.Open strSQL, conn ' <- this line causes an error. 

On Error Resume Next 

Do Until rs.EOF 
    strResult = rs 
    writeFile.WriteLine strResult 
    rs.MoveNext 
Loop 
rs.Close 
Set rs = Nothing 
4

此:

Open writeFile For Ouput As #1 

不是VBScript中。請參閱the docs以瞭解如何創建 - 打開txt文件。寫一個記錄(的內容)到一個文本文件中的低技術含量的標準方法是

tsOut.Write oRS.GetString(adClipString, , sFSep, sLSep, "NULL") 

這正是一條線弄亂 - 前提是你已經打開了輸出文件TSOUT的recodset ORS,並確定adClipString (2),字段分隔符sFSep(例如「,」或vbTab)和行分隔符sLSep(例如vbCrLf)。

+0

謝謝你,結合你的幫助和Apollo以及一些研究,我能夠完成這項任務。 – Archias