在一个表单中创建多个记录。每条记录仅更改一个字段
Create Multiple Records in One Form. Only One Field Changes per Record
在我工作的地方,我们收到客户寄来的电子仪表,并尝试解决他们遇到的错误。我们将一次收到 4-8 台仪表,它们都有相同的问题、相同的规格、相同的一切,每台仪表之间唯一不同的是序列号。我希望能够以一种形式输入每个序列号和通用规格以创建多个记录。
这是我为表格准备的照片。我一次只能为一个序列号创建记录,但我想一次完成所有操作,以便更快、更轻松地输入数据。
所以总结一下,多个仪表,所有相同的规格,不同的序列号。我想将其全部输入到一个表单中并创建多个记录。感谢您提供给我的任何帮助或见解。
-克里斯
您可以将子表单绑定到存储您的仪表记录的 table,然后在您的主表单上有一些未绑定的字段,允许您输入将在您的记录批次中重复的信息。您还可以在主窗体上放置另一个未绑定的文本框,以指定您希望包含此重复信息的记录数。
所以在下面的模型中,您需要指定您想要的记录数(红框),例如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 table 将采用您将记录添加到 table:
的日期和时间
然后您需要向 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
...
然后您需要更改子窗体的记录源 属性(设计视图 > select 子窗体 > 属性 Sheet > 数据选项卡 > 记录源):
将以下 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;
... 这将按 date/time 字段(最新的在顶部)对记录进行排序,然后仅显示这些记录的前 15 条。如果您想要不同数量的记录,请将 TOP 15
位更改为您选择的不同数量。
当您点击“添加”时,您的新批次记录应该被添加到列表的顶部并且列表应该保持最多 15 条记录(或者您在 TOP ...
中指定的任何数量)
请注意,当我对此进行测试时,快速单击“添加”按钮几次似乎会导致 sql 不理会 TOP ...
过滤器,但只要有在每次“添加”点击之间间隔一秒或更长时间,它似乎工作正常。
希望对您有所帮助。
在我工作的地方,我们收到客户寄来的电子仪表,并尝试解决他们遇到的错误。我们将一次收到 4-8 台仪表,它们都有相同的问题、相同的规格、相同的一切,每台仪表之间唯一不同的是序列号。我希望能够以一种形式输入每个序列号和通用规格以创建多个记录。
这是我为表格准备的照片。我一次只能为一个序列号创建记录,但我想一次完成所有操作,以便更快、更轻松地输入数据。
所以总结一下,多个仪表,所有相同的规格,不同的序列号。我想将其全部输入到一个表单中并创建多个记录。感谢您提供给我的任何帮助或见解。
-克里斯
您可以将子表单绑定到存储您的仪表记录的 table,然后在您的主表单上有一些未绑定的字段,允许您输入将在您的记录批次中重复的信息。您还可以在主窗体上放置另一个未绑定的文本框,以指定您希望包含此重复信息的记录数。
所以在下面的模型中,您需要指定您想要的记录数(红框),例如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 table 将采用您将记录添加到 table:
的日期和时间然后您需要向 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
...
然后您需要更改子窗体的记录源 属性(设计视图 > select 子窗体 > 属性 Sheet > 数据选项卡 > 记录源):
将以下 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;
... 这将按 date/time 字段(最新的在顶部)对记录进行排序,然后仅显示这些记录的前 15 条。如果您想要不同数量的记录,请将 TOP 15
位更改为您选择的不同数量。
当您点击“添加”时,您的新批次记录应该被添加到列表的顶部并且列表应该保持最多 15 条记录(或者您在 TOP ...
中指定的任何数量)
请注意,当我对此进行测试时,快速单击“添加”按钮几次似乎会导致 sql 不理会 TOP ...
过滤器,但只要有在每次“添加”点击之间间隔一秒或更长时间,它似乎工作正常。
希望对您有所帮助。