Проблема с текстом очень длинного запроса Teradata - PullRequest
0 голосов
/ 23 февраля 2019

Я использую следующую функцию для выполнения запроса Teradata из EXCEL 2007:

    Function Get_Query_Results(Rng As Range, Location As String, var As String, UID As String, PWD As String) As Long
    On Error GoTo TroubleWithTeradata
        Rng.Select
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:="ODBC;DSN=Server12;UID=" & UID & ";PWD=" & PWD & ";", Destination:=Rng).QueryTable
            .CommandText = var
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
        End With
        Get_Query_Results = LastInCol(Columns(Location)) - 1
        Exit Function
    TroubleWithTeradata:
        Get_Query_Results = -1
    End Function

Этот запрос помещает свои результаты в регион, угол «Северо-Запад» которого представляет собой некоторую ячейку, указанную Rng и определяет, сколько записей было возвращено, получая номер строки последней записи в номере столбца Местоположение , что и возвращает функция LastInCol (не указана здесь).Если запрос не дает сбоя, но не возвращает записей (т. Е. Только строку заголовка), количество возвращаемых записей равно 0. Если функция действительно завершается с ошибкой, количество возвращаемых записей равно -1.

Текст самого запроса Teradata содержится в строке var .И в этом заключается проблема.Я успешно использую эту функцию в течение многих лет.Но теперь мне нужно создать новый запрос, который заставит переменную var превысить ограничение EXCEL VBA в 32767 символов.

Я действительно не уверен, какие пределы здесь превышаются.Конечно, это длина переменной var , но есть также то, что может содержать параметр QueryTable .CommandText .

Как мне обойти эти ограничения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...