Приветствую, уважаемые форумчане!
Начитавшись об "отвязаном рекордсете" склепал форму. На форму положил подчиненную. На загрузку главной ставлю процедуру:
Private Sub Form_Load()
Dim S As String
Dim Sf As String
Sf = "KodDv= " & Forms!frm_Glavnaya!ID & " And ID <= " & CStr(ID)
S = "SELECT DCount(""ID"",""tb_DannyhSub"", """ & Sf & """) AS npp, tb_DannyhSub.ID, tb_DannyhSub.KodDv, "
S = S & "tb_DannyhSub.KodMater, tb_DannyhSub.Kolvo, tb_DannyhSub.Cena, tb_DannyhSub.Summa, tb_DannyhSub.RecAdd, tb_DannyhSub.OprAdd, "
S = S & "tb_DannyhSub.RecEdit, tb_DannyhSub.OprEdit FROM tb_DannyhSub "
S = S & "WHERE tb_DannyhSub.KodDv = " & [Forms]![frm_Glavnaya]![ID]
S = S & " ORDER BY tb_DannyhSub.ID;"
Set mrst = CreateObject("ADODB.Recordset")
mrst.CursorLocation = adUseClient '3
mrst.Open S, CurrentProject.AccessConnection, 3, adLockBatchOptimistic ', 4
mrst.ActiveConnection = Nothing
Set Forms("frm_Glavnaya")("frm_GlavnayaSub").Form.Recordset = mrst
End Sub
Форма отрабатывает нормально: запускается, отображает данные, возможно редактирование данных в форме.
Для выхода из формы без сохранения код:
Private Sub bnCancel_Click()
mrst.Close
Set mrst = Nothing
DoCmd.Close
End Sub
Команда отрабатывает без проблем.
Для выхода из формы с сохранением код:
Private Sub bnSave_Click()
On Error GoTo Err_bnSave_Click
Set mrst.ActiveConnection = CurrentProject.AccessConnection
mrst.UpdateBatch
mrst.Close
Set mrst = Nothing
Exit_bnSave_Click:
DoCmd.Close
Exit Sub
Err_bnSave_Click:
MsgBox Err.Description
Resume Exit_bnSave_Click
End Sub
И вот тут варианты:
1) если в подчиненную форму никаких изменений не вносилось, то код отрабатывает нормально.
2) если в подчиненную форму внесены изменения, то получаю ошибку "Не удается найти строку для обновления. Некоторые значения могли быть изменены со времени ее последнего чтения".
Что делать ума не приложу. Помогите пожалуйста.
http://www.sql.ru/forum/1079897/otvyazanyy-rekordset