【问题标题】:Search form with datasheet display带有数据表显示的搜索表单
【发布时间】:2014-11-10 09:04:47
【问题描述】:

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

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

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

【问题讨论】:

  • 你现在的表格怎么样?您不能将其用作拆分表单吗?
  • 这是个好主意。那么,如何从搜索条目表单生成的查询字符串中填充数据表表单呢?
  • 我在这里尝试了解决方案,但Me!DatasheetView.Form 似乎没有RecordSource 属性。
  • 我认为你应该尝试this 方法。我实际上认为拆分表单必须使用相同的数据源。我想你可以提供一个单独的记录源。

标签: sql forms ms-access datatable datasheet


【解决方案1】:

啊哈!正确的语法是:

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 充当一个虚拟表单,除了通过子表单外永远不会被查看。

【讨论】: