我在Microsoft Access数据库中有两个表和一个表单。让第一个表为tblCUSTOMERS,第二个表为tblINVOICES。 tblCUSTOMERS包含名为CustomerID(主键),FirstName和LastName的字段。 tblINVOICES包含名为InvoiceID(主键),CustomerID(外键)和金额的字段。该表单称为frmInvoices,包含tblINVOICES中字段的文本框。
我要做的是创建一些功能,允许我搜索我的customers表,从该表中选择一个客户记录,然后将该记录的CustomerID返回给frmInvoices。理想情况下,搜索的格式类似于数据网格,允许按FirstName,LastName和CustomerID进行搜索。
具体来说,您可以告诉我最简单的方法: 1.使用类似数据网格控件的内容插入表单(让我们称之为新表单frmCUSTOMERS)以显示客户记录。 2.更新frmCUSTOMERS上的datagrid,仅显示与tblCUSTOMER查询匹配的记录(例如只有firstname以'B'开头的客户) 3.将客户ID从frmCUSTOMERS传递给frmINVOICES。
非常感谢,
布雷特
答案 0 :(得分: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之类的值,有许多选项。您可以将值放在全局变量中。或者您可以让搜索表单通过调用表单上的公共变量或公共函数将值返回给调用表单。
可以说,更正确,更清晰的方法是设计一个处理打开搜索表单并传入入站和出站值的类。课程确实需要更多的知识和技能来编写,而且对于你想要做的事情来说可能会有些过分。当然不需要上课来完成这项工作。它只会更清洁一点。实际上,如果您为此编写了一个类,您将使用我上面列出的许多相同技术。