0

我想计算索书号Datecall[Username]是表字段的名称,BCKHDY 但为什么numbercall总是等于0。如果我删除AND DateCall= #" & DateFrom & "#,代码运行,这意味着有问题Datecall。怎么了?

Private Sub txtnbCall_Click()
    Dim mydept As Integer

DateFrom = Me.txtfrom.Value
User = Forms![Navigation form]![txtLogin].Value
    If Not IsNull(DLookup("Deptname", "tblUser", "UserLogin = '" & User & "'")) Then
    mydept = DLookup("Deptname", "tblUser", "UserLogin = '" & User & "'")
    Me.txtnbCall = numbercall(mydept, DateFrom)
    End If
End Sub


Public Function numbercall(ByVal mydept As Integer, _
                            ByVal DateFrom As Date) As Integer
    numbercall = DCount("CompanyName", "BCKHDY", _
                  "[UserName] = " & mydept & "AND DateCall >= #" & DateFrom & "#")
End Function
4

2 回答 2

1

您在这里缺少一个空格:

mydept & "AND 

应该

mydept & " AND

只有字符串中的空格才算。如果您忘记了空格,则标准将包括类似1And

您还需要将日期格式化为 yyyy-MM-dd 或 MM/dd/yyyy:

"[UserName] = " & mydept & " AND DateCall >= #" & Format(DateFrom, "yyyy-MM-dd") & "#")
于 2018-01-19T07:49:50.497 回答
1

您不必调用 DLookup 两次,声明所有变量,并且您可能过滤了 DCount 中的错误字段:

Private Sub txtnbCall_Click()

    Dim mydept    As Variant
    Dim DateFrom  As Date
    Dim User      As String

    DateFrom = Me!txtfrom.Value
    User = Forms![Navigation form]![txtLogin].Value

    mydept = DLookup("Deptname", "tblUser", "UserLogin = '" & User & "'")       
    If Not IsNull(mydept) Then
        Me!txtnbCall.Value = numbercall(mydept, DateFrom)
    End If

End Sub


Public Function numbercall(ByVal mydept As Integer, _
                            ByVal DateFrom As Date) As Integer

    numbercall = DCount("*", "BCKHDY", _
                  "[Deptname] = " & mydept & " AND DateCall >= #" & Format(DateFrom, "yyyy\/mm\/dd") & "#")

End Function
于 2018-01-19T08:31:41.973 回答