0

我在 MS Access 2010 数据库中有一个客户表。我想创建一个包含两个子表单的表单,它们一起允许用户选择客户并查看有关客户的更多详细信息。

客户表如下所示:

CustomerID  
FullName  
Address  
City  
StateProvince  
Other fields  

我在设计视图中通过将 CustomerListForm 和 CustomerDetailForm 拖到 MainForm 上创建的 mainForm。

CustomerListForm is on left side and lets users filter customers from long list  
  Contains the following controls:  
    txtFilter textbox with embedded macro where = [LastName] Like [Forms]![CustomerListForm]![txtFilter] & "*"  
    FullName textbox and hidden CustomerID textbox which are bound to CustomersTable  
CustomerDeatilForm located on right, with contents changing based on selection from CustomerListForm  
    If no customer selected from CustomerListForm, show default message  
    Else:  
        Show FullName, address, city, and stateprovince of customer selected from CustomerListForm  
        txtFullName set =[CustomersTable]![FullName], and so on for other fields

当我单独运行我的 CustomerListForm 时,它确实允许用户通过输入名称来过滤客户记录。但是当我在 mainForm 中嵌入 CustomerListForm 时,这种过滤能力就消失了。此外,我在 CustomerListForm 中的过滤结果不包含任何类型的链接,这意味着 CustomerDetailForm 似乎无法识别它应该输出数据的客户。

谁能告诉我如何设置?我想如果我能跑这么多,我将能够填补我正在进行的其他研究的空白。

编辑:

我看到 CustomerListForm 上的 FullName 文本框有一个 OnClick 方法。FullName 在 CustomerListForm 中不可编辑。CustomerID 是 CustomerListForm 中每条记录旁边的隐藏字段。我还看到 FullName 文本框的属性表的格式选项卡中有多个超链接设置。是否可以使用 FullName 文本框的 OnClick 方法将 CustomerID 发送到 CustomerDetailForm?也许在超链接中?

4

1 回答 1

1

子表单可能通过 CustomerID 链接到父表单?

从子窗体控件的 LinkMasterID、LinkChildID 属性中删除此值(在父窗体中 - 与子窗体本身的窗体属性相反)

移除宏,并为txtFilter创建一个AfterUpdate事件,该事件找到相关数据并显示在CustomerListForm中;除了此过程中的任何其他代码之外,将

Dim CustID as Long: CustID = [get customerID from wherever it is]

... [your other code]

Me.Parent.LockCustomer CustID

在外部形式中,在 vba 中添加:

Public Sub LockCustomer(CustID as Long)
    CustomerDetailForm.Form.RecordSource = _
        "SELECT * FROM Customer WHERE CustomerID = " & CustID
End Sub

如果除了子表单之外,您在主表单上还有任何类型的客户详细信息,并且您希望在主表单和详细信息子表单的列表表单中显示所选客户的详细信息,而不是设置 CustomerDetailForm.Form。 RecordSource,设置 Me.RecordSource 并确保 Detail 子窗体控件的 LinkMasterID、LinkChildID 属性设置为 CustomerID。

于 2013-09-17T00:07:50.683 回答