设置 Access 表以同时执行多条记录
Posted
技术标签:
【中文标题】设置 Access 表以同时执行多条记录【英文标题】:Set up Access table to perform multiple records at time 【发布时间】:2014-01-14 20:17:58 【问题描述】:我进行了一些研究,我需要如何设置我的数据库,但我需要您的建议。
我的数据库中有几张表(数据库用于传入材料)在这个数据库中如下表:
-
材质表
收货
测量结果
供应商
时间测量
让我解释一下这个数据库的逻辑。
当交货到来时,用户将在表格中输入一些数据(创建收货列表),他基本上将输入开始接收过程所需的所有数据。因此,一旦他点击按钮保存记录,他将在表中创建记录传入交货和时间测量。
到目前为止,一切正常。当下一位用户收到这个传入列表时,他得到了一些数据,其中一个超链接指向他们放置测量值的文件。
我的问题来了。 我希望在 Access 中输入数据而不是在 Excel 中输入数据(表单输入看起来要好得多 [是的,这是最重要的原因 :)])。 因此,为此我创建了名为测量的表,我计划在其中输入 [incoming delivery ID]、[material id]、[primal key] 和另外 41 个用于测量的列(这些列需要分开,因为我们有很多部分,每个获得了不同的测量数量,用户将通过用户表单获取信息(根据材料 ID 打开不同的表单[此工作])。
所以在描述了它的逻辑之后,我问你们,我如何在每次测量表中为它创建不同数量的测量值时,如何在测量表中创建 1 条记录。
为了案例,把它更简单。当用户点击按钮保存在交货列表中创建记录的记录时,还将在与传入交货链接的测量表中创建例如额外的 5 条记录(此数量将基于单元格值)。 (关系当然设置为一对多)
所以最后我会以某种方式为数据输入创建连续表。用户将看到他从其他表中获得收货编号的表格,以及提到的 41 项测量 5 次(41 列和 5 行)
希望我的解释清楚,需要你的帮助,我搞砸了:D
【问题讨论】:
欢迎来到 ***。不幸的是,你的问题太广泛了,无法回答。您应该自己设计数据库,如果您需要有关特定问题的帮助,请提出您的问题。我可以建议您在网络或图书馆或书店中四处寻找有关数据库、数据库规范化和 MS-Access 的好书或教程。首先在纸上设计您的数据库。 另外,将同一个问题发布两次也不是一个好主意。如果您的问题被否决,那是因为它可以改进。编辑您的原始问题。请阅读:***.com/help/how-to-ask 和 whathaveyoutried.com 就其价值而言,Jon Viescas 的“运行 MS-Access”是一本好书(我从中学到了)。它有点旧(我在 1999 年买回来),但有一个关于数据库规范化的非常好的章节。 我刚刚删除了旧帖子。非常抱歉重复发布和先生。 Barranka 我不想再买书了,我的问题很简单,如何在来料表中创建 1 条记录,或者该确切记录根据表格中的特定值在测量表中创建 X 条记录。 *** 不是一个“为我做编码工作”的地方。您必须自己处理您的项目,如果您有与编程相关的具体问题,请提出您的问题。 【参考方案1】:提示:
-
使用 VBA 自动创建记录。查找有关
DAO
和/或ADO
以及如何使用它们插入记录的信息(我个人在使用Access 时使用DAO
,它可以工作,但它已经过时了)。
做好功课。在提出问题之前,进行研究并尝试自己解决问题很重要。在问别人之前尝试帮助自己。 请阅读this article。
也许这个sn-p代码可以帮助你。您需要从事件(button_clic
或表单中的其他内容)中调用此方法:
public sub addRecords(id as integer)
dim db as dao.database, rsIn as dao.recordset, rsOut as dao.recordset
dim strSQL as String
dim someValue as integer, i as integer ' Test values
' "Connect" to your current database
set db = currentdb
' Create a recordset with the input data you need (read only)
strSQL = "select * from tbl_inputTable where id=" & id
set rsIn = db.openrecordset(strSQL, dbOpenDynaset, dbReadOnly)
' Create a recordset to your output table
set rsOut = db.openRecorset("tbl_outputTable", dbOpenDynaset, dbAppendOnly)
' Read the data from the input table
with rsIn
.moveFirst
someValue = rsIn![aField]
end with
' Write some test data to your output table
with rsOut
for i = 1 to someValue
.addNew
rsOut![fk_id] = id
rsOut![theValue] = i
.update
next i
end with
' Close every recordset and databases (this does not close your application)
rsIn.close
rsOut.close
db.close
end sub
在您的输入表单中,在“点击时”事件中写下:
sub button1_click()
call addRecords(txtId.value) ' I am assuming that there's a text box called "txtId"
end sub
这只是您可以使用DAO
执行的操作的一个示例。我不会(也许没有其他人会)为你编写完整的代码:你需要根据你的具体问题来编写它。
【讨论】:
以上是关于设置 Access 表以同时执行多条记录的主要内容,如果未能解决你的问题,请参考以下文章