查询 CSV 文件时出错

Error when querying a CSV file

我有一个服务器 运行 Windows Server 2003 with IIS 6.0。我的经典 ASP 应用程序在那里完美运行。我一直在努力让我的应用程序在 IIS 7 和 Windows Server 2008 上工作,在此新服务器中提供我的公司想要迁移,但是我在查询 CSV 文件时一直在努力。

代码在两个环境中是相同的,虽然它在我的 IIS 6 机器上运行完美,但它拒绝让我访问我的查询生成的 RecordSet。

代码如下:

Set conExcel = Server.CreateObject("ADODB.Connection")

conExcel.Open "Provider=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("xls\") &";Extended Properties=""Text;HDR=Yes;IMEX=1; ImportMixedTypes=Text;FMT=Delimited(;)"""

strSQL="SELECT * FROM ["& strFile &"]"

set SQL = Server.createobject("ADODB.Recordset")

SQL.Open strSQL,conExcel

CSV 文件有几列。其中之一叫做 NAME。 将其存储在变量中的代码如下:

strName = SQL("NAME")

只有当 IIS 7 上的 运行 是经典的 "Item cannot be found in the collection corresponding to the requested name or ordinal" 时,我才会收到错误。 我在 Web 上找不到任何与会影响此功能的 IIS 7 更改相关的内容。很抱歉 post.

如果将 sql 句子更改为

会怎样
strSQL = "SELECT [name] AS strName FROM ...."

然后读句到

strName = SQL("strName")

经过一场激烈的战斗,我终于成功了。

我在上述问题中发布的查询有效。问题是如何访问 CSV 文件的记录集。显然,我不能通过写 SQL("NAME").

来调用专栏

我必须做的是找到另一种方法来访问查询的 objects。 您可以通过键入 'SQL.Fields(0).Name' 来调用 headers。它是一个数组,每次迭代都会向上移动到下一列。对于行,它是 'SQL.Fields(0).Value'.

问题是我无法迭代“.Value”。所有行值都是 SQL.Fields(0).Value 中的一个巨大字符串。我只需要通过';'来拆分它符号和瞧:

arrayCSV = split(SQL.Fields(0).Value,";")

而不是调用SQL("NAME"),我只是将其更改为:

strName = arrayCSV(1)
strJob = arrayCSV(2)

等等...

希望这对以后的人有所帮助。而且我仍然不知道这是 IIS 7 的东西还是服务器本身某处的配置。