2014-05-13 85 views
0

我有一個窗體有3個不同的文本框和2個按鈕 - >保存並關閉。 2個TextBoxes不可見。這些不可見文本框中的1個是autoincrement整數,第二個具有表單的onLoad值。最後一個需要填寫。
我想要什麼:當用戶點擊按鈕「關閉」 - 即使可見的TextBox爲空,表格也會關閉。
我現在有什麼:當用戶點擊「關閉」按鈕 - 訪問與錯誤「文本框是空的」一起去。關閉窗體沒有錯誤

回答

1

這聽起來像你想控制記錄的保存。但在同一時間,我認爲你的表格設置爲Record Source。下面的演示如何控制的記錄保存自己:

我在設計視圖以下形式:

enter image description here

在它看起來像下面的正視圖:

enter image description here

我將表格上的Record Source設置爲空。

的3個文本框在這個演示的名稱是:txtField1txtField2txtField3

這裏是形式背後的代碼:

Private Sub cmdSave_Click() 
    If (Len(txtField3 & "") <> 0) Then 
    DoCmd.SetWarnings False 
    DoCmd.RunSQL "INSERT INTO yyy (Field2, Field3) " & _ 
       "VALUES ('" & txtField2 & "', '" & txtField3 & "')" 
    DoCmd.SetWarnings True 

    MsgBox "You have successfully saved the record.", , "SUCCESS" 
    Else 
    MsgBox "You must provide a value for Field 3 " & _ 
      "before saving the record." & vbNewLine & vbNewLine & _ 
      "The record was not saved.", , "MISSING INFORMATION" 
    End If 
End Sub 


Private Sub Form_Load() 
    txtField2 = "test" 
End Sub 


Private Sub cmdClose_Click() 
    On Error GoTo Err_cmdClose_Click 
    DoCmd.Close 
Exit_cmdClose_Click: 
    Exit Sub 
Err_cmdClose_Click: 
    MsgBox Err.Description 
    Resume Exit_cmdClose_Click 
End Sub 

當窗體打開txtField2自動獲得一個值。當用戶點擊Save按鈕時,代碼將檢查他們是否在txtField3中輸入了一個值。如果他們這樣做,則執行INSERT語句,並顯示一條表示記錄已成功保存的消息。如果他們沒有在txtField3中輸入一個值,則會顯示一條消息,表示他們無法保存記錄,直到他們提供一個值。

由於沒有設置表格的Record Source,您在關閉表格時沒有問題。

實際上,對於AutoNumber字段,您甚至不需要一個文本框。正如你在上面的例子中看到的,我不會在INSERT聲明中通過。數據庫將爲您處理。