powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ishu DAO CommitTrans, Rollback code
2 сообщений из 2, страница 1 из 1
ishu DAO CommitTrans, Rollback code
    #32055677
polina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zdrasti,

Y menya takaya problema: kogda ya insert dannie iz odnoi tablizi v druguyu, ya hochu esli chto-to v prozesses sluchaetsya, chto bila vozmoghnost' otmenit' INSERT i DELETE, tak chto bi ya ne ostalas' s pustoi tablizei v sluchae chego.

Ya znayu chto dlya etogo ispolzuyut CommitTranst, Rollback
Pomogite mne s kodom poghaluista.

U menya est' code dlay ADO, no ya hochu ego ispolzovat'

Mne nughno toghe samoe, tolko s DAO:

Dim cnn As ADODB.Connection

Dim lngAffected As Long

Dim bolBeginTrans As Boolean

On Error GoTo ErrHandler

bolBeginTrans = False

Set cnn = CurrentProject.Connection

cnn.BeginTrans
bolBeginTrans = True

cnn.Execute "Select * into TEST from Configuration", lngAffected, adExecuteNoRecords
cnn.Execute "DELETE * FROM tblABC..."

cnn.CommitTrans
bolBeginTrans = False
Set cnn = Nothing

'********************
'* Exit Procedure *
'********************

ExitProcedure:

Exit Sub

'****************************
'* Error Recovery Section *
'****************************

ErrHandler:

MsgBox Err.Description, vbExclamation

If (bolBeginTrans) Then
cnn.RollbackTrans
bolBeginTrans = False
End If

Resume ExitProcedure

End Sub


Spasibo-)
...
Рейтинг: 0 / 0
ishu DAO CommitTrans, Rollback code
    #32055692
Фотография RatTail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следующая программа изменяет в таблице "Сотрудники" название должности всех коммерческих представителей. После запуска с помощью метода BeginTrans транзакции, в которой выделяются все изменения, вносимые в таблицу "Сотрудники", метод CommitTrans вызывается для сохранения изменений. Отметим, что метод Rollback позволяет отменить все изменения, занесенные с помощью метода Update. Более того, главная транзакция является вложенной в другую транзакцию, которая автоматически отменяет любые изменения, внесенные пользователем при работе с данным примером.

Пока пользователь решает, стоит или нет сохранять изменения, одна или несколько страниц таблицы остаются заблокированными. Поэтому данный прием не может быть рекомендован для использования и приводится только для иллюстрации.

Sub BeginTransX()

Dim strName As String
Dim strMessage As String
Dim wrkDefault As Workspace
Dim dbsNorthwind As Database
Dim rstEmployees As Recordset

' Определяет стандартный объект Workspace.
Set wrkDefault = DBEngine.Workspaces(0)
Set dbsNorthwind = OpenDatabase("Борей.mdb")
Set rstEmployees = _
dbsNorthwind.OpenRecordset("Сотрудники")

' Запускает внешнюю транзакцию.
wrkDefault.BeginTrans
' Запускает главную транзакцию.

wrkDefault.BeginTrans

With rstEmployees

' Выполняет цикл по набору записей и спрашивает пользователя,
' следует ли изменять должность конкретного сотрудника.
Do Until .EOF
If !Должность = "Коммерческий представитель" Then
strName = !Фамилия & ", " & !Имя
strMessage = "Сотрудник: " & strName & vbCr & _
"Изменение должности"

' Изменяет должность указанного сотрудника.
If MsgBox(strMessage, vbYesNo) = vbYes Then

.Edit
!Должность = "Счетовод"
.Update
End If
End If

.MoveNext
Loop

' Запрашивает пользователя, следует ли занести
' все ранее сделанные изменения.
If MsgBox("Сохранить все изменения?", vbYesNo) = vbYes Then
wrkDefault.CommitTrans
Else
wrkDefault.Rollback
End If

' Печатает текущие данные из набора записей.
.MoveFirst
Do While Not .EOF
Debug.Print !Фамилия & ", " & !Имя & _

" - " & !Должность
.MoveNext
Loop

' Отменяет все изменения, внесенные пользователем,
' поскольку программа предназначена только для демонстрации.
wrkDefault.Rollback
.Close
End With

dbsNorthwind.Close

End Sub
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / ishu DAO CommitTrans, Rollback code
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]