Замена спецсимволов в наборе записей через vba - PullRequest
0 голосов
/ 16 октября 2018

У меня есть файл CSV с двойными кавычками (") в некоторых полях. При попытке загрузить данные в набор записей происходит сбой. Я использовал следующий код в VBA:

Dim rscsv As ADODB.Recordset
Dim cncsv As ADODB.Connection

Set cncsv = New ADODB.Connection

cncsv.ConnectionString = "Driver=Microsoft Access Text Driver (*.txt, *.csv);Dbq="C:\Test\";Extensions=csv"
cncsv.Open


Set rscsv = New ADODB.Recordset
rscsv.Open "select * from " & fileName, cncsv, adOpenStatic, _
adLockReadOnly, adCmdText

Я получаю неверные данные в наборе записей с ошибкой «94: Недопустимое использование Null» в строке с «rscsv.Open» select * from ... ».Данные обрезаются в поле, где находится двойная кавычка, после чего все поля имеют нулевое значение.

Например, если у меня есть следующие данные CSV

  1            2            3            4
AAAA         BB"BB          123          456

... после моего кода я получаю

  1            2            3            4
AAAA         BB           Null          Null

Как загрузить данные с замененной опцией(т.е. что-то вроде этого Заменить ('"', ''))?

1 Ответ

0 голосов
/ 16 октября 2018

При установлении соединения используйте FMT = с разделителями.Вот краткий пример:

cncsv.ConnectionString = "Driver=Microsoft Access Text Driver (*.txt, *.csv);" & _ 
                         "Dbq=""C:\Test\"";Extensions=csv" & _
                         "Extended Properties=""text;HDR=YES;FMT=Delimited"""
cncsv.Open

Set rscsv = New ADODB.Recordset
rscsv.Open "SELECT * FROM " & fileName, cncsv, adOpenStatic, _
            adLockReadOnly, adCmdText

Примечание: Само собой разумеется, но выделение, HDR = YES, если в вашем CSV-файле есть заголовки, иначе HDR = NO.Если приведенное выше решение не работает, вам может понадобиться Schema.ini .

Атрибуция: Документы Microsoft & Строки подключения

...