用于查询查询中的数据并将其与表匹配的命令按钮

时间:2018-02-24 16:20:32

标签: database vba ms-access

有人可以帮我处理执行以下操作的VBA代码吗?

在Access DB中给出查询“Query1”和表“Table1” 我想创建一个命令按钮来循环查询Query1,查找并匹配一个字段。

Lookup [Query1].[number]=[Table1].[number]                    
set [Table1].[length]=[Query1].[Tlength]              

对于Query1中的所有数字

表1中并非所有数字都存在于Query1

(我目前在表单中有table1字段,如果我在查询中进行此操作,我将无法在表单中添加新的数字条目,这就是为什么我要创建宏命令按钮表格更新表格中的长度字段

因此,当按下命令按钮时,table1 Tlength将按原样更新:

查询1:

Number | Length                                                         
N001   | 120                                         
N005   | 60                                        
N006   | 50        
ect.        

表1:

Number   |  Tlength            
N001     |   120              
N002     |  
N003     |                                        
N005     |   60                
N006     |   50                          
ect.

2 个答案:

答案 0 :(得分:0)

这可以通过非常简单的更新查询来实现。

如果Query1是可更新的查询,我们可以使用INNER JOIN构建更新查询:

UPDATE Table1 INNER JOIN Query1 ON Table1.[Number] = Query1.[Number]
SET Table1.TLength = Query1.[Length]

但是,如果Query1不可更新,我们需要使用DLookUp

UPDATE Table1
SET Table1.TLength = DLookUp("Length", "Query1", "[Number] = '" & [Number] & "'")

您可以使用宏或VBA轻松执行SQL按钮。

答案 1 :(得分:0)

我使用以下代码运行它,因为我的Table1是带有Number和Length的“Wire_Designation”,而Query1是带有Number和Tlength的Total_Length_Query。当我运行它,它的工作原理。但是,如果我之后尝试保存数据库,数据库会给我一个错误,我没有对数据库的独占访问权限,我将不得不关闭并重新打开数据库。有谁知道原因?

  Dim MyRst As DAO.Recordset  
  Dim MyRst As Recordset
  Set MyRst = CurrentDb.OpenRecordset("Wire_Designation")
  MyRst.MoveFirst
  Do Until MyRst.EOF
     MyRst.Edit
     MyRst![Length] = DLookup("Tlength", "Total_Length_Query", "[Number] = '" & 
     MyRst![Number] & "'")
     MyRst.Update
     MyRst.MoveNext
  Loop
  MyRst.Close
  Set MyRst = Nothing