【问题标题】:Ms Access 2010 DMax from another table (MS Access cant find the field '|1' referred to in your expression)Ms Access 2010 DMax 来自另一个表(MS Access 找不到您的表达式中引用的字段“|1”)
【发布时间】:2018-06-08 16:54:38
【问题描述】:

我一直在尝试获取 Dmax,如果这是正确的方法,则返回列中的最大值。该表单有一个控件,用于检查以验证在 On Change 事件中输入的值。该事件应检查另一个表(材料采购订单数据表)以获取最大值。如果文本框(PO_NUM)中的值小于另一个表的最大值,则会弹出一个消息框通知情况并撤消在框中的输入。但是,我被困在 Dmax 线上。

Private Sub PO_Num_Change()

Dim MaxNum As Long
DoCmd.OpenTable "MATERIAL PO DATASHEET"

MaxNum = DMax([MATERIAL PO DATASHEET]![PO NUMBER], [MATERIAL PO DATASHEET])

If Me.PO_Num.Value <= MaxNum Then
    strMsg = "This PO Exists!"
        If MsgBox(strMsg, vbExclamation, "Confirm") = vbOK Then
            Me.Undo
        Else
            Me.Undo
        End If

End If
DoCmd.Close , "MATERIAL PO DATASHEET"
End Sub

我收到的错误是“运行时错误 2465:MS Access 找不到您的表达式中引用的字段 '|1'”。此错误使我认为某些内容可能输入错误或某些内容,但所有字段似乎都匹配。该表在 DoCmd 行上打开(没有问题),并在 DMax 处停止。

我也试过了:

MaxNum = DMax([PO NUMBER], "MATERIAL PO DATASHEET")

MaxNum = DMax([PO NUMBER], [MATERIAL PO DATASHEET])

感谢任何反馈,

谢谢,

迈克尔

【问题讨论】:

    标签: ms-access vba ms-access-2010


    【解决方案1】:
    Private Sub PO_Num_Change()
        Dim MaxNum As Long
        MaxNum = DMax("[PO NUMBER]", "[MATERIAL PO DATASHEET]")
        If Me.PO_Num.Value <= MaxNum Then
            strMsg = "This PO Exists!"
            If MsgBox(strMsg, vbExclamation, "Confirm") = vbOK Then
                Me.Undo
            Else
                Me.Undo
            End If
        End If
    End Sub
    

    Dxxxx函数的所有参数都需要用引号引起来

    另一种写法(没有不必要的变量)

    Private Sub PO_Num_Change()
        If Me.PO_Num.Value <= DMax("[PO NUMBER]", "[MATERIAL PO DATASHEET]") Then
            strMsg = "This PO Exists!"
            If MsgBox(strMsg, vbExclamation, "Confirm") = vbOK Then
                Me.Undo
            Else
                Me.Undo
            End If
        End If
    End Sub
    

    另外我认为这可能更简单

     IF IsNull(DLookup("[PO NUMBER]", "[MATERIAL PO DATASHEET]", "[PO Number]=" & Me.PO_Num))= False Then
         MsgBox "Found it"
     Else
         'Nothing
     END if
    

    【讨论】:

    • 这太完美了,谢谢!感谢您的时间和精力,您甚至还给了我一个更简化的版本!令人难以置信的是我在参数中缺少引号,我不知道这个基本要求。
    • @Rekar 确保您阅读了字符串与非字符串的语法差异。语法可能很烦人,起初您会费力地找出参数中字符串周围缺少的单引号。像对待 sql 字符串一样对待 Dxxxx 函数参数是最好记住它的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 2011-04-22
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多