excel vba中的查询字符串长度限制?

b0zn9rqh  于 2023-01-14  发布在  其他
关注(0)|答案(4)|浏览(205)

我试图合并多个审计表,然后过滤结果到一个excel表。联合所有和参数使查询超过1200个字符。它似乎字符串被截断时,运行这个。任何人都可以做什么建议。我没有控制的数据库结构,只阅读foxpro自由表。
允许创建表格,但可以写入连接到数据源的excel工作表
对此的一个更新是,我能够将查询字符串扩展到1800个字符以上并取回数据。因此,我得出结论,我有语法错误,我提到的明显截断是我在脚本中开发字符串时的失败。
我发布了一个连接代码的例子,但答案已经消失了,所以我不知道如何将其指定为已关闭的问题。没有明显的字符串长度限制,这是我最初的担忧。感谢您的贡献。

nr7wwzry

nr7wwzry1#

您不能创建一个包含所需数据的超集的记录集,然后对该超集运行第二个查询来进行最终筛选吗?
或者,我不熟悉FoxPro或您的数据库权限,您可以在数据库中创建一个存储过程,然后只向它传递参数吗?
编辑以添加:我想你已经给你的表起了一个简短的名字了吧?(例如...FROM Extremely_Long_Table_Name a WHERE...)如果没有,这可能会为你节省一堆字符。

mi7gmzs6

mi7gmzs62#

如果它是一个联合查询,正如您的问题所暗示的,那么您可以将它分解为每个子查询,然后依次运行它们。
我几乎不敢相信你的查询字符串的限制会这么小。你的查询在哪里被截断?由VBA?由FoxPro?你能直接复制/粘贴你生成的查询到数据库客户端,看看它是否正确运行吗?

vi4fp9gy

vi4fp9gy3#

在用多种方法重写查询后,我成功地得到了超过1800个字符的查询字符串长度,我不得不得出结论,我之前的错误是语法错误,尽管vba错误没有给予很多线索。
查询字符串是使用Excel工作表上的控件构建的,并在SQLstr中累积。明显的截断是我编写字符串创建脚本时的一个错误。一旦解决了这个问题,然后:

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

谢谢你的帮助,因为那些表示不太可能是字符串长度限制的回复让我转而关注语法。我仍然很好奇是否有查询字符串大小限制,如果有人知道的话。

avwztpqn

avwztpqn4#

检查语法错误,我得到了类似的错误,但它被发现是语法错误,有一些空格丢失的地方,我连接我的(2000+字符长)查询字符串.确保您有空格之前/之后,每个连接字符串,例如.

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

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

相关问题