Ms access 在子窗体中显示记录
惠 我是访问vba的新手,我想在子窗体中显示记录 第一步,我需要在复选框中选择客户名称 其次,选择/单击客户名称后,系统将自动浏览记录。例如,我的客户名是A,因此系统将在customer表中检查customer A order ID。然后,系统将获取客户A的订单ID,然后将订单ID与产品表中的订单ID进行比较。如果产品表中的订单ID与客户表中的订单ID相同。然后,子窗体中将显示同一订单ID下的产品的所有记录(如产品名称、过期日期、数量) 这是我的密码。我在“在子窗体中显示详细信息”的注释处挂起Ms access 在子窗体中显示记录,ms-access,vba,Ms Access,Vba,惠 我是访问vba的新手,我想在子窗体中显示记录 第一步,我需要在复选框中选择客户名称 其次,选择/单击客户名称后,系统将自动浏览记录。例如,我的客户名是A,因此系统将在customer表中检查customer A order 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进行更改。如果你有更简单的代码。让我知道
感谢您的帮助。通过使用
左外部联接
或左联接
语句,我可以获得需要在子窗体中显示的记录。以下是我的简单代码:
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
阅读下面的文章,看看你是否可以像这样设置你的表单@Jens谢谢你的建议