VBA Ado запрос на чтение файла CSV с более чем 255 полей - PullRequest
0 голосов
/ 15 января 2019

В Excel VBA я использую соединение AdoDB для извлечения данных из CSV-файла с помощью SQL Select. Файл .csv имеет более 255 полей.

К сожалению, он работает только для первых 255 полей файла .csv.

Есть ли способ работать с дополнительными полями?

Я изучил подход, который не хочу использовать. Он состоит из выбора всех полей в одной строке, затем разделения ее и последующей работы с коллекцией. Для моих целей это не очень хороший подход. Я ищу более общее решение, которое позволяет работать с более чем 255 полями.

Спасибо.

Это код:

Public Function Ep(et As Variant, myep As Variant, fc As Date, ent As Variant, gi As String, Optional myid As String)
Dim myfc As String
Dim xlcon As ADODB.Connection
Dim xlrs As ADODB.Recordset
Set xlcon = New ADODB.Connection
Set xlrs = New ADODB.Recordset
Dim currentDataFilePath As String
Dim currentDataFileName As String
Dim nextRow As Integer
currentDataFilePath = "C:\TRABAJO\Epis"
currentDataFileName = "" & gi & et & ""
myfc = DateToText(fc)
xlcon.Provider = "Microsoft.Jet.OLEDB.4.0"
xlcon.ConnectionString = "Data Source=" & currentDataFilePath & ";" & "Extended Properties=""text;HDR=Yes;"""
xlcon.Open
If myid = "" Then
    MyQuery = "SELECT " & myep & " AS DATO FROM [" & currentDataFileName & ".csv] WHERE ENT=" & ent & " AND FECHA='" & myfc & "'"
ElseIf myid <> "" Then
    MyQuery = "SELECT " & myep & " AS DATO FROM [" & currentDataFileName & ".csv] WHERE ENT=" & ent & " AND FECHA='" & myfc & "' AND ID=" & myid & ""
End If

Set xlrs = xlcon.Execute(MyQuery)
    resultado = xlrs.Fields(0)
    xlrs.Close
    Set xlrs = Nothing
    xlcon.Close
    Set xlcon = Nothing
    Ep = resultado

Функция завершения

...