在我工作的地方,我们收到客户发来的电子仪表,并尝试解决他们遇到的错误。我们一次会收到 4-8 个米,它们都有相同的问题、相同的规范、相同的一切,每个米之间唯一不同的是序列号。我希望能够以一种形式输入每个序列号和通用规范来创建多个记录。
这是我的表格的图片。我一次只能为一个序列号创建记录,但我想一次完成所有操作,以使数据输入更快、更轻松。
总结一下,多个仪表,所有相同的规范,不同的序列号。我想将其全部输入到表单中并创建多个记录。感谢您为我提供的任何帮助或见解。
-克里斯
最佳答案
您可以将子表单绑定(bind)到存储仪表记录的表,然后在主表单上添加一些未绑定(bind)的字段,以允许您输入将在批处理记录中重复的信息。您还可以在主窗体上放置另一个未绑定(bind)的文本框,以指定您想要包含此重复信息的记录数。
因此,在下面的模型中,您需要指定所需的记录数(红色框),例如10 条记录:
然后您需要提供将为这 10 条记录重复的数据(蓝色框):
然后,您可以单击一个按钮,该按钮将创建使用给定的重复信息指定的记录数:
这将只是一个案例,为您生成的批处理中的每条记录填写唯一的序列号。
这是我在“添加”按钮上使用的 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 表添加另一个字段来获取日期以及您向表中添加记录的时间:
然后,您需要向 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
...
然后,您需要更改子窗体的记录源属性(设计 View > 选择子窗体 > 属性表 > 数据选项卡 > 记录源):
将以下 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 ...
过滤器,但只要有类似每次“添加”点击之间有一秒钟或更长时间,似乎工作正常。
希望这有帮助。
关于ms-access - 在一种表单中创建多个记录。每条记录仅更改一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33245849/