【问题标题】:How do I make a search form in Access 365如何在 Access 365 中制作搜索表单
【发布时间】:2018-08-02 04:55:43
【问题描述】:

我目前正在尝试为我的数据库制作一个搜索表单。我想把它放在导航表单中(所以我听说我不能使用拆分表单)。我目前有一个包含 4 个文本框和一个组合框的表单,总共有 5 个条件进行搜索,每个条件都有一个单独的按钮。下面是基于我的表的查询。这就是我到目前为止所做的事情

我在如何实际执行搜索方面遇到了困难。在这个项目之前我从未使用过访问权限,也不知道如何使用 VBA(但我知道其他语言)。是否可以使用宏执行搜索?如果没有,我将如何进行搜索子程序?

【问题讨论】:

标签: ms-access vba ms-access-2016


【解决方案1】:

解决此问题的方法是构建搜索表单并开发和测试搜索表单。让它工作?然后,您可以将此工作表单放入现有的“导航表单集”中。

有无数种方法可以做到这一点——你只是受限于你的想象。然而,一个常见的设置是创建一个“主”表单。这个主表单可以有几个文本框供您输入搜索值。然后您使用向导创建一个“结果”表单(一个很好的表单,您可以在其中显示结果以供用户查看并选择结果)。

事实上,您确实不必使用表单 + 子表单,但我发现这通常比将“条件”框放在表单标题区域中效果更好。

所以创建主表单 - 此表单是未绑定的(未附加到系统中的任何表)。玩得开心,随心所欲地布置表格。

然后使用向导创建一个多项目表单。用漂亮的列来布置表格。现在在设计模式下使用主窗体,只需在“显示结果”窗体中拖放即可。

结果是一个如下所示的访问表单:

在上面,请注意用户如何“输入”某些条件。

因此,您在“更新事件之后”的文本框中放置了一些代码。它可能看起来像这样:

dim strSql 为字符串

strSql = "select * from tblCustomer where LastName like " & me.txtLastName & "*"

me.MySubFormname.Form.RecordSource = strSql

所以我们动态“构建” sql,并将 sql 直接“填充”到子表单中以显示结果。

请注意,在上面的 contines items 表单中,我们有一个“查看”或“编辑”按钮,点击后可以为您选择的 ONE 记录启动详细表单。在我的示例中,我为按钮使用了“眼镜”图标。因此,该按钮背后的代码是:

Docmd.OpenForm "frmEditDetails",,,"id = " & me!id

编辑:sql字符串必须是正确的,所以在上面,它应该是:

dim strSql          as string 

 strSql = "select * from tblCustomer where LastName like '" & me.txtLastName & "*'" 
 debug.print strSql
 me.MySubFormname.Form.RecordSource = strSql

所以只需要很少的代码。其余的只是您对 UI 布局的喜好。

【讨论】:

  • 嘿!感谢您及时的回复。一切都很好,除了代码。你能解释一下它到底在做什么吗?我想我设置错了。调试器在以下位置引发错误:me.MySubFormname.Form.RecordSource = strSql。我把它写成 me.MIForm(我的多个项目表单).Form.Query1(我从中提取信息的查询) = strSql
  • 代码所做的只是创建一个有效的 SQL 字符串。在您的代码中放置一个 debug.print "your sql" 以查看/查看您生成的确切 sql。然后将 sql 结果剪切 + 粘贴到您构建的新查询中(翻转到 sql 视图 - 粘贴到您的 sql 中,看看它是否有效。在 VBA 代码编辑器中,当您输入“me”时,应该会弹出 VBA一个有效的控件列表。请记住,子表单控件的名称是您在此处使用的名称 - 而不是子表单的名称。Access“通常”将控件命名为与子表单相同。假设您的子表单单独测试并正确显示数据。
  • 查看我的新编辑 - sql 字符串有点错误。添加debug.print,这样你就可以看到/查看sql是否正确。
  • 我的调试器仍然在最后一部分抛出错误。当我注释掉那部分时,我没有得到 SQL 字符串。我做错了什么?
  • 在您的代码中放置一个 debug.print strSQL。当您运行代码并且它失败时,您可以按 ctrl-g 跳转到调试窗口。查看 sql,然后选择该 sql(复制),然后创建新的空白查询,翻转到 sql 视图模式并在您的 sql 中过去 - 它运行吗?因此,您的 sql 语句必须能够在标准查询构建器中运行 - 检查 sql 的语法 - 它是否有效,并且从 debug.print 生成的 sql 是否在查询构建器中工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多