根据单个列标题检查/更新一行值

时间:2008-10-27 07:41:00

标签: database vba ms-access access-vba

我有很多表的数据库。在第一个表格中,我有一个名为status的字段。

table 1
idno   name    status
111    hjghf   yes
225    hjgjj   no
345    hgj     yes

其他表格可以包含不同字段的idno

我想检查每个id no的状态,如果是,那么对于所有null和空白字段的所有表中的id号,我想将它们更新为111111.

我正在寻找一个可以适应的示例vba代码。

由于

2 个答案:

答案 0 :(得分:0)

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首选项。< / p>

答案 1 :(得分:-1)

这是一些很大程度上未经测试的代码。希望它会给你一个开始。

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