【问题标题】:DAO Recordset with SQL Statement to Add Records with For Next Loop带有 SQL 语句的 DAO 记录集使用 For Next 循环添加记录
【发布时间】:2016-02-09 22:40:13
【问题描述】:

我知道这很愚蠢,但我想不通。下面的当前代码将满足 TxtBox1 条件的记录集插入到 TxtBox1 中,然后通过为满足 TxtBox2 条件的新记录集重写它们来擦除表中的数据。

我需要将 TxtBox1 中符合条件的记录集插入到表中,然后在循环时将记录集的下一次迭代添加到表中。 (不覆盖/删除第一个记录集返回)

Dim db As Database
Dim rst As DAO.Recordset
Dim rrow As Integer, strCmboNmbr As Integer
Dim start As Object

Set db = CurrentDb()

strCmboNmbr = (Left(Forms("Match Summary").Controls("CmbNum").Value, 1))

For rrow = 1 To strCmboNmbr 'lets say 2
  Set start = Forms("Match Summary").Controls("TxtBox" & rrow) 'TxtBox1, TxtBox2, etc.
    DoCmd.RunSQL "SELECT [Oracle JE].* INTO Unmatched FROM [Oracle JE] WHERE [Oracle JE].[Account Code]=" & start 'This is a MAKE Table Query
Next rrow

【问题讨论】:

    标签: sql ms-access for-loop dao recordset


    【解决方案1】:

    如果您不想覆盖表格,则需要在第一次运行后追加:

    If rrow = 1 then
        DoCmd.RunSQL "SELECT [Oracle JE].* INTO Unmatched FROM [Oracle JE] 
        WHERE [Oracle JE].[Account Code]=" & start 
    Else
        DoCmd.RunSQL "INSERT INTO Unmatched SELECT [Oracle JE].* FROM [Oracle JE] 
        WHERE [Oracle JE].[Account Code]=" & start 
    End
    

    理想情况下,您应该有一个预定义的表格。然后你可以添加一个主键和索引,先清除它,然后运行一系列追加。

    【讨论】:

    • 谢谢。在执行此步骤之前,我将创建一个包含所需字段的预定义表结构、添加主键、对其进行索引并清除它……正如您所建议的那样。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 2012-01-02
    • 2011-02-04
    相关资源
    最近更新 更多