2017-04-26 45 views
0

我花了大約十分鐘試圖找到描述我的問題的最佳問題,所以它可能不是最好的問題。Access 2016:如何根據條目數據在特定表格中保存表單條目數據?

我正在做一個數據庫從頭開始練習。這是什麼,我有一個簡短的解釋:

我有表A,B,C,和d .------ A,B,C,d是部件號。

然後我有一個表格,我必須輸入零件編號,日期,溫度,名稱,RESULT1和RESULT2。

這裏就是我想要做: - 如果我輸入編號A,我要保存的所有信息在表A - 如果我輸入部件號B,我要保存的所有信息在表B中。 - 與部件號的其餘部分相同。

什麼是做到這一點的最簡單的方法?

謝謝大家的意見。

+3

我想真正的問題是爲什麼有多個零件表? –

+0

現在我想,我想我可以只有一個表格,而且我總是可以過濾或導出它,以便通過零件號查看它。當我輸入結果時,我真正想要的是通過或失敗,因此每個零件號碼都有不同的限制。 –

+1

那麼你需要問SQL相關的問題,因爲這種類型的數據過濾是什麼SQL是好的 –

回答

0

這其實是很簡單的事,但最終的結果是從「正常化」,因此我強烈建議你把所有的數據在一個表中,有一個「PartNum」字段或東西,所以它可以是很遠必要時進行過濾。

但是,爲了回答你的問題......你可以做到這一點的方法就是使用unbound form。如果您沒有將特定的表格作爲表單的源數據關聯,則它被視爲未綁定。相比之下,如果您將表單綁定到特定的表格,然後將這些字段綁定到控件,只要您在表單中輸入數據,它會立即寫入表格。使用未綁定的表單可以完全控制寫入的數據和寫入的表。

因此,在使用未綁定的形式,你可以簡單地把表單上的「保存」按鈕,並把VBA在這個按鈕的onclick事件。在按鈕的OnClick事件中,您可以檢查PartNum字段,並根據該值寫入相應的表格。

例如:

Public Sub btnSave_OnClick() 
dim db as Database 
dim rec as Recordset 

Set db = CurrentDb 
'Find out which table to write to 
if Me.PartNum.Text = "A" then 
    MyTable = "PartNumA" 
elseif Me.PartNum.Text = "B" then 
    MyTable = "PartNumB" 
else (etc...) 
end if 

Set rec = db.OpenRecordset("Select * from " & MyTable & "") 
rec.AddNew 
rec("PartNum") = Me.PartNum.Text 
rec("Date") = Me.Date.Text 
rec("Temperature") = Me.Temperature.Text 
etc... 
rec.Update 

rec.Close 
db.Close 
End Sub 

以上完全是 「aircode」;完全未經測試和假設,但可能非常接近你實際寫的內容。

+0

Jhonny-謝謝你花時間回答我的問題。對我來說,回答我的問題是有道理的。不過,我打算使用這個數據庫來記錄每天20次測試。你會推薦兩種選擇中的哪一種,所以數據庫在這段時間內不會變慢? –

+0

只要表格已正確編制索引,我就可以使用Access表,最多可創建500,000條記錄,不存在任何問題。我肯定會推薦使用規範化的表格,它只是讓生活更輕鬆。那麼你不必編寫任何額外的代碼來知道你正在使用哪張表。不過,我仍然建議使用未綁定的表單,在寫入記錄之前取消記錄要比使用綁定表單更容易。 –

相關問題