2012-05-24 62 views
1

讓我先說,我很感激有一個地方去,當我需要一些代碼幫助,我當我看到人們試圖助陣更是心存感激,所以在這裏給大家感謝你開始即使你沒有答案,也要看我的問題/問題。在記錄集中讀取CSV?

雖這麼說,在我的問題/問題:

我一直試圖讓這個工作,但我似乎無法找到語法錯​​誤! :-(

誰能幫我...

下面是代碼:

dim strPathtoCSVFolder,strPathtoCSVFile,strPathtoCSVFileTWO 

strPathtoCSVFolder="D:\classic_asp\test\" & Request.QueryString("XTNO") & "\Data\" 
strPathtoCSVFile="Unit_" & Request.QueryString("XTNO") & "_Year_" & Request.QueryString("year") & "_Q_" & Request.QueryString("q") & "_MERGE_DataCsv.csv" 
strPathtoCSVFileTWO="Unit_" & Request.QueryString("XTNO") & "_Year_" & Request.QueryString("year") & "_Q_" & Request.QueryString("q") & "_MERGE_DataCsv_SORTED.csv" 

Set Conn = CreateObject("ADODB.Connection") 
Set RS = CreateObject("ADODB.Recordset") 
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strPathtoCSVFolder & ";Extended Properties=""text;HDR=YES;FMT=Delimited""" 
dim strDirInfoX 
strDirInfoX="SELECT STATE, SUM(GALLONS) as Total FROM " & strPathtoCSVFile & " GROUP BY STATE " 

'''''' response.write strDirInfoX 
dim strTxttoMem 

dim strsource 
strsource="RS.Open " & strDirInfoX & " , Conn, 1, 3, &H0001" 
RS.Open strsource 
'response.write strsource 

redim FieldNames(rs.fields.count) 
redim FieldTypes(rs.fields.count) 
For i = 0 To (rs.Fields.Count - 1) 
    FieldNames(i) = cstr(trim(rs.Fields.Item(i).Name)) 
    FieldTypes(i) = cstr(trim(rs.Fields.Item(i).Type)) 
Next 
RS.Close 

RS.Open strDirInfoX, Conn, 3, 3, &H0001 
Do Until RS.EOF 
'''' for i=0 to ubound(FieldNames)-1 
'''  response.write(FieldNames(i) & " = " & RS.Fields.Item(FieldNames(i)) & "<br>") 

strTxttoMem=strTxttoMem & RS("STATE") & RS("total") 

'' next 
    RS.MoveNext 
Loop 
RS.Close 
Conn.Close 

dim fs,tfile 
set fs=Server.CreateObject("Scripting.FileSystemObject") 
set tfile=fs.CreateTextFile(strPathtoCSVFolder & strPathtoCSVFileTWO) 


tfile.WriteLine(strTxttoMem) 
tfile.close 
set tfile=nothing 
set fs=nothing 

非常感謝你的幫助......

回答

3

好了,不運行你的代碼,我發現在這部分的錯誤:

dim strsource 
strsource="RS.Open " & strDirInfoX & " , Conn, 1, 3, &H0001" 
RS.Open strsource 

或縮短它,你正在這樣做:

RS.Open "RS.Open " & strDirInfoX & " , Conn, 1, 3, &H0001" 

將其更改爲RS.Open strDirInfoX, Conn, 1, 3, &H0001,那部分會運行得更好。

+0

就是這樣......我簡直不敢相信。我花了超過4個小時的時間嘗試所有有用的東西,使其工作,這是一個「..再次感謝您的所有幫助 – compcobalt

+0

嗯,它也適用於:」RS.Open「&strDirInfoX&」,康恩,1,3,&H0001 ....甜......很開心,你讓它爲我工作......感謝一百萬,你讓我的一天!這是肯定的。 – compcobalt

+1

恭喜AutomatedChaos .. @compcobalt另一個建議..嘗試「設置RS = Conn.Execute(strDirInfoX)」,如果額外的參數是不必要的,節省了一些線條,並且更具可讀性 – peter

0

已經工作一段時間後上VBScript中,但不應該tfile.close是tfile.Close?

+0

:-(沒有工作,但thx查看代碼,並試圖... – compcobalt

+1

vbscript不區分大小寫 – peter

1

這幾乎是不可能的回答,可能有多個錯誤,並在很大程度上取決於對什麼是之前聲明,如明確的選項,使一個巨大的DIF (並且是可取的)。

由於在瀏覽器中進行調試很困難,因此您需要複製此代碼 - 來自我猜測的asp文件 - 並將其放入vbs腳本中,用wscript.echo替換response.write並運行代碼。 然後你在某行發現一個錯誤,改正它等等,然後用response.write的代替回聲,你就完成了。

我還建議期運用Firefox和Firebug的插件做你的測試,你會得到更多的調試信息出現,至少使用開發Chrome瀏覽或IE

成功..

+0

我會記下這一點,這是肯定的..當我現在想起它,如果我只是在查看錯誤行而不是周圍的代碼,我可能會更快地解決它,或者它會幫助你們指出問題。再次感謝Peter – compcobalt

0

你有沒有嘗試將文件作爲文本文件讀取而不是通過ADODB連接連接到文件?由於它是一個CSV文件,因此您可能會將其作爲純文本文件讀取。你可以用逗號和循環分割內容,並得到你想要的。

如果你想使用ADODB連接訪問,請嘗試保存與XLSX extention文件(通過代碼的內容複製或保存手動,同樣的代碼可能工作)。

無恥添加一個鏈接到我的博客上ADO

http://www.blogger.com/blogger.g?blogID=3033014869583885023#editor/target=post;postID=8274119342550879092

+0

甜,我也會看看這個。 !:) – compcobalt