簡體   English   中英

Microsoft Access VBA - 當字段中的值不是 null 時鎖定字段

[英]Microsoft Access VBA - Locking a field when value in the field is not null

我陷入了構建報價創建工具的常規。 我有一個組合框,可以為報價選擇一個項目,並將填充該行的所有字段。 在這種情況下,我希望鎖定 [Cost] 字段,防止任何更改。 但是,有時用戶必須為報價輸入一個不在組合框中的項目; 因此,該行上的所有字段都是 null 並且必須手動輸入。

我正在嘗試編寫一個 VBA 事件,其中 [Cost] 在 [Cost] 不是 null 時被鎖定,以防止任何更改; 其中 [Cost] 為 Null 時不鎖定 [Cost],允許編輯。

Private Sub Form_Current()
If IsNull(Me.Cost) = True Then
    Me.Cost.Locked = False
Else
    Me.Cost.Locked = True
End If
End Sub

子窗體的設計視圖

完整表格的表格視圖

  • 頂行在組合框中,整行都被填充; 在這里我想鎖定成本
  • 第二行不在combo中,必須手動輸入; 在這里我想禁用鎖定

有時代碼必須在多個事件中才能達到預期的結果。 如果從 combobox 列表中選擇項目,您將以編程方式填充成本,因此將代碼放入表單當前事件和 combobox 更新后事件。 可以有一個可以由兩個事件調用的 Sub 后面的表單。

以編程方式設置控件的屬性將影響控件的所有實例。 另一種方法是使用條件格式來動態啟用/禁用文本框或 combobox。

允許用戶選擇編輯手動輸入的新記錄的成本值會增加復雜性。 VBA 或條件格式規則可能是有條件的 - 如果焦點位於新記錄且服務項目不在查找表中,請不要禁用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM