2017-09-02 51 views
0

在訪問我試圖不讓用戶退出一個文本框,除非他們已經填寫了它(即不保留它爲空)。這是爲了減少代碼的功能。在VBA中有一些方法可以阻止用戶退出該功能? (我知道設置重點,但我需要代碼工作從衆多不同的文本框)如何引用用戶當前的文本框?

僅供參考我現在的代碼如下;

Function Reload() 

If IsNull(EmployeeID.Value) Or IsNull([First Name].Value) Or IsNull([Surname].Value) Or IsNull(DOB.Value) Or IsNull(Position.Value) Or IsNull(Position.Value) Or IsNull(Mobile.Value) Or IsNull(Email.Value) Or IsNull(Address.Value) Or IsNull(Suburb.Value) Or IsNull(Postcode.Value) Or IsNull([Start Date].Value) Or IsNull(UserLogin.Value) Or IsNull(UserPassword.Value) Then 
    MsgBox "Please fill out all fields" 
Else 
    DoCmd.RunCommand acCmdSaveRecord 
    Form.Refresh 
End If 

End Function 

感謝

+0

設置重新加載文本框對象的參數,然後在空檢查中引用參數名稱? – Dave

+0

我已經試過這個,但它似乎沒有工作 – Everton

+0

「它不工作」並不能真正幫助我們確定什麼不起作用。你可以說得更詳細點嗎? – Dave

回答

0

我所知道的最好的方法是使用BeforeUpdate事件運行數據驗證。如果數據無效,則使用if語句,然後設置

Cancel = True 

並且數據不會寫入。您可能更願意禁用默認的記錄導航並形成關閉按鈕並使用自定義按鈕,以便您可以捕獲無效數據錯誤並防止移動到新記錄或關閉窗體。但即使您允許用戶使用內置導航按鈕或關閉按鈕,Access也會拋出有關無法保存當前記錄的錯誤消息,並提示用戶是否想繼續操作。

您還可以更進一步並捕獲哪些字段無效並顯示消息框。

Msgbox ("The following fields were left blank and must be entered to save this record:" & vbCrLf & "Field 1" & vbCrLf & "Field 2") 
+0

謝爾蓋,我想知道你是如何編輯的,所以代碼看起來是如何做到的。謝謝。 – codenovice31415

+0

https://stackoverflow.com/editing-help @ codenovice31415 – Andre

0

稍微修改我在聊天室中使用的文本輸入限制器應該會有所幫助。新函數我將它稱爲MustINPUT,並將它稱爲文本框的LostFocus,您不希望從out輸入中移出文本框。

Private Sub MyTextBox_LostFocus() 
    Call MustINPUT (Me.MyTextBox, 0) 
End Sub 

只是爲您的用戶更改消息。

Sub MustINPUT(ctl As Control, iMaxLen As Integer) 

'Call MustINPUT(Me.txtSayThis, 0) 

    If Len(ctl.Text) = iMaxLen Then 
     MsgBox "Please Type something", vbExclamation, "Input Needed" 
     ctl.Text = Left(ctl.Text, iMaxLen) 
     ctl.SelStart = iMaxLen 
    End If 

End Sub 

希望得到這個幫助。 DR,