我正在尝试创建一个搜索表单,可以根据用户从组合框中选择的表一次从一个表中搜索 . 我有一个名为searchCriteria的文本框,组合框称为TableList . 想法是,如果用户想要搜索customer_table,她将在组合框中选择“customer_table”,在文本框中输入她的搜索条件,然后按搜索按钮 . 如果她想搜索order_table,她会从组合框中选择该表,依此类推 . 我希望查询返回与输入的条件有关的所有完整记录 . 因此,例如,如果用户从客户表中搜索“James”,我希望返回标准“James”存在的完整记录(所有字段):
Company | First Name | Last Name | Account # | Sales Rep
Jammy Juice | James | Dan | 555 | Jim Halbert
Jameson Car Shop | Tom | Cramb | 556 | Dwight Smiles
Landon Refrigeration | Bob | McVance | 557 | James Bland
根据我的理解,这将需要一些VBA来编写查询...
我假设查询将类似于以下内容:SELECT t . * FROM customer_table t WHERE(t . *):: text LIKE'%James%';
用户输入的字符串(James)和表名(customer_table) .
简单地说,我无法将表单数据(表名和搜索文本)放入查询中 .
有谁知道如何在Microsoft Access 2010中实现这一点?任何见解将不胜感激 .
3 回答
Access中任何字符通配符序列都是 ***** 而不是 % . 如果要搜索Access中的所有字段,则可以连接所有字段:
您可以使用不同的字符分隔字段,以防止找到字段之间重叠的字词 .
或者,单独但效率较低:
(我不知道
(t.*)::text
来自哪里,但它不是Access . )因此,您首先需要发现所选表的所有字段名称 . 您可以获取所选表名的
TableDef
并循环其Fields
集合以获取字段名称 . 还有其他方法可以做到这一点 . 例如,GetSchema .以下是在Access 2010中执行此操作的LAZY方式:
创建连续表单
在表单属性中,设置
Navigation Buttons
=是当您打开表单时,您将看到
Search
框:Enter
查看更多匹配项 .笔记:
这将搜索表单上显示的 all 个字段
这不会将记录限制为搜索词
对于非常大的记录集来说,这可能不是一个好主意
可能需要对此功能进行一些用户培训
引用组合框中选择的文本
在文本框中引用文本
所以你的VBA命令看起来像