首页 文章

整个表搜索表单 - Microsoft Access 2010

提问于
浏览
0

我正在尝试创建一个搜索表单,可以根据用户从组合框中选择的表一次从一个表中搜索 . 我有一个名为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 回答

  • 3

    Access中任何字符通配符序列都是 ***** 而不是 % . 如果要搜索Access中的所有字段,则可以连接所有字段:

    WHERE [FirstName] & [Surname] & [City] & [Address] 
    LIKE "'*" & Forms!frmSearch!txtFind & "*'"
    

    您可以使用不同的字符分隔字段,以防止找到字段之间重叠的字词 .

    或者,单独但效率较低:

    WHERE [FirstName] Like "'*" & Forms!frmSearch!txtFind & "*'" 
    OR [Surname] Like "'*" & Forms!frmSearch!txtFind & "*'" 
    OR [Address] Like "'*" & Forms!frmSearch!txtFind & "*'"
    

    (我不知道 (t.*)::text 来自哪里,但它不是Access . )

    因此,您首先需要发现所选表的所有字段名称 . 您可以获取所选表名的 TableDef 并循环其 Fields 集合以获取字段名称 . 还有其他方法可以做到这一点 . 例如,GetSchema .

  • -2

    以下是在Access 2010中执行此操作的LAZY方式:

    • 创建连续表单

    • 在表单属性中,设置 Navigation Buttons =是

    • 当您打开表单时,您将看到 Search 框:

    Search box in Navigation Bar

    • 键入要搜索的内容 . 点击 Enter 查看更多匹配项 .

    笔记:

    • 这将搜索表单上显示的 all 个字段

    • 这不会将记录限制为搜索词

    • 对于非常大的记录集来说,这可能不是一个好主意

    • 可能需要对此功能进行一些用户培训

  • 0

    引用组合框中选择的文本

    Me.TableList.Column(0)
    

    在文本框中引用文本

    Me.searchCriteria.Text
    

    所以你的VBA命令看起来像

    DoCmd.RunSQL("SELECT t.* FROM " & Me.TableList.Column(0) & " t WHERE (t.*)::text LIKE '%" & Me.searchCriteria.Text & "%'")
    

相关问题