Ms access MS ACCESS:验证表中数据的代码

Ms access MS ACCESS:验证表中数据的代码,ms-access,Ms Access,下面是我编写的一些代码,用于验证用户是否在填充表的表单上输入数据。我试图确认他们是否将字段(MinAge)留空。当我运行代码时,数据不匹配。这是最好的方法吗?救命啊 Dim MinAgeVal As Integer MinAgeVal = DLookup("[MinAge]", "User_ProductDefaultsAge") If MinAgeVal Is Null Then x = MsgBox("Missing Minimum Age Value", vbCrit

下面是我编写的一些代码,用于验证用户是否在填充表的表单上输入数据。我试图确认他们是否将字段(MinAge)留空。当我运行代码时,数据不匹配。这是最好的方法吗?救命啊

 Dim MinAgeVal As Integer
 MinAgeVal = DLookup("[MinAge]", "User_ProductDefaultsAge")


 If MinAgeVal Is Null Then


    x = MsgBox("Missing Minimum Age Value", vbCritical)

Else

    x = MsgBox("clear", vbCritical)

End If
此外,表中可能有多行

(更新):

好的。。。我有一个表,由一个表单中的用户填充。用户将输入一系列年龄范围(最小和最大)。。。0-5、6-10等。。。每个最小/最大范围将位于其自己的行上。。。我需要编写代码,将检查每一行的三件事。。。1) 没有任何字段(最小值或最大值)为空。。。2) 最小范围不大于或等于最大范围。。。下一行数据按顺序排列(记录1的最大年份小于记录2的最小年份)

最小年份最大年份 0 1 2 10 十五

下面提供了一些代码作为指导

Dim RS As DAO.Recordset
Dim SQL As String

'ordering is only important if you want the FIRST three MIDs.
'If you don't care, just omit the "order by MID" part.
SQL = "select top 3 MID from DealContent where DealID = xxx order by MID"

Set RS = CurrentDb.OpenRecordset(SQL)
Do While Not RS.EOF
    Me!MID = Me!MID & RS("mid") & " "
    RS.MoveNext
Loop
RS.Close
Set RS = Nothing
我知道大多数代码正在做什么,但不知道如何制作/修改代码:

Set RS = CurrentDb.OpenRecordset(SQL)
Do While Not RS.EOF
    Me!MID = Me!MID & RS("mid") & " "
    RS.MoveNext

古斯塔夫提供的答案只适用于一行。Dlookup不能处理多个记录。您将需要使用记录集。请参见

尝试以下操作:

Dim MinAgeVal As Variant
MinAgeVal = DLookup("[MinAge]", "User_ProductDefaultsAge")

If IsNull(MinAgeVal) Then
    x = MsgBox("Missing Minimum Age Value", vbCritical)
Else
    x = MsgBox("clear", vbCritical)
End If

不要输入有关最大年龄的信息。是否要将多个值放入Dim?还是你只想存储一个值?我不太明白你的问题。有多行可能具有MinAge值。我试图确定它们都不是空的。因此,我猜DIM中会有多个值,而不是尝试从表中提取值以查看用户是否输入了它,您可以在更新事件之前将代码添加到表单
,并使用
if IsNull(Me.txtAge)检查表单上的控件,然后……
if IsNull([txtAge])然后……
我有那个密码。。。但是,如果用户从不触摸(更新框),则空值仍然存在。当用户使用切换按钮移动到下一节时,我希望代码再次验证数据这对一行数据有效。可以是多行。。。在这种情况下,如果在多行上失败,我可以循环它,还是总是拾取第一个值?这是一个混乱。首先你查找MinAge,然后从另一个表中查找MID。更新的问题[link]()我知道它是如何工作的。。。但是,我正在试图找出它如何适合我的工作,即Dim RS As DAO.Recordset Dim SQL As String“只有在需要前三个mid时,排序才是重要的。”如果你不在乎的话,就省略“按中间顺序”部分。SQL=“从DealContent中选择前三名MID,其中DealID=xxx按MID排序”设置RS=CurrentDb.OpenRecordset(SQL)Do而不是RS.EOF Me!MID=我!MID&RS(“MID”)和“RS.MoveNext循环RS.Close集合RS=NOTHING我得到了创建SQL的部分。。。我不明白该用什么来编辑你的问题,以便更好地解释你正在努力实现的目标。好的。。。我有一个表,由一个表单中的用户填充。用户将输入一系列年龄范围(最小和最大)。。。0-5、6-10等。。。每个最小/最大范围将位于其自己的行上。。。我需要编写代码,将检查每一行的两件事。。。1) 没有任何字段(最小值或最大值)为空。。。2) 最小范围不大于或等于最大范围。。。