0

好的,我可以使用一些建议,因为我不经常使用 VBA。

我有一个表单,在该表单中,我有一个由 make 表构建的子表单。我没有必要改变这一点。

但是,我想在按下更新 SQL 服务器的上传按钮之前添加一个健全性检查。我遇到困难的地方是 IIf(Dlookup) 函数;我正在尝试查看本地表,如果本地表中的三个字段与我的子表单上的字段和条件匹配,然后检查我的子表单中的 5 列是否加起来到我的子表单中的另一个字段。

举个例子;在本地表中有三个字段:“UNIT”、“TYPE”、“Center”

“单位”标准如下:1212、1213、1214等

“TYPE”标准如下:Shop、Outside、Innerbank

“中心”标准如下:电器车间、机加工车间、外车间。

*** 我需要做的是将上述表格中称为“Ledend”的字段与我表单上的子表单匹配,如果该单元、类型和中心都存在于我的子表单的一行中,则计算( SUM)我的子表单上的 5 个字段,如果它与我的子表单上名为 Total 的字段匹配,则保持原样,但如果不匹配,则突出显示不同的行并抛出错误消息

If DLookup("Unit", [dbo_TableName]) = "Unit", FORM![SUBFORM_NAME]!Unit & "TYPE", [dbo_TableName]) = "TYPE", FORM![SUBFORM_NAME]!TYPE, & _
    "Center", [dbo_TableName]) = "Center", FORM![SUBFORM_NAME]!Center Then
    subform Sum(Dis + ABS + Center + SS + WRK) 
Else
    MsgBox ("Error")
End If
4

1 回答 1

0

Sum() 不是用来添加字段的,它是用来聚合记录的。DLookup 的语法是完全错误的。引用subform没有意义。听起来你需要一个嵌套的 If Then。以下假设代码在子表单后面。

If Not IsNull(DLookup("ID", "Ledgend", "Unit & Type & Center'" = Me!Unit & Me!TYPE & Me!Center & "'")) Then
    If Me!Total <> Dis + ABS + Center + SS + WRK Then
        MsgBox "Error"
        'code here to set BackColor property of each control
        Exit Sub
    End If
Else
    Exit Sub
End If

顺便说一句,Ledend 是 Legend 的拼写错误。

可以使用条件格式规则来管理设置背景色属性。

于 2020-01-28T21:33:03.380 回答