在Recordset中读取CSV?

时间:2012-05-24 22:39:58

标签: asp-classic vbscript recordset

首先我要说的是,当我需要一些代码的帮助时,我非常感兴趣,当我看到有人试图帮助时,我会更加感激,所以对于每个人都感谢你即使你没有答案,也要查看我的问题/问题。

说完了,问我的问题:

我一直试图让这个工作,但我似乎无法找到语法错​​误! : - (

任何人都可以帮助我......

以下是代码:

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

非常感谢您的帮助......

4 个答案:

答案 0 :(得分: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,该部分会更好。

答案 1 :(得分:1)

这几乎是不可能回答的,可能存在多个错误,并且很大程度上取决于之前声明的内容,例如,显式选项会产生巨大差异(并且是可取的)。

由于在浏览器中进行调试很困难,因此您可以复制此代码 - 我猜测它来自asp文件 - 并将其放在vbs脚本中,用wscript.echo替换response.write并运行代码。 然后你在某一行得到一个错误,纠正它等等,然后通过response.write和你完成替换echos。

我还建议使用Firefox和Firebug插件进行测试,您将获得更多调试信息,至少使用Chrome或IE中的开发者视图

成功..

答案 2 :(得分:0)

曾经在VBScript上工作​​但是不应该tfile.close是tfile.Close?

答案 3 :(得分:0)

您是否尝试将文件作为文本文件读取而不是使用ADODB连接连接到文件?由于它是CSV文件,您可以将其作为纯文本文件读取。您可以使用逗号和循环拆分内容并获得所需内容。

如果要使用ADODB连接访问它,请尝试使用xlsx扩展名保存文件(通过代码复制内容或手动保存。相同的代码可能有效。)

在ADO上无耻地添加我的博客链接

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