ник: Гоблин
Все сделал! Сам же себя на мыслю и навел. Вот как оно работает: ID при открытии формы заполняется где оно есть. Далее заполняем форму, затем закрываем. ПРи закрытии пробегаем по всем строкам формы. Там где id заполнен, там он выступает в роли условия запроса на обновление результата. Там, где его нет, срабатывает запрос на добавление, после чего рекордсетом (новых строк может быть много добавлено) ставим новое знаение id в соответствующую строку, после чего по ней может работать только обновление. УСЕ
a = DCount("Параметр", "[Спр Биометрия]", "ОблИсследования='" & [Forms]![Пациенты]![подчиненная форма Протокол область].[Form]![ОбластьИсследования] & "'")
DoCmd.SetWarnings False
For i = 1 To a
If (Nz(Me("rez" & i), 0) <> 0 Or Nz(Me("L" & i), 0) <> 0 Or Nz(Me("H" & i), 0) <> 0 Or Nz(Me("w" & i), 0) <> 0 Or Nz(Me("T" & i), 0) <> 0) And Nz(Me("id" & i), 0) = 0 Then
CurrentDb.Execute "insert into Биометрия (КодПротОбл, Параметр, L, H, W, T) values ('" & Me.Поле1 & "', '" & Me("Надпись" & i).Caption & "', " _
& " " & Nz(Me("L" & i), 0) & ", " & Nz(Me("H" & i), 0) & ", " & Nz(Me("W" & i), 0) & ", " & Nz(Me("T" & i), 0) & " );"
Set rst = CurrentDb.OpenRecordset("SELECT Биометрия.КодБиометрии, Биометрия.Параметр, Биометрия.L, Биометрия.H, Биометрия.W, Биометрия.T, " _
& " [Протокол область].КодПротОбл FROM [Протокол область] RIGHT JOIN Биометрия ON [Протокол область].КодПротОбл = Биометрия.КодПротОбл " _
& " WHERE ((([Протокол область].КодПротОбл)=" & [Forms]![Пациенты]![подчиненная форма Протокол область].[Form]![КодПротОбл] & "));")
With rst
Do While Not .EOF
Me("id" & i) = !КодБиометрии
.MoveNext
Loop
End With
Else
If (Nz(Me("rez" & i), 0) <> 0 Or (Me("L" & i) <> 0 Or Nz(Me("H" & i), 0) <> 0 Or Nz(Me("H" & i), 0) <> 0 Or Nz(Me("T" & i), 0) <> 0)) And Nz(Me("id" & i), 0) <> 0 Then
MsgBox ("Обновляем значение" & " " & Me("Буква" & i))
DoCmd.RunSQL "UPDATE Биометрия SET Биометрия.L = " & Me("L" & i) & ", Биометрия.H = " & Me("H" & i) & ", Биометрия.W = " & Me("W" & i) & ", " _
& " Биометрия.T = " & Me("T" & i) & " WHERE (((Биометрия.КодБиометрии)=" & Me("id" & i) & "));"
End If
End If
Next i