以一种形式创建多个记录。每条记录只有一个字段更改

时间:2015-10-20 20:04:24

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

在我工作的地方,我们从客户那里收到电子仪表并尝试解决他们所遇到的错误。我们将同时收到4-8米的所有问题,相同的规格,相同的一切,每个仪表之间唯一不同的是序列号。我希望能够以一种形式输入每个序列号和常用规格来创建多个记录。

这是我对表格的照片。我一次只能为一个序列号创建记录,但我想一次性完成所有操作,以便更快更轻松地输入数据。

Meter Entry Form

总结,多米,所有相同的规格,不同的序列号。我想将它全部输入到表单中并创建多个记录。感谢您提供给我的任何帮助或见解。

-Chris

1 个答案:

答案 0 :(得分:2)

您可以将子表单绑定到存储计量表记录的表,然后在主表单上放置一些未绑定的字段,以允许您输入将在您的批记录中重复的信息。您还可以在主窗体上放置另一个未绑定的文本框,以指定您希望具有此重复信息的记录数。

因此,在下面的模型中,您可以指定所需的记录数(红框),例如10条记录:

enter image description here

然后你将提供将为这10条记录重复的数据(蓝框):

enter image description here

然后,您可以单击一个按钮,该按钮将创建使用重复信息指定的记录数:

enter image description here

这样就可以完成您生成的批次中每条记录的唯一序列号。

这是我在“添加”按钮上使用的VBA:

Private Sub cmdAddRecords_Click()

    batchAdd Me.txtRecords
    Me.tblMeters_sub.Requery

End Sub

...以及它调用的batchAdd子例程:

Public Sub batchAdd(records As Integer)

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim i As Integer

    Set db = CurrentDb
    Set rs = db.OpenRecordset("tblMeters")

    i = 1

    Do While i <= records

        rs.AddNew
        rs!SerialNumber = ""
        rs!MeterFirmware = Me.MeterFirmware
        rs!MeterCatalog = Me.MeterCatalog
        rs!Customer = Me.Customer
        rs!MeterKh = Me.MeterKh
        rs!MeterForm = Me.MeterForm
        rs!MeterType = Me.MeterType
        rs!MeterVoltage = Me.MeterVoltage
        rs.Update

        i = i + 1

    Loop

    rs.Close
    Set rs = Nothing
    Set db = Nothing

End Sub

Here's a link to the mock-up(如果你想仔细看看)。

<强>更新

在回答您关于是否可以过滤子窗体的查询时,它不仅仅成为所有仪表的大列表,您可以在 tblMeters 表中添加另一个字段来获取日期和记录添加到表中的时间:

enter image description here

然后,您需要在batchAdd子元素中添加另一行,将系统时间和日期放在此新字段中:

...

Do While i <= records

    rs.AddNew
    rs!SerialNumber = ""
    rs!MeterFirmware = Me.MeterFirmware
    rs!MeterCatalog = Me.MeterCatalog
    rs!Customer = Me.Customer
    rs!MeterKh = Me.MeterKh
    rs!MeterForm = Me.MeterForm
    rs!MeterType = Me.MeterType
    rs!MeterVoltage = Me.MeterVoltage
    rs!DateAdded = Now                  ' <-- HERE!
    rs.Update

    i = i + 1

Loop

...

然后,您需要更改子窗体的Record Source属性(Design View&gt; select subform&gt; Property Sheet&gt; Data tab&gt; Record Source):

enter image description here

将以下SQL放在那里:

SELECT TOP 15 tblMeters.SerialNumber, tblMeters.MeterFirmware, tblMeters.MeterCatalog, 
tblMeters.Customer, tblMeters.MeterType, tblMeters.MeterForm, tblMeters.MeterKh, 
tblMeters.MeterVoltage, tblMeters.DateAdded 
FROM tblMeters 
ORDER BY tblMeters.DateAdded DESC;

...将按日期/时间字段(最近的顶部)排序记录,然后仅显示这些记录的前15个。如果您想要不同数量的记录,请将TOP 15位更改为您选择的其他数字。

当您点击“添加”时,您的新批记录应添加到列表顶部,列表最多应保留15条记录(或您在TOP ...中指定的任何数字)

请注意,当我测试它时,快速单击“添加”按钮几次似乎会导致sql不打扰TOP ...过滤器,但只要在每个过滤器之间有一秒钟或更长时间“添加”点击它似乎工作正常。

希望这有帮助。