如何在 Access VBA 中运行附加查询以根据表单字段中的数量创建一定数量的相同记录?

Posted

技术标签:

【中文标题】如何在 Access VBA 中运行附加查询以根据表单字段中的数量创建一定数量的相同记录?【英文标题】:How do I run an append query in Access VBA to create a certain number of identical records based on a quantity in a field on the form? 【发布时间】:2020-01-02 03:37:13 【问题描述】:

首先感谢您提供的任何帮助。

下面是我正在使用的附加查询 - 直截了当。在我提取引用的值的同一个表单上,有一个包含数量的字段。我希望引用这个数量来执行这个附加查询的次数。如果字段中的数量是 6,那么我希望追加查询运行 6 次。我知道这将是一个循环,但我生疏了,我在堆栈或网络上的其他地方找不到任何明确的例子。

再次感谢,

肖恩

到目前为止的代码:

Private Sub Command20_Click()

Dim strSQL As String

'*****Append record to table*****
strSQL = "INSERT INTO tblStructuresNoDAworking (StructName, State, Brand, Flavor_Sub, _
            Type, Size, Bottles_Case, Entry_Date) VALUES ('" & Me.Text90 & "','" & Me.Text26 _
            & "','" & Me.Text28 & "','" & Me.Text30 & "','" & Me.Text91 & "','" & Me.Text92_
            & "','" & Me.Text93 & "', '" & Now() & "')"

DoCmd.RunSQL (strSQL)

End Sub

【问题讨论】:

【参考方案1】:

首先,您应该将控件命名为有意义的名称。

第二,Now 不应该像你一样先转换成文本再转换成日期。直接插入:

& "','" & Me.Text93 & "', Now())"

然后,在 DAO 中使用循环会更快更干净。请参阅此处的示例:

Insert multiple records with a date range in MS Access

您可以轻松采用 Me.ComboDeal.Value 进行循环。

【讨论】:

感谢控件名称的提示、链接和 Now() 上的更正。【参考方案2】:

想通了。缩短了字段的数量以便于测试。

Private Sub Command20_Click()

DoCmd.SetWarnings False

Dim strSQL As String

'Define Loop Count
Dim I As Integer
For I = 1 To Me.ComboDeal.Value

'**Append record to table**
strSQL = "INSERT INTO tblStructuresNoDAworking (Structure_Name) _
          VALUES ('" & Me.Combo121 & "')"

DoCmd.RunSQL (strSQL)

Next I

DoCmd.SetWarnings True

End Sub

【讨论】:

为了好玩,将 Combobox 的值设置为包含引号' 的字符串。那 ts 称为 SQLInjection 并且可能会造成很大的麻烦!。如果您需要创建动态查询,请使用参数,! Thwy 还可以避免格式问题(例如日期)来使用必须使用 DAO 或 Adodb 连接的参数。避免使用 DoCmd.f.。请注意,您可以一次使用一个语句对多行进行离子插入,但通常记录集的插入速度更快。但是为什么需要插入同一个 vaue 多个定时器呢?这闻起来像是糟糕的标准化。 @ComputerVersteher 感谢您提供的信息,我会牢记这一点。我已经有很长一段时间没有从事一个项目了,并被要求看看我能想出什么。为这些字段多次插入相同的值,但是用户将通过弹出表单手动更改其他字段。这些字段将始终包含相同的值,而其他字段可能会更改。

以上是关于如何在 Access VBA 中运行附加查询以根据表单字段中的数量创建一定数量的相同记录?的主要内容,如果未能解决你的问题,请参考以下文章

关闭使用附加查询打开的 MS Access laccdb 文件

如何在 Access 中进行查询将 tempvar 识别为有效字段(参数)

在 Excel 中运行 VBA 代码以获取 Access 数据库中的 VBA

如何过滤 3 个文本框,然后在 MS Access VBA 中根据它们运行报告

如何在 VBA 代码中的 ms-access 中执行查询?

从 Excel VBA 运行嵌套的 Access SQL 查询