Проверить / обновить строку значений на основе заголовка одного столбца - PullRequest
1 голос
/ 27 октября 2008

У меня есть база данных со многими таблицами. В первой таблице у меня есть поле с именем status.

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

Другие таблицы могут иметь одинаковые idno с разными полями.

Я хочу проверить статус для каждого идентификатора нет, и если это да, то для этого идентификатора во всех таблицах для всех пустых и пустых полей я хочу обновить их как 111111.

Я ищу пример кода VBA для этого, который я могу адаптировать.

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 октября 2008

Синтаксис многостолового обновления для 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.

0 голосов
/ 27 октября 2008

Вот некоторый в значительной степени непроверенный код. Надеюсь, это даст вам старт.

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
...