Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/vb6/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb6 ADO和Microsoft文本驱动程序-字段分隔符问题_Vb6_Ado_Text Files_Text Driver - Fatal编程技术网

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

Vb6 ADO和Microsoft文本驱动程序-字段分隔符问题,vb6,ado,text-files,text-driver,Vb6,Ado,Text Files,Text Driver,我正在使用VB6和ADO以及Microsoft文本驱动程序从ASCII文件导入数据。该文件以逗号分隔,但文本数据字段周围也包含双引号。字段的宽度也是固定的 我遇到了一个问题,每当其中一行的内容中包含双引号时,驱动程序都会错误地读取列。这发生在“零件说明”列中,该列是从左侧开始的第二列。出现这种情况时,右边的列都是空值,而文本文件中不是这种情况 我认为最好只使用逗号作为分隔符。但是,我认为逗号也出现在“part description”列中,因此这意味着我应该以固定宽度加载文件。我不知道有任何方法

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

我遇到了一个问题,每当其中一行的内容中包含双引号时,驱动程序都会错误地读取列。这发生在“零件说明”列中,该列是从左侧开始的第二列。出现这种情况时,右边的列都是空值,而文本文件中不是这种情况

我认为最好只使用逗号作为分隔符。但是,我认为逗号也出现在“part description”列中,因此这意味着我应该以固定宽度加载文件。我不知道有任何方法可以做到这一点,除非我可以在schema.ini文件中指定

有没有办法解决这个问题

编辑:

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

我会尝试更改注册表中Jet文本引擎(如果您正在使用)键
HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\text
处的
格式值。我认为默认值是
CSVDelimited
,但您可以将其更改为
FixedLength
。看

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

实际上,看看我提供的链接,似乎您必须使用
schema.ini
文件来处理固定长度的文件。您是否尝试过以下指定宽度的方法

[Test.txt]

格式=固定长度

Col1=FirstName文本宽度7

Col2=LastName文本宽度10

Col3=ID文本整数3


我对区域设置特别谨慎——有些用户更改默认列表分隔符。通常使用
schema.ini
这样解决此问题:

[MyFile.csv]
Format=Delimited(,)

据我所知,此文件中作为分隔符的逗号将导致数字/价格字段出现问题。“固定宽度”不允许为每个字段指定起始位置和结束位置,因此省略了分隔符。或者至少我不知道有任何这样的特征。如果你把引号称为引号,把撇号称为撇号,那就更容易弄清楚了。“双引号”是指一行中有两个引号,例如“”。这将很难重新分析和重新格式化。如果您试图忽略引号作为文本分隔符,那么值中嵌入的逗号将使您陷入困境。很高兴您能看到这个难题。下面的两个答案似乎都忽略了我所说的关于这个文件的内容,因为它有多个分隔符和固定的宽度。