Чтение десятичной точки в ADODB выбрать из CSV-файла - PullRequest
0 голосов
/ 27 сентября 2019

Я создал формулу пользователя с подключением ADODB в Excel VBA для чтения полей из файла CSV.Все прекрасно работает, но одно: когда поле имеет десятичные дроби (десятичный символ - «.»), Результатом соединения является целое число без точки.Например, если поле содержит 10,38, результат будет 1038.

Разделителем для файла .csv является «;», и я попробовал подход schema.ini, указав разделитель и типданных для конкретного поля, содержащего десятичные дроби.

Соответствующий код vba:

Dim xlcon As ADODB.Connection
Dim xlrs As ADODB.Recordset
Set xlcon = New ADODB.Connection
Set xlrs = New ADODB.Recordset
xlcon.Provider = "Microsoft.Jet.OLEDB.4.0"
xlcon.ConnectionString = "Data Source=" & currentDataFilePath & ";" & "Extended Properties=""text;HDR=Yes;"""
xlcon.Open
MyQuery = "SELECT " & myep & " AS DATO FROM [" & currentDataFileName & ".csv] WHERE ENT=" & ent & " AND FECHA='" & myfc & "'"
On Error GoTo misErrores
Set xlrs = xlcon.Execute(MyQuery)
resultado = xlrs.Fields(0)
xlrs.Close
Set xlrs = Nothing
xlcon.Close
Set xlcon = Nothing
Ep = resultado

Файл schema.ini:

[2175G.csv]
ColNameHeader = True
Format=Delimited(;)
col4="x1" Double

Файл имеет около 100разные поля, но я думаю, что я должен указать тип только для тех, которые содержат десятичные дроби.В этом случае только поле с именем "x1", расположенное на 4-м месте, содержит десятичные дроби.К сожалению, это не работает.Я делаю что-то неправильно?Спасибо.

1 Ответ

0 голосов
/ 27 сентября 2019

Пожалуйста, попробуйте другой драйвер

Dim xlcon As ADODB.Connection
Dim currentDataFilePath As String

xlcon.Open "Driver=Microsoft Access Text Driver (*.txt, *.csv)" & _
      ";Dbq=" & currentDataFilePath  & _
      ";Extensions=asc,csv,tab,txt;"
...