【问题标题】:Passing values in Access Forms在访问表单中传递值
【发布时间】:2012-05-11 12:31:46
【问题描述】:

我在 Microsoft Access 数据库中有两个表和一个表单。让第一个表 tblCUSTOMERS 和第二个表 tblINVOICES。 tblCUSTOMERS 包含名为 CustomerID(主键)、FirstName 和 LastName 的字段。 tblINVOICES 包含名为 InvoiceID(主键)、CustomerID(外键)和 Amount 的字段。该表单称为 frmInvoices,其中包含 tblINVOICES 中字段的文本框。

我要做的是创建允许我搜索客户表,从该表中选择客户记录,然后将该记录的 CustomerID 返回到 frmInvoices 的功能。理想情况下,搜索应采用类似于数据网格的格式,允许按 FirstName、LastName 和 CustomerID 进行搜索。

您能否具体告诉我最简单的方法: 1. 插入一个表单(让我们称之为新表单 frmCUSTOMERS),其中包含类似数据网格控件的内容以显示客户记录。 2. 更新 frmCUSTOMERS 上的数据网格以仅显示与 tblCUSTOMER 查询匹配的记录(例如仅显示名字以“B”开头的客户) 3. 将来自 frmCUSTOMERS 的 CustomerID 传递给 frmINVOICES。

非常感谢,

布雷特

【问题讨论】:

    标签: ms-access ms-access-2007 vba


    【解决方案1】:

    您可以在打开表单时将值作为开始参数传递给表单。

    DoCmd.OpenForm "frmFormName", , , , , ,"B"
    

    或者你可以传入一个条件语句:

    DoCmd.OpenForm "frmFormName", , , "FirstName LIKE 'B*'"
    

    如果你走第一条路线,你会这样做:

    Private Sub Form_Load()
        Me.Filter = "FirstName LIKE '" & Nz(Me.OpenArgs, "") & "*'"
        'or
        Me.Subform1.Form.Filter = "FirstName LIKE '" & Nz(Me.OpenArgs, "") & "*'"
    End Sub
    

    要从搜索表单中返回诸如 CustomerID 之类的值,有多种选择。您可以将值放在全局变量中。或者,您可以让搜索表单通过在调用表单上使用公共变量或公共函数将值返回给调用表单。

    可以说,一个更正确和更简洁的方法是设计一个类来处理打开搜索表单并传递入站和出站值。课程确实需要更多的知识和技能来写作,而且对于你正在尝试做的事情来说可能是过度的。当然不需要一个类来完成这项工作。它只会更干净一点。实际上,如果您为此编写了一个类,您将使用我上面列出的许多相同技术。

    【讨论】:

    • 谢谢@HK1,我认为这是必要的。我只是想/希望会有更简单的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多