Как после редактирования вернуться к исходному?

Программирование на Visual Basic for Applications
OlafBond
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 08.04.2005 (Пт) 9:35

Как после редактирования вернуться к исходному?

Сообщение OlafBond » 16.04.2005 (Сб) 14:12

MS SQL Server + MS Access.

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

В этой же форме есть табличная форма, содержащая "шаблоны" создаваемых строк (получена запросом из таблицы Шаблонов).

Хочется, чтобы шаблоны были доступны для редактирования, но можно было отказаться от их обновления в таблице Шаблоны.
Например так: создаем рекордсет табличной формы, как-то отсоединяем его от источника, используем, при необходимости проводим синхронизацию с источником.

Есть ли такие механизмы?

OlafBond
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 08.04.2005 (Пт) 9:35

Сообщение OlafBond » 16.04.2005 (Сб) 18:50

Написал такое:

Dim cnnP As ADODB.Connection
Dim rstP As ADODB.Recordset

Private Sub Form_Open(Cancel As Integer)

Set cnnP = New ADODB.Connection
Set rstP = New ADODB.Recordset
Set cnnP = CurrentProject.Connection
cnnP.CursorLocation = adUseClient

rstP.Open "dbo.Шаблоны", cnnP, adOpenStatic, adLockBatchOptimistic
Set rstP.ActiveConnection = Nothing
Set Me.Recordset = rstP

End Sub


Все вроде бы отлично, но изменения в табличной форме не передаются в рекордсет:(
Если после редактирования данных в табличной форме запустить:

Private Sub Form_Close()

'Set rstP = Me.RecordsetClone - ни на что не влияет
Set rstP.ActiveConnection = cnnP
rstP.UpdateBatch

End Sub

- данные в таблице-источнике не обновляются.
Т.е. получается, что нужно писать обработчик на изменение каждого поля табличной формы?


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 55

    TopList