我有一台运行Windows Server 2003和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上运行时遇到的错误是经典的“无法在与所请求的名称或序号对应的集合中找到项目”。 我在网络上找不到任何与IIS 7中可能影响此功能的更改有关的内容。对不起,很长的帖子。
答案 0 :(得分:0)
如果将sql句子改为
会发生什么strSQL = "SELECT [name] AS strName FROM ...."
然后将读句改为
strName = SQL("strName")
答案 1 :(得分:0)
经过一场伟大的战斗,我终于成功了。
我在上述问题中发布的查询有效。问题是如何访问CSV文件的记录集。显然,我不能通过编写SQL(“NAME”)来调用列。
我必须做的是找到另一种访问查询对象的方法。 您可以通过键入“SQL.Fields(0).Name”来调用标题。它是一个数组,每次迭代都会移动到下一列。对于行,它是'SQL.Fields(0).Value'。
问题是我无法迭代'.Value'。所有行值都是SQL.Fields(0).Value中的一个巨大字符串。通过';'我只需要拆分它符号和voilá:
arrayCSV = split(SQL.Fields(0).Value,";")
我没有调用SQL(“NAME”),而是将其更改为:
strName = arrayCSV(1)
strJob = arrayCSV(2)
依旧......
希望这可以帮助将来的某个人。我仍然不知道这是IIS 7的东西还是服务器本身的某个配置。