查询string长度限制在VBA?

我正在尝试组合多个审计表,然后将结果筛选到Excel表中。 Union All和参数使查询超过1200个字符。 看起来这个string在运行时会被截断。 任何人都能提出什么build议。 我无法控制数据库结构,只能读取foxpro空闲表。

我可以创build表格,但可以写入连接到数据源的Excel表格

对此的更新是,我能够扩展查询string超过1800个字符,并获取数据。 所以我得出结论,我有语法错误,我提到的明显截断是在脚本中我的string开发失败。

我发布了一个我的连接代码的例子,这个答案已经消失,所以我不知道如何指定这个封闭的问题。 没有明显的string长度限制,这是我最初的关注。 感谢您的贡献。

你不能创build一个超集所需数据的logging集,然后运行第二个查询来做最后的过滤?

或者,我不以任何方式熟悉FoxPro或数据库特权,你可以在数据库中创build一个存储过程,然后只是传递参数?

编辑添加:我想你已经给你的表简称? (例如...FROM Extremely_Long_Table_Name a WHERE... )如果没有,这可能可以为您节省一堆字符。

如果它是一个联合查询,就像你的问题所build议的那样,那么你可以把它分解成每个子查询并且一个接一个地运行它们。

我很难相信你的查询string的限制是如此之小。 你的查询在哪里被截断? 通过VBA? 通过FoxPro? 你可以复制/粘贴生成的查询直接到数据库客户端,看看它是否正确运行?

通过多种方式重写查询之后,我已经成功地获得了超过1800个字符的查询的string长度。 我必须得出结论,我以前的错误是语法,虽然VBBA错误没有给出很多线索。

查询string是使用Excel工作表上的控件构build的,并在SQLstr中进行累加。 明显的截断是我的脚本创buildstring中的错误。 一旦解决了,那么这个:

 With ActiveSheet.QueryTables.Add(Connection:=Array( _ "ODBC;DSN=myDB;Description=myDB;DATABASE=myDB;Trusted_Connection=YES"), Destination:=Range("A2")) .CommandText = SQLstr .Name = "Query from myDB" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = False .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlOverwriteCells .SavePassword = True .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .Refresh BackgroundQuery:=False End With 

感谢您的帮助,因为反应表明它似乎不太可能是一个string长度限制,所以我看看语法。 如果有人知道,如果有查询string大小限制,我仍然好奇。

检查syntaxtical错误,我得到类似的错误,但它发生了语法错误,有一些空白的地方,我连接我的(2000+字符长)查询string。 确保每个串联string之前/之后都有空格,例如

 qryStr = "SELECT name, tel, email" & _ " FROM MyTable;" 

请注意FROM子句前面的空格(在双引号内)。 HTH。 埃迪