Я настраиваю автоматизированную книгу Excel VBA, которая извлекает данные через запрос, получая параметры из ячеек Excel.
До сих пор он работал на простых запросах и SP, но я пытаюсь передать очень длинный запрос, и кажется, что функции Excel обрезают строку до 1043 символов.
* В запросе содержится 1426 символов.
Я использовал 3 разных подхода к этой проблеме.
При выполнении хранимой процедуры SQL (из vba), а не запроса, проблема заключается в том, что одним из входных параметров является список идентификаторов, который имеет переменную длину и очень длинный дляпередать в качестве параметра SP, чтобы он не работал даже при назначении Varchar(Max)
в качестве типа.
Выполнение запроса в новой таблице и извлечение полной таблицы в Excel.Несмотря на то, что это работает, необходимо вручную обновить список идентификаторов, поэтому он недостаточно функционален.
Передача строки SQL непосредственно в функцию Excel в виде конкатенации строк, но она выдает ошибку, которая, на мой взгляд, относится к усечению строки.
Мой код выглядит следующим образом:
Private Sub CommandButton1_Click()
Dim organization As Integer 'Business Unit
Dim material As String 'List of IDs
organization = Sheets("Hoja1").Range("B3").Value 'Extract B3
material = Sheets("Hoja1").Range("B4").Value 'Extract B4
'Parsing the query into statements to be concatenated
Connection
With ActiveWorkbook.Connections("NZSQL Test").ODBCConnection
sql1 = 'statement1
sql2 = 'statement2
sql3 = 'statement3
sql4 = 'statement4
sql5 = 'statement5
sql6 = 'statement6
Query = sql1 & sql2 & sql3 & sql4 & sql5 & sql6
Sheets("Hoja1").Range("B2") = Query 'This is to beused as revision directly
in ODBC platform
.CommandText = Query
ActiveWorkbook.Connections("NZSQL Test").Refresh
End With
End Sub
Набор результатов, который я получаю при вставке запроса B2 в SQL:
/*
ERROR [42000] ERROR: '...' 'Returns a part of the SQL string */
Строка здесь усекается до1043 символаТем не менее, я попробовал тот же подход из Python с использованием pyodbc, и он работает отлично.