excel - 很长的 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可以包含的内容。
我怎样才能绕过这些限制?
解决方案
推荐阅读
- java - 为什么类不注入模块?
- c# - NHibernate QueryOver 与 SelectList
- javascript - 地图功能内的对话框无法正常工作
- grpc - 从源代码构建时 gRPC 失败
- php - Symfony 3.4 命令与 oracle 钱包 ORA-12154:TNS:无法解析指定的连接标识符
- excel - Excel 第 n 个最小的 DISTINCT 值
- sql - 将 Oracle SQL CLOB 值(>4000 个字符)移动到 SQL Server 而不进行修剪
- android - 在 SegmentedBarView-Android 中实现 onItemClickListener
- sql - 形成一个 Oracle SQL WHERE 语句以在输入“ALL”时包含所有结果或仅包含他们输入的条件
- openshift - 从 shell 在 Openshift 中创建 PostgreSQL 应用程序