搜索表格与数据表显示

时间:2014-09-16 14:41:45

标签: sql forms ms-access datatable datasheet

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

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。我想在表单中将查询结果显示为数据表(表格),而不是打开新的查询窗格。我认为子表单可能是答案,但似乎并不是数据表格式。我该怎么做呢?

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

enter image description here

1 个答案:

答案 0 :(得分: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显式更新了TablesView查询,但似乎只是通过设置SQL来实现。

基本上,数据表视图表格作为虚拟表格,除了通过子表单外,从不查看。