我有很多表的数据库。在第一个表中,我有一个名为 status
的字段。
table 1
idno name status
111 hjghf yes
225 hjgjj no
345 hgj yes
其他表可以具有具有不同字段的相同idno
。
我想检查每个 id no 的状态,如果它是肯定的,那么对于所有空字段和空白字段的所有表中的该 ID 号,我想将它们更新为111111。
我正在寻找可以适应的示例 vba 代码。
谢谢
MS Access 的多表更新语法:
UPDATE Table2
INNER JOIN Table1
ON Table2.idno = Table1.idno
SET Table2.salary = 111111
WHERE Table1.status = 'yes'
AND Table2.salary Is Null
您可以进入 SQL View 进行查询,将其粘贴到其中,然后运行查询,或将其分配给字符串并使用 CurrentDb.Execute 或 CurrentProject.Connection.Execute,具体取决于您的 DAO/ADO 首选项。
这里有一些基本上未经测试的代码。希望它能给你一个开始。
Sub UpdateNulls()
Dim strSQL As String
Dim rs As DAO.Recordset
For Each tdf In CurrentDb.TableDefs
If Left(tdf.Name, 4) <> "Msys" And tdf.Name <> "Table1" Then
strSQL = "Select * From [" & tdf.Name & "] a Inner Join " _
& "Table1 On a.idno = Table1.idno Where Table1.Status = 'Yes'"
Set rs = CurrentDb.OpenRecordset(strSQL)
Do While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
If IsNull(rs.Fields(i)) Then
rs.Edit
rs.Fields(i) = 111111
rs.Update
End If
Next
rs.MoveNext
Loop
End If
Next
End Sub