Ответить на сообщение
Вернуться к теме
Вы отвечаете на сообщение:
ник: Дядя Федор Вопрос в том, что отменять и сколько. 1.Отменить изменения 2.Отменить удаления записей 3.Отменить добавленные записи. Если полей и изменений немного можно использовать свои методы необязательно с таблицами. Если много - транзакции.Но. Транзакции, если я не ошибаюсь, не отменяют удаление, а также не позволяют обновлять форму при добавлении, если только она не табличная. Нет? Пример без транзакций. На форме поля DataPr, KolOtgr (Дата и Количество)
Dim idnew As String, idnewizm As String Private Sub DataPr_AfterUpdate() idnewizm = idnewizm & ";" & Me.IdPred & ";" & Me.DataPr & ";" & Me.KolOtgr & ";" 'Me.IdPred - Id Me.Requery End Sub Private Sub KolOtgr_AfterUpdate() idnewizm = idnewizm & ";" & Me.IdPred & ";" & Me.DataPr & ";" & Me.KolOtgr & ";" Me.Requery End Sub .... На добавление записи ... idnew = idnew & Me.IdPred & ";" .... На кнопку "Отменить" вызов проц. OTKAT: Public Sub OTKAT() Dim rst As DAO.Recordset, j As Integer, vmasdel As Variant, jj As Integer Me.RecordSource = Me.RecordSource 'это для подч формы можно не применять On Error GoTo errortkat 'Отменяем добавленные записи If idnew <> "" Then vmasdel = Split(idnew, ";") Set rst = Me.RecordsetClone With rst If .RecordCount > 0 Then .MoveFirst For j = 0 To UBound(vmasdel) - 1 .FindFirst "IdPred=" & vmasdel(j) .Delete Next j End If End With End If Me.Requery: Me.Refresh Set rst = Nothing idnew = "" ''Отменяем изменения в записях If idnewizm <> "" Then vmasdel = Split(idnewizm, ";") Set rst = Me.RecordsetClone With rst .MoveFirst 'IdPred For j = 1 To UBound(vmasdel) - 1 Step 3 .FindFirst "IdPred=" & vmasdel(j) .Edit !DataPr = vmasdel(j + 1) !KolOtgr = vmasdel(j + 2) .Update Next j End With Set rst = Nothing idnewizm = "" End If Me.Requery On Error Resume Next DoCmd.GoToRecord , , acLast Exit Sub errortkat: MsgBox "Err" & "тартаата" End Sub
Ваше имя:
Пароль:
Сообщение:
Прикрепить:
Для вставки смайлов в текст щелкните по значку.