| 
 | 
| 
 
ishu DAO CommitTrans, Rollback code 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  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-) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 04.10.2002, 22:57 | 
  
  
  
   | 
||
| 
 
ishu DAO CommitTrans, Rollback code 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Следующая программа изменяет в таблице "Сотрудники" название должности всех коммерческих представителей.  После запуска с помощью метода 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 ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 05.10.2002, 00:11 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=45&fpage=1845&tid=1683202]:  | 
    0ms | 
get settings:  | 
    10ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    38ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    42ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 232ms | 
| total: | 357ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.