根据填充的表组合框创建查询

Posted

技术标签:

【中文标题】根据填充的表组合框创建查询【英文标题】:Create a query based on populated combo box of tables 【发布时间】:2014-09-08 17:32:42 【问题描述】:

我正在尝试创建一个数据库,它只是收集一堆其他不相关的链接表,查询每个表,然后最后创建一个联合查询。

为了加快流程,我想创建一个表单,允许用户首先自动链接表,查询将拉取表列表,然后可以通过组合框在下拉菜单中选择这些表。

现在,代码的下一部分应该根据在组合框中选择的内容自动创建一个查询,但我不知道该怎么做。即:

Dim var1 As Object

Dim qdf As QueryDef

Dim sql As String

Dim db As Database

    Set db = CurrentDb

    Set var1 = Me.Combo3

    Set qdf = db.CreateQueryDef("newQuery1", "SELECT * FROM var1")

最终发生的是它创建了名为“Var1”的表,该表显然不存在。我希望它创建一个从下拉列表中选择的任何表的同名查询我认为这是一个非常基本的问题,但我对 Access/VBA 非常陌生。

【问题讨论】:

我从来没有做过你想做的事,但你没有像你想象的那样使用变量var1。您明确地说 SELECT * FROM Var1。 从 myVariable 中选择 *。如果可能,您需要将变量连接到 SQL 字符串中。像这样:SELECT * FROM '" & var1 & "'" 【参考方案1】:

在我看来,您所需要的只是:

Dim qdf As QueryDef
Set qdf = CurrentDb.CreateQueryDef("newQuery1", "SELECT * FROM [" & Me.Combo3 & "]")

如果您想创建一个以查询名称作为表名的查询:

Dim qdf As QueryDef
Set qdf = CurrentDb.CreateQueryDef(Me.Combo3, "SELECT * FROM [" & Me.Combo3 & "]")

但是你会得到一个错误,因为你不能有一个同名的表和查询。

【讨论】:

是的,做到了。谢谢!语法肯定是关闭的,看起来我还有一些关于 SQL VBA 部分的阅读要做。欣赏它。

以上是关于根据填充的表组合框创建查询的主要内容,如果未能解决你的问题,请参考以下文章

使用组合框过滤记录并填充第二个组合框

如何根据从另一个组合框进行的选择来填充组合框

如何根据用户类型用相似的记录重新填充组合框

如何从数据库查询中填充组合框?

从预先存储的参数化访问查询填充组合框

尝试根据另一个组合框的选择填充两个组合框