ADO и Microsoft Text Driver - Проблема разделителя полей - PullRequest
0 голосов
/ 08 марта 2011

Я использую VB6 и ADO вместе с Microsoft Text Driver для импорта данных из файла ASCII.Файл разделен запятыми, но он также содержит двойные кавычки вокруг текстовых полей данных.Поля также имеют фиксированную ширину.

У меня проблема с тем, что драйвер неправильно читает столбцы всякий раз, когда одна из строк содержит кавычку двойная кавычка внутри содержимого.Это происходит внутри столбца «описание детали», который является вторым столбцом слева.Когда это происходит, все столбцы справа имеют нулевое значение, что не соответствует текстовому файлу.

Я думаю, что было бы лучше использовать только запятые в качестве разделителей.Тем не менее, я считаю, что запятые также встречаются в столбце «описание детали», так что это означает, что я действительно должен загрузить файл с фиксированной шириной.Я не знаю, есть ли какой-либо способ сделать это, если я не могу указать это в файле schema.ini.

Есть идеи, как решить эту проблему?

Редактировать:
Вам разрешено указывать фиксированную ширину в файле Schema.ini.Однако мне кажется, что запятые и кавычки, которые также существуют как разделители / квалификаторы, будут препятствовать тому, чтобы это работало должным образом.Похоже, мне, возможно, придется «вручную» прочитать файл и записать его обратно в моем собственном формате, прежде чем я загрузю его с помощью драйвера MS Text.Все еще ищу другие мнения.

Ответы [ 2 ]

0 голосов
/ 08 марта 2011

Я очень осторожен с региональными настройками - некоторые пользователи меняют разделитель списка по умолчанию. Обычно это исправляют с помощью schema.ini, например:

[MyFile.csv]
Format=Delimited(,)
0 голосов
/ 08 марта 2011

Я бы попытался изменить значение 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]

Формат = FixedLength

Col1 = Ширина текста FirstName 7

Col2 = Ширина текста фамилии 10

Col3 = ID Текст Целое число 3

...