【发布时间】:2016-08-29 19:48:34
【问题描述】:
只是一个问题。情况如下:
我有 15 个表查询,这些查询为索赔中使用的不同提交说明代码提取数据;即在提交澄清代码 5 处提取所有声明。截至目前,我有一个宏将运行所有 15 个查询,但每次我都需要输入我正在过滤的区域,因为 [What Region?] 提示我已放入条件字段。
我的问题是:
是否可以使用 VBA 使用 DoCmd.RunSQL 运行所有 15 个查询,我只需输入一次区域编号,它将应用于所有查询?
我最初的想法是让 VBA 提示我要过滤的区域,将其存储在变量中,然后在 SQL 语句中使用该变量。但我什至不确定你是否能做到这一点?提前感谢您提供的任何建议!
更新:所以在阅读了几个线程之后,我创建了一个模拟数据库来尝试一些概念,我认为我可能走在正确的轨道上?
Private Sub btnTest_Click()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim SQLString As String
SQLString = "SELECT tblEmployees.ID, tblEmployees.Last_Name, tblEmployees.First_Name, tblEmployees.SS_ID INTO Test" _
& "FROM tblEmployees" _
& "WHERE (((tblEmployees.ID)=[What number]));"
Set qdf = CurrentDb.QueryDefs("Query1")
qdf.Parameters(0).Value = InputBox("What is the ID Number")
qdf.Execute
qdf.Close
Set db = Nothing
Set qdf = Nothing
End Sub
因此,要将其应用于 15 个查询,我只需将其他变量调暗为 DAO.QueryDef 对吗?我注意到我真的确定我需要 SQLString 部分吗?另外,我注意到在运行这个模拟代码时,它需要很长时间才能创建新表。这是正常的吗?此外,如果它正在创建的表已经存在,则代码将不会运行。有没有办法让代码用新表替换现有表?对这个 VBA 有点陌生,所以感谢您的耐心等待。
【问题讨论】:
-
一个没有 vba 的简单解决方法是创建一个包含一行的表,将过滤条件放在该表中,并在查询中包含内部连接。更换桌子是手动的,但很简单。