2017-04-26 77 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条记录,不存在任何问题。我肯定会推荐使用规范化的表格,它只是让生活更轻松。那么你不必编写任何额外的代码来知道你正在使用哪张表。不过,我仍然建议使用未绑定的表单,在写入记录之前取消记录要比使用绑定表单更容易。 –

相关问题