首页 > 解决方案 > 很长的 Teradata 查询文本出现问题

问题描述

我正在使用以下函数从 EXCEL 2007 执行 Teradata 查询:

    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指定的某个单元格的区域中,并通过获取列号Location中最后一条记录的行号来确定返回的记录数,这就是函数LastInCol(不是此处列出)返回。如果查询没有失败但没有返回记录(即只有一个标题行),则返回的记录数为0。如果函数确实失败,则返回的记录数为-1。

Teradata 查询本身的文本包含在字符串var中。这就是问题所在。多年来,我一直在成功使用此功能。但现在我需要构建一个新查询,使变量var超过 EXCEL VBA 的 32767 个字符的限制。

我真的不确定这里超出了哪些限制。当然是变量var的长度,但也有 QueryTable 参数.CommandText可以包含的内容。

我怎样才能绕过这些限制?

标签: excelvbateradataexcel-2007

解决方案


推荐阅读