MS-Access在查询窗口中打开VB构建的查询

时间:2011-07-05 13:59:28

标签: sql ms-access vba access-vba

场景:我正在为访问数据库创建高级搜索表单。他们已经有单一的搜索表单来运行访问查询并在查询窗口中打开。

问题:我想模仿此功能,但我希望在代码中将查询创建为字符串,然后在查询窗口中打开它。这可能吗?我搜索谷歌但没有找到任何东西。如果不可能有任何替代方案吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以在数据表视图中打开一个看起来像查询窗口的表单,但是您需要创建一个表单,将控件添加到它,然后设置记录源

e.g。

Dim rst As DAO.Recordset
Dim rsField As DAO.Field
Dim control As Access.TextBox

Dim frm As Form
Set frm = CreateForm()
frm.Visible = False

Dim sql As String
sql = "Select * from MSysObjects"

Set rst = CurrentDb.OpenRecordset(sql)



For Each rsField In rst.Fields
    Debug.Print rsField.Name
    Set control = CreateControl(frm.Name, acTextBox, acDetail)
    With control
       .Width = 100
       .Height = 100
       .Top = 100
       .Left = 100
       .ControlSource = rsField.Name
       .Name = rsField.Name

    End With

Next rsField

Set rst = Nothing

frm.Visible = True


frm.RecordSource = sql

DoCmd.OpenForm frm.Name, acFormDS

这有几个问题。

  1. 每次都会创建一个新表单。这意味着当用户关闭表单时,系统会询问他们是否要保存表单。因此,您可能需要调查打开现有表单并修改(清除现有项目)
  2. 查询执行两次。第一次获取字段,第二次实际显示表单。根据查询的内容,这可能是也可能不是问题。
  3. 老实说,修改querydef可能是更为理智的方式。