我正在制定销售点计划。我有一个带有标签的表单,主标签是我的注册部分。现在我有一个从属下拉框,可以在另一个列出了我所有产品的表中搜索产品,点击添加产品后,它会自动将其添加到子表单进行计算。我正在尝试为此过程添加条形码扫描程序选项。我有一个文本框,扫描仪将在其上提交产品代码并将其添加到子窗体,就像我的下拉菜单一样。我在查找另一个表上的产品代码时遇到问题,将其添加到子表单进行计算。以下是我的代码
Private Sub txtscan_AfterUpdate()
If (txtScan & vbNullString) = vbNullString Then Exit Sub
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("tblProducts", dbOpenDynaset)
rst.FindFirst "[ProductCode]='" & Me![txtScan] & "'"
If rst.NoMatch Then
MsgBox "Sorry, no such record '" & txtScan & "' was found.", _
vbOKOnly + vbInformation
Else
DoCmd.RunCommand acCmdSaveRecord
Me.sfrmSalesDetail.Form.Requery
Set rst = CurrentDb.OpenRecordset("tblSalesDetail", dbOpenDynaset)
Forms!frmMain.sfrmSalesDetail.Form.txtProductName.SetFocus
Me.cmdAddProduct.SetFocus
With rst
.AddNew
.Fields("SaleID") = Me.txtSaleID
.Fields("ProdCategoryID") = Me.cboProductCategory
.Fields("ProductID") = Me.cboProductID
.Fields("ProductCode") = Me.cboProductID.Column(1)
.Fields("ProductDesc") = Me.cboProductID.Column(2)
.Fields("ProdColor") = Me.cboProductID.Column(3)
.Fields("ProdSize") = Me.cboProductID.Column(4)
.Fields("UPC") = Me.cboProductID.Column(5)
.Fields("SalesPrice") = Me.cboProductID.Column(6)
.Fields("QuantitySold") = 1
.Fields("ItemExt") = 1 * Me.cboProductID.Column(6)
.Fields("ItemTotal") = 1 * Me.cboProductID.Column(6)
.Update
End With
Me.sfrmSalesDetail.Form.Requery
rst.Close
Set rst = Nothing
Me.sfrmItemsSaleAmount_NonInsurance.Requery
cmdCalculateOrderTotal_Click
DoCmd.RunCommand acCmdSaveRecord
' Me.Recordset.Bookmark = rs.Bookmark 万一 rst.Close txtScan =空 结束子
答案 0 :(得分:0)
考虑使用Domain aggregate family of functions的DLookUp
或DCount
进行查找。无需打开记录集。因此,更改条件的If
逻辑以使用DLookup
。如果返回空答案,则使用Nz()
以下。
If Nz(DLookUp("ProductCode", "tblProducts", "ProductCode='" & Me![txtScan] & "'")) = "" Then
MsgBox "Sorry, no such record '" & txtScan & "' was found.", _
vbOKOnly + vbInformation
Else
...
或者,使用DCount
:
If Nz(DCount("*", "tblProducts", "ProductCode='" & Me![txtScan] & "'")) = 0 Then
MsgBox "Sorry, no such record '" & txtScan & "' was found.", _
vbOKOnly + vbInformation
Else
...