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

Ms access MS Access以编程方式编辑数据表单元格值,ms-access,vba,ms-access-2013,datasheet,Ms Access,Vba,Ms Access 2013,Datasheet,我正在以编程方式验证数据表,因为不可能以“正常”方式(链接表)进行验证。告诉用户他们输入了不良信息的“正常”方式是使用MsgBox弹出窗口惩罚他们-我想在表单上的标签中显示一条消息(这样做有效),并更改违规单元格的背景颜色。我只能通过条件格式更改单元格颜色(这是可行的),所以我设置了一些规则来突出显示带有前导空格的单元格 现在,最后一个难题是用前导空格更改有问题单元格的值,以便通过条件格式突出显示。但那部分不起作用。当我更改单元格的值时,什么也不会发生。我觉得好像我的数据表需要用我的新值来更新自

我正在以编程方式验证数据表,因为不可能以“正常”方式(链接表)进行验证。告诉用户他们输入了不良信息的“正常”方式是使用MsgBox弹出窗口惩罚他们-我想在表单上的标签中显示一条消息(这样做有效),并更改违规单元格的背景颜色。我只能通过条件格式更改单元格颜色(这是可行的),所以我设置了一些规则来突出显示带有前导空格的单元格

现在,最后一个难题是用前导空格更改有问题单元格的值,以便通过条件格式突出显示。但那部分不起作用。当我更改单元格的值时,什么也不会发生。我觉得好像我的数据表需要用我的新值来更新自己

以下是我目前掌握的情况:

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
为空时,代码运行以下语句

Me.ABC=”“+Me.ABC
我的印象是,您希望该语句在
Me.ABC
中存储一个空格,但实际上它存储的是Null

原因是,将Null添加到某个内容会导致Null。不管是数字还是文本字符串添加Null仍然会返回Null

但是,如果使用文本字符串连接(使用
&
运算符)Null,则会返回文本字符串

Me.ABC=”“&Me.ABC
但是,因为您知道,
Me.ABC
在那个时候是空的,所以连接并没有什么好处。只指定空格字符

Me.ABC=“”