2017-02-09 69 views
0

我有以下vba代码来检查产品是否已在子窗体上选中。然后提醒用户。如何检查是否已经在子窗体上选择了一个项目?

Private Sub ProdId_Combo_BeforeUpdate(Cancel As Integer) 
    Dim icount As Long 
    icount = Nz(DCount("[ProdID]", "ProdRestockDetails", "[ProdID]=" & Me.ProdID & " AND RestockID=" & Me.RestockID, 0)) 
    If icount <> 0 Then 
     MsgBox "this item has already been selected." 
     Cancel = True 
     Undo 
    End If 
End Sub 

但它会引发错误。 有人可以帮我正确设置它吗?

+0

你的错误发生在哪里?您的ProdID数字(和RestockID相同)?如果它们是文本字段,则需要添加引号。例如icount = DCount(“[ProdID]”,“ProdRestockDetails”,“[ProdID] ='”&Me.ProdID&“'AND RestockID ='”&Me.RestockID&“'”) – RyanL

+0

它们都是自动编号。铌:当我只使用ProdId它的工作原理,但是当我在where子句中添加RestockID时,它会抛出错误。 – ezybusy

回答

0

看起来像你的Dcount和Nz函数没有适当地结束。你可以试试这个吗?此外,使用DCount函数,您不需要Nz包装器,因为如果未找到该值,则应该返回零。

Private Sub ProdId_Combo_BeforeUpdate(Cancel As Integer) 
    Dim icount As Long 
    icount = Nz(DCount("[ProdID]", "ProdRestockDetails", "[ProdID]=" & Me.ProdID & " AND RestockID=" & Me.RestockID), 0) 
    If icount <> 0 Then 
     MsgBox "this item has already been selected." 
     Cancel = True 
     Undo 
    End If 
End Sub 
+0

太棒了。它完成这项工作。谢谢RyanL – ezybusy