惠,
我是新访问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进行更改。如果你有更简单的代码。让我知道。
感谢您的帮助。
答案 0 :(得分:0)
通过使用LEFT OUTER JOIN
或LEFT 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