设置 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 表以同时执行多条记录的主要内容,如果未能解决你的问题,请参考以下文章

Access多条SQL语句可不可以同时执行?

设置交换机端口trunk和access的区别

如何在oracle中 insert into 多条记录

用insert into 怎么添加多条记录

MS Access 2007 - 选择多条记录并将值分配给字段

如何使用VB.NET在Access数据库中插入多条记录