有人可以帮我处理执行以下操作的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.
答案 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