2015-06-10 66 views
2

我以編程方式驗證我的數據表,因爲無法以「正常」方式(鏈接表)執行此操作。告訴用戶他們輸入惡劣的「正常」方式是用MsgBox popups來懲罰他們 - 我想在我的表單上的標籤中顯示一條消息(這起作用)並更改違規單元格的背景顏色。我只能通過條件格式(這是有效的)改變單元格顏色,所以我設置了一些規則來突出顯示帶有空格的單元格。以編程方式編輯數據表單元格值的MS Access

所以現在最後一塊難題是改變有問題的單元格的值,並通過條件格式使其突出顯示。但那部分不起作用。當我改變單元格的值時,沒有任何反應。我覺得我的數據表需要被告知用我的新價值來更新自己。

這是我到目前爲止有:

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 

如何設置一個數據表單元格的值編程?

我試過這種方式,它不工作 - 在數據表上沒有任何變化,就好像數據表沒有更新自身,以顯示我的新的以編程方式更改的值。

回答

1

代碼運行下面的語句時Me.ABC是空...

Me.ABC= " " + Me.ABC 

我的印象是你期望的語句來存儲Me.ABC的空間,但它實際上將NULL存儲。

原因是,添加Null到某些東西會導致Null。 是一個數字還是一個文本字符串都沒關係; 空仍然給你空。

不過,如果你串聯(與&運營商)與空文本字符串,你得到的文本字符串回來。

Me.ABC= " " & Me.ABC 

但既然你知道Me.ABC在當時是零,沒有真正從串聯任何好處。只分配空格字符...

Me.ABC = " " 
相關問題