ADO和Microsoft文本驱动程序 - 字段分隔符问题

时间:2011-03-08 12:14:55

标签: vb6 ado text-files text-driver

我正在使用VB6和ADO以及Microsoft文本驱动程序从ASCII文件导入数据。该文件以逗号分隔,但它还包含文本数据字段周围的双引号。字段也是固定宽度。

我遇到的问题是,只要其中一行在内容中包含引号双引号,驱动程序就会错误地读取列。这发生在“零件描述”列中,该列是左侧的第二列。发生这种情况时,右侧的列都是Null值,而文本文件中则不是这样。

我认为最好只使用逗号作为分隔符。但是,我相信逗号也出现在“部分描述”列中,这意味着我应该将文件加载为固定宽度。除非我可以在schema.ini文件中指定它,否则我不知道有任何方法可以执行此操作。

有关如何解决此问题的任何想法?

修改
您可以在Schema.ini文件中指定固定宽度。但是,在我看来,作为分隔符/限定符存在的逗号和引号将阻止它正常工作。看起来我可能必须“手动”读取文件并以我自己的格式将其写回来,然后再使用MS Text驱动程序加载它。还在寻找其他意见。

2 个答案:

答案 0 :(得分:0)

我会尝试在密钥Format处更改Jet文本引擎注册表中的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text值(如果这就是您正在使用的内容)。我认为默认值为CSVDelimited,但您可以将其更改为FixedLength。见http://msdn.microsoft.com/en-us/library/ms974559.aspx

可能值得补充的是,尽管您有一个Schema.ini文件用于设置,但在某些选项上,注册表仍会取代它们

实际上,查看我提供的链接,似乎 schema.ini文件用于固定长度文件。您是否尝试过以下内容,指定宽度?

  

[Test.txt]

     

格式=定长

     

Col1 = FirstName文字宽度7

     

Col2 = LastName文字宽度10

     

Col3 = ID文本整数3

答案 1 :(得分:0)

我对区域设置更加谨慎 - 一些用户更改默认列表分隔符。通常使用schema.ini解决此问题:

[MyFile.csv]
Format=Delimited(,)