MS Access VBA,尝试更新一个表并从另一个表中删除

李维特

我正在使用MS Access VBA并尝试:

  • 根据我的SQL查询更新一个表的行,并
  • 从另一个表中删除行。

我的VBA代码:

Private Sub btnAddWorkID21_Click()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim sql As String
Set dbs = CurrentDb

sql = "SELECT f.FinancesID, " _
           & "f.CustomerID, " _
           & "f.FinancesDate, " _
           & "f.Price AS FinPrice, " _
           & "f.PriceLaser, " _
           & "f.PaymentID, " _
           & "iif(f.ReceiptYesNo='No',1,2) AS receipt_id, " _ 
           & "iif(f.FinancesMemo is null,'',f.FinancesMemo) AS FinMemo, " _
           & "a.AppointmentID, " _
           & "a.CustomerID, " _
           & "a.AppointmentDate, " _
           & "a.Price, " _
           & "a.WorkID " _
        & "FROM " _
           & "(SELECT s.*, IIf(s.PriceLaser>0,21,0) AS WorkID " _
              & "FROM tblFinances AS s) AS f " _
        & "LEFT JOIN " _
           & "tblAppointment AS a ON " _
              & "(f.WorkID=a.WorkID) AND " _
              & "(f.PriceLaser=a.Price) AND " _
              & "(f.Price=a.Price) AND " _
              & "(f.FinancesDate=a.AppointmentDate) AND " _
              & "(f.CustomerID=a.CustomerID) " _
         & "WHERE a.AppointmentID IS NOT NULL;"

Set rst = dbs.OpenRecordset(sql, dbOpenDynaset)
With rst
    Do Until .EOF
        If !AppointmentID > 0 Then
             sql = "UPDATE [tblAppointment] SET [FinPrice] = " & !FinPrice & " , " _
                    & "[PaymentID] = " & !PaymentID & " , " _
                    & "[ReceiptYesNo] = " & !receipt_id & " , " _
                    & "[FinancesMemo] = '" & !FinMemo & "' " _ 
                    & "WHERE [AppointmentID] = " & !AppointmentID & " ;"
             dbs.Execute (sql)
             sql = "DELETE * FROM [tblFinances] WHERE [FinancesID] = " & !FinancesID & " ;"
             dbs.Execute (sql)
        End If
        .MoveNext   <===== ERROR ======>
    Loop
End With

MsgBox "All done...", vbYes

rst.Close
dbs.Close
End Sub

我收到错误3167。因为我已删除,所以找不到ID。

我该如何解决此错误。

完善

考虑避免VBA循环和DAO记录集和运行一个单一的,因为MS Access支持SQL语句UPDATE...JOIN上未查询只读和支持IIF表达。

更高效的是,将以下内容另存为Access引擎的存储查询,以保存最佳执行计划(需要JOIN优化)。

的SQL

UPDATE [tblAppointment] a
LEFT JOIN [tblFinances] f
  ON f.PriceLaser = a.Price AND
     f.Price = a.Price AND
     f.FinancesDate = a.AppointmentDate AND
     f.CustomerID = a.CustomerID
  
SET a.[FinPrice] = f.[Price]
  , a.[PaymentID] = f.[PaymentID]
  , a.[ReceiptYesNo] = IIF(f.ReceiptYesNo = 'No', 1, 2) 
  , a.[FinancesMemo] = IIF(f.FinancesMemo IS NULL, '', f.FinancesMemo)

VBA

Private Sub btnAddWorkID21_Click()
   DoCmd.OpenQuery "myUpdateQuery"     ' NO NEED TO CLOSE ACTION QUERIES
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用另一个表中的值更新ms-access表中的值

来自分类Dev

MS Access:更新表中的值以匹配另一个表的 ID 字段

来自分类Dev

MS-Access 2016 - 根据另一个表中的记录更新记录

来自分类Dev

MS Access SQL:基于另一个表中的总和从一个表中返回数据

来自分类Dev

MS-Access - 使用加入另一个表的结果更新列

来自分类Dev

SQL / MS Access:在SQL表中添加一个自动更新的字段,其中包含来自另一个表的值的总和

来自分类Dev

如何使用 ms-access 中的更新查询计算另一个表中的特定值?

来自分类Dev

从ms Access数据宏中的另一个表中获取数据

来自分类Dev

MS Access:将当前记录中的值插入另一个表

来自分类Dev

MS Access ?:如何将信息从另一个链接表中提取到表中

来自分类Dev

什么是MS Access查询,可以返回一个表中的所有结果,如果是另一个表,则为是/否

来自分类Dev

MS Access 查询以获取记录的子串并与另一个表比较丢失

来自分类Dev

MS ACCESS-根据另一个字段的条件从表中动态检索记录

来自分类Dev

将Complete RecordSet插入到其他数据库MS Access中的另一个表

来自分类Dev

检查记录是否与另一个MS Access VBA / SQL匹配

来自分类Dev

基于另一个查询的MS Access SQL更新查询

来自分类Dev

MS Access 查找和更新另一个字段

来自分类Dev

使用C#将表从一个MS Access数据库传输到另一个数据库

来自分类Dev

使用MS Access中的VBA将附件从一个记录集中的记录复制到另一个记录中的记录

来自分类Dev

如何在Access中使用另一个表的联接从一个表中删除项目?

来自分类Dev

MS Access:将多个查询合并到一个表中

来自分类Dev

MS SQL Server,基于另一个表创建和更新表

来自分类Dev

SQL联接和MS Access-如何将多个表组合为一个?

来自分类Dev

MS Access查询输入必须至少包含一个表或查询

来自分类Dev

MS Access:多表形式,其中一个表被调用两次

来自分类Dev

如何使用来自另一个表Microsoft Access的查询更新表

来自分类Dev

MS Access“无效过程调用”将电子邮件地址的前半部分与另一个表中的电子邮件地址进行匹配

来自分类Dev

MS-Access 2016中的“同一个表” LEFT JOINE ON“同一个命令字段”

来自分类Dev

来自另一个表的MS SQL 2005更新记录

Related 相关文章

  1. 1

    使用另一个表中的值更新ms-access表中的值

  2. 2

    MS Access:更新表中的值以匹配另一个表的 ID 字段

  3. 3

    MS-Access 2016 - 根据另一个表中的记录更新记录

  4. 4

    MS Access SQL:基于另一个表中的总和从一个表中返回数据

  5. 5

    MS-Access - 使用加入另一个表的结果更新列

  6. 6

    SQL / MS Access:在SQL表中添加一个自动更新的字段,其中包含来自另一个表的值的总和

  7. 7

    如何使用 ms-access 中的更新查询计算另一个表中的特定值?

  8. 8

    从ms Access数据宏中的另一个表中获取数据

  9. 9

    MS Access:将当前记录中的值插入另一个表

  10. 10

    MS Access ?:如何将信息从另一个链接表中提取到表中

  11. 11

    什么是MS Access查询,可以返回一个表中的所有结果,如果是另一个表,则为是/否

  12. 12

    MS Access 查询以获取记录的子串并与另一个表比较丢失

  13. 13

    MS ACCESS-根据另一个字段的条件从表中动态检索记录

  14. 14

    将Complete RecordSet插入到其他数据库MS Access中的另一个表

  15. 15

    检查记录是否与另一个MS Access VBA / SQL匹配

  16. 16

    基于另一个查询的MS Access SQL更新查询

  17. 17

    MS Access 查找和更新另一个字段

  18. 18

    使用C#将表从一个MS Access数据库传输到另一个数据库

  19. 19

    使用MS Access中的VBA将附件从一个记录集中的记录复制到另一个记录中的记录

  20. 20

    如何在Access中使用另一个表的联接从一个表中删除项目?

  21. 21

    MS Access:将多个查询合并到一个表中

  22. 22

    MS SQL Server,基于另一个表创建和更新表

  23. 23

    SQL联接和MS Access-如何将多个表组合为一个?

  24. 24

    MS Access查询输入必须至少包含一个表或查询

  25. 25

    MS Access:多表形式,其中一个表被调用两次

  26. 26

    如何使用来自另一个表Microsoft Access的查询更新表

  27. 27

    MS Access“无效过程调用”将电子邮件地址的前半部分与另一个表中的电子邮件地址进行匹配

  28. 28

    MS-Access 2016中的“同一个表” LEFT JOINE ON“同一个命令字段”

  29. 29

    来自另一个表的MS SQL 2005更新记录

热门标签

归档