MS Access 以编程方式编辑数据表单元格值

MS Access programmatically edit a datasheet cell value

我正在以编程方式验证我的数据表,因为无法以 "normal" 方式(链接表)进行验证。 "normal" 告诉用户他们输入了错误的方法是用 MsgBox 弹出窗口惩罚他们 - 我想在我的表单的标签中显示一条消息(这有效)并更改有问题的单元格的背景颜色。我只能通过条件格式更改单元格颜色(这可行),所以我设置了一些规则来突出显示前导 spaces.

的单元格

所以现在最后一块拼图是更改带有前导 space 的违规单元格的值,以便通过条件格式突出显示它。但是那部分不起作用。当我更改单元格的值时,没有任何反应。我觉得好像我的数据表需要被告知用我的新值更新自己。

这是我目前的情况:

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim isValid As Boolean
    isValid = myDataSheetRow_IsValid()
    ' if the page is valid, don't cancel the update
    Cancel = Not isValid
End Sub

Private Function myDataSheetRow_IsValid() As Boolean
    ' validate our data as it cannot be validated in the GUI due to the way linked tables work
    myDataSheetRow_IsValid = True
    Dim myErrMsg As String
    myErrMsg = ""

    'evaluate my column called ABC
    If (IsNull(Me.ABC)) Then
        myErrMsg = myErrMsg + "ABC cannot be blank" + vbNewLine

        '---------------------
        'PROBLEM START
        '---------------------
        'Set the cell value to what it was plus a leading space
        'Because I have set up conditional formatting on the datasheet
        'So that leading spaces highlights the cell for attention

        Me.ABC= " " + Me.ABC 'trigger conditional formatting ??
        '---------------------
        'PROBLEM END
        '---------------------
    End If
    ' ... more validating ...
    ' done validating
    Call Me.Parent.UpdateErrorMsgArea(myErrMsg)
    If (Len(myErrMsg) > 1) Then
        myDataSheetRow_IsValid= False
    End If
End Function

如何以编程方式设置数据表单元格的值?

我已经尝试过这种方法,但它不起作用 - 数据表上没有任何更改,就好像数据表没有自我更新以显示我以编程方式更改的新值。

代码在 Me.ABC 为 Null 时运行以下语句 ...

Me.ABC= " " + Me.ABC

我的印象是您希望该语句将 space 存储在 Me.ABC 中,但它实际上存储了 Null。

原因是将 Null 添加到某物中会得到 Null。 something 是数字还是文本字符串并不重要; 添加 Null 仍然给你 Null。

但是,如果您 concatenate(使用 & 运算符)空文本字符串,您将返回文本字符串。

Me.ABC= " " & Me.ABC

但是由于您当时知道 Me.ABC 为 Null,因此串联并没有真正带来任何好处。仅分配 space 字符 ...

Me.ABC = " "