设置Access表以执行多个记录

时间:2014-01-14 20:17:59

标签: vba ms-access ms-access-2007 access-vba

我进行了一些研究,如何设置我的数据库,但我需要你的建议如何。

我的db中有几个表(db用于传入材料)在这个数据库中有以下表:

  1. 材料表
  2. 收货
  3. 测量
  4. 供应商
  5. 时间测量
  6. 让我解释这个db的逻辑。

    当交付时,用户将以表格(创建传入列表)输入一些数据,他将基本上输入开始接收过程所需的所有数据。因此,一旦他点击按钮保存记录,他将在表格中创建记录传入传送和时间测量。

    在此之前,一切都很完美。当下一个用户收到这个传入列表时,他得到了一些数据,其中有一个超链接到文件,在那里他们进行了测量。

    这就是我的问题。 我希望数据在Access中输入而不是excel(表单输入看起来更好[是的,这是最重要的原因:)])。 所以为此,我创建了一个名为测量的表,我计划输入[传入传递ID],[材料ID],[原始密钥],以及另外41个用于测量的列(这些列需要分开,因为我们有很多部分,每个获得不同的测量数量,用户将通过用户表单获取信息(根据材料ID打开不同的表格[本作品])。

    因此,在描述其逻辑之后,我要求人们如何在每次测量表中为测量表创建不同数量的测量时使用1记录到测量表。

    只是为了案例而言更简单。当用户点击按钮以保存在交货清单中创建记录的记录时,还将创建与传入交货链接的测量表中的附加5条记录(该数字将基于单元格值)。 (关系当然要设置为一对多)

    所以最后我会以某种方式为数据输入创建连续表。用户将看到他收到来信的表格。来自其他表格的一些信息,如上所述,41个项目要测量5次(41列和5行)

    希望我的解释清楚,并且需要你的帮助我被搞砸了:D

1 个答案:

答案 0 :(得分:1)

提示:

  1. 使用VBA自动创建记录。查找有关DAO和/或ADO以及如何使用它们插入记录的信息(我个人在使用Access时使用DAO,它可以工作,但它已经过时了。)
  2. 做好功课。在提出问题之前,进行研究并尝试自己解决问题非常重要。在问别人之前先试着帮助自己。 请阅读this article

  3. 也许这段代码可以帮到你。您需要从事件(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执行的示例。我不会(也许没有其他人会)为你编写完整的代码:你需要适应你的特定问题。