在子窗体中显示记录

时间:2015-01-22 06:44:48

标签: vba access-vba

惠,

我是新访问vba,我想在子窗体中显示记录。

第一步我需要在复选框中选择客户名称。

其次,在选择/点击客户名称后,系统将自动查看记录。例如,我的客户名称为A,因此系统将通过客户表中的客户A订单ID。然后,系统将获取客户A的订单ID,然后将订单ID与产品表中的订单ID进行比较。如果产品表中的订单ID与客户表的订单ID相同。然后,子窗体中将显示相同订单ID下的产品的所有记录(例如产品名称,有效期,数量)。

这是我的代码。我在评论'显示子表单中的详细信息时待定。

Sub CustomerList_Review()

Dim db As DAO.Database
Dim rsCustLog As DAO.Recordset
Dim rsPrdLog As DAO.Recordset
Dim ordID As String

Set db = CurrentDb
Set rsCustLog = db.OpenRecordset("CustomerLog")
Set rsPrdLog = db.OpenRecordset("ProductLog")

Do Until rsCustLog.EOF
    If rsCustLog("CUSTOMER NAME").Value = Forms![Customer Review].cbxCustName Then
        ordID = rsCustLog("CUSTOMER NAME").Value

        Do Until rsPrdLog.EOF
            If rsPrdLog("ORDER ID").Value = ordID Then
                'Display the details in the subform
            End If

        rsPrdLog.MoveNext
    End If

    rsCustLog.MoveNext
Loop
End Sub

因此,每当我点击不同的客户名称时,产品详细信息将根据客户名称订单ID进行更改。如果你有更简单的代码。让我知道。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

通过使用LEFT OUTER JOINLEFT JOIN语句,我可以获得需要在子表单中显示的记录。这是我的简单代码:

Sub CustomerList_Review()

Dim db As DAO.Database
Dim rsCustLog As DAO.Recordset
Dim rsPrdLog As DAO.Recordset
Dim custName As String

Set db = CurrentDb
Set rsCustLog = db.OpenRecordset("ORDER ID")
Set rsPrdLog = db.OpenRecordset("PRODUCT LOG")

custName = Forms![Customer Review]!cbxCustName.Text
Forms![Customer Review]!subform1.Form.RecordSource = _
    "SELECT [ORDER ID].[ORDER ID], [PRODUCT LOG].[SKU], " _
    & "[PRODUCT LOG].[PRODUCT NAME], [PRODUCT LOG].[LOT NO], " _
    & "[PRODUCT LOG].[EXP DATE], [PRODUCT LOG].[QUANTITY] " _
    & "FROM [ORDER ID] LEFT OUTER JOIN [PRODUCT LOG] " _
    & "ON [ORDER ID].[ORDER ID] = [PRODUCT LOG].[ORDER ID] " _
    & "WHERE([ORDER ID].[CUSTOMER NAME] = """ & custName & """);"
End Sub