Csv 为什么不是';t ADO扩展属性“;HDR=否“;这里的旗帜被遵守了吗?

Csv 为什么不是';t ADO扩展属性“;HDR=否“;这里的旗帜被遵守了吗?,csv,asp-classic,ado,Csv,Asp Classic,Ado,我有一个CSV文件,没有由我不控制的进程输出的头文件: FOO,<auto>,12345678,8005882300, ,2 FOO,<auto>,23456789,2128675309, ,2 FOO,<auto>,34567890,3125577203, ,2 FOO,<auto>,45678901,9198423089, ,2 第一行似乎仍被跳过,这是我做错了什么?我想发布我自己问题的答案,以防将来有人遇到类似情况 为了这篇文章的目的,我把

我有一个CSV文件,没有由我不控制的进程输出的头文件:

FOO,<auto>,12345678,8005882300, ,2
FOO,<auto>,23456789,2128675309, ,2
FOO,<auto>,34567890,3125577203, ,2
FOO,<auto>,45678901,9198423089, ,2

第一行似乎仍被跳过,这是我做错了什么?

我想发布我自己问题的答案,以防将来有人遇到类似情况

为了这篇文章的目的,我把我的代码简单化了,这样做的时候,我删除了使它崩溃的东西。代码实际上包含在一个循环中,用于迭代多个子文件夹中的多个文件:

path = "I:"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set dirFolders = objFSO.GetFolder(path).SubFolders

For Each subFolder in dirFolders
  Set dirFiles = objFSO.GetFolder(subFolder).Files
  For Each bar in dirFiles
    stmt = "SELECT * FROM " & bar
    connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& path &";Extended Properties='Text;HDR=No;FMT=Delimited'"
    [...]
实际上,这就是传递给ADO的内容:

stmt = "SELECT * FROM I:\20140509\baz.txt"
connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:;Extended Properties='text;HDR=No;FMT=CSVDelimited'"
如果在
stmt
中包含完整路径,而在
connectstring
中包含不完整路径,则会导致忽略
HDR
标志。如果我把ADO喂给它的时候,它能稍微不那么微妙地折断,那就好了,但它就是这样

更正代码:

For Each path in dirFolders
  Set dirFiles = objFSO.GetFolder(path).Files
  For Each bar in dirFiles
     stmt = "SELECT * FROM " & objFSO.GetFileName(bar)
     connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& path &";Extended Properties='Text;HDR=No;FMT=Delimited'"

最后,这是一个提醒,扔掉几个
响应。在困惑的代码处写
语句是个好主意,当它不能像你期望的那样工作时,把它拆成大头钉,以确保你在正确的地方寻找。

你确定这不起作用吗?我复制了你的源代码,对我来说,它是有效的…感谢你指出这一点,它把我送回了绘图板,我能够找到真正的问题。嗨,我在这里是同一条船,第一行被跳过,但我想澄清一件事,路径变量的值是什么?路径是否具有完整的文件路径或完整的目录路径?因为如果路径有完整的文件路径,我就面临这个问题
stmt = "SELECT * FROM I:\20140509\baz.txt"
connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=I:;Extended Properties='text;HDR=No;FMT=CSVDelimited'"
For Each path in dirFolders
  Set dirFiles = objFSO.GetFolder(path).Files
  For Each bar in dirFiles
     stmt = "SELECT * FROM " & objFSO.GetFileName(bar)
     connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="& path &";Extended Properties='Text;HDR=No;FMT=Delimited'"