【问题标题】:Error when querying a CSV file查询 CSV 文件时出错
【发布时间】:2016-02-01 20:06:58
【问题描述】:

我有一台运行带有 IIS 6.0 的 Windows Server 2003 的服务器。我的经典 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 上运行时得到的错误是经典的“在与请求的名称或序号相对应的集合中找不到项目”。 我在网上找不到任何与 IIS 7 中会影响此功能的更改相关的内容。抱歉,帖子太长了。

【问题讨论】:

  • 当您将 csv 文件复制到新服务器时,是否有一个 schema.ini 文件需要随之移动。有关详细信息,请参见此处。 msdn.microsoft.com/en-us/library/ms709353%28v=vs.85%29.aspx
  • 不,没有。医生说这不是真的没有必要。除非你有一些更复杂的数据。我的只是纯文本。对吗?

标签: csv asp-classic ado


【解决方案1】:

如果你把你的sql语句改成

strSQL = "SELECT [name] AS strName FROM ...."

然后把句子读到

strName = SQL("strName")

【讨论】:

    【解决方案2】:

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

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

    我要做的是找到另一种访问查询对象的方法。 您可以通过键入“SQL.Fields(0).Name”来调用标题。它是一个数组,每次迭代都会向上移动到下一列。对于行,它是“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 的问题还是服务器本身某处的配置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 2016-01-03
      • 2013-08-31
      相关资源
      最近更新 更多