1

我在 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。

非常感谢,

布雷特

4

1 回答 1

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 之类的值,有许多选项。您可以将值放在全局变量中。或者,您可以通过在调用表单上使用公共变量或公共函数让搜索表单将值返回给调用表单。

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

于 2012-05-02T03:11:57.180 回答