0

我有一个表格,它是一个搜索表格。该表单具有字段名称的下拉列表和一个可以键入搜索关键字的文本框。对于每个搜索字段/值,都有一个布尔值(和、或、非)下拉列表。当用户点击搜索按钮时,选择会生成一个查询字符串,然后运行:

Set qdf = CurrentDb.QueryDefs("temp_query")
qdf.SQL = SQL_query_string

DoCmd.Close acQuery, "temp_query"
DoCmd.OpenQuery "temp_query", acViewNormal, acReadOnly

SQL_query string是根据字段/值组合生成的。

上面的代码创建了一个新的查询,temp_query运行SQL_query string。我不想打开一个新的查询窗格,而是想在表单中将查询结果显示为数据表(表)。我认为一个子表单可能是答案,但似乎没有数据表格式。我该怎么做呢?

这似乎是最好的选择,但我想要看起来/行为更像实际数据表的东西。

在此处输入图像描述

4

1 回答 1

0

啊哈!正确的语法是:

Me.DatasheetView.Form.RecordSource = "temp_query"

我得到了!从网上的某个地方,但显然点是正确的方法。

这是我所做的:

我已经有了主要的搜索表单(见上图)。我创建了一个名为 DatasheetView 的新表单。然后我在主搜索表单中添加了一个子表单,我将它(使用出现的向导)链接到新的 DatasheetView 表单。然后,当用户单击“搜索”按钮时,VBA 回调将根据搜索表单输入将查询字符串组合在一起。拼凑查询字符串(SQL_query_string)后,我有:

CurrentDb.QueryDefs("temp_query").SQL = SQL_query_string
Me.DatasheetView.Form.RecordSource = "temp_query"

我原以为我需要使用生成的 SQL 显式更新 DatasheetView 查询,但这似乎只是通过设置 SQL 来实现。

基本上,表单 DatasheetView 充当虚拟表单,除非通过子表单,否则永远不会查看。

于 2014-09-16T20:23:11.757 回答