|
|
|
| поясните:
есть код
Private Sub Флажок19_AfterUpdate()
Dim op As DAO.Recordset
Set op = Me.RecordsetClone
Do While op.EOF = False
....................
op.MoveNext
Loop
End Sub
|
так вот первый раз (после открытия формы) срабатывает а при последующих нажатиях на флажок - композиция
Set op = Me.RecordsetClone
дает op.EOF = True
почему так
если сделать так
Private Sub Флажок19_AfterUpdate()
Dim op As DAO.Recordset
Dim rs As DAO.Recordset
'str_ = Me.RecordSource
Set op = Me.RecordsetClone
Do While op.EOF = False
...............
op.MoveNext
Loop
Set op = Nothing
Set op = Me.RecordsetClone
L = op.EOF ' вот туту оно равно TRUE
Me.RecordsetClone.MoveFirst
Set op = Me.RecordsetClone
L = op.EOF ' а вот туту оно равно FALSE
End Sub
|
но так написано в хелпе
При открытии нового объекта Recordset текущей записью является его первая запись. Если текущая запись определена с помощью одного из методов Find или Move, то для того, чтобы сделать текущей другую запись объекта Recordset, необходимо синхронизировать текущую запись объекта Recordset с текущей записью формы, присвоив значение свойства объектов доступа к данным Bookmark свойству формы Bookmark.
|
получается RecordsetClone - возвращает рекордсет и помнит текущую запись которую сделали способом Move для ДРУГОЙ копии рекордсета, тогда на фига первое предложение - поясните мож я русский не понимаю. | |
|
| |
|
|
|
|
При открытии нового объекта Recordset...
|
И где у вас открытие нового? | |
|
| |
|
|
|
|
Свойство RecordsetClone используется для ссылок на объект формы Recordset, указанный в свойстве формы Источник записей (RecordSource).
|
а где в RecordSource указывается текущая запись
как я понимаю при RecordsetClone происходит следующее - идет обращение к RecordSource т.е. строка которая указывает на источник и его фильтры/сортировку (openrecordset....), но в RecordSource нет и намека на текущую позицию, откеля она его прикручивает
и получается при открытии нескольких RecordsetClone - любое перемещение в одном из них отражается во всех остальных, знач синхронность соблюдаться может (без всякого на ёё намёка), а почему тогда синхронизация двух Recordset происходит жутким извращенным способом | |
|
| |
|
|
|
| Из хелпа:
Свойство RecordsetClone используется для ссылок на объект формы Recordset, указанный в свойстве формы Источник записей (RecordSource).
Значение свойства формы RecordsetClone определяет копию набора записей базовой таблицы или запроса, указанных в свойстве формы Источник записей (RecordSource).
Т.е. при создании формы создается два объекта рекордсет, один является источником данных формы, а второй является источником данных для Клона, при чем, и созданием второго рекордсета, и убийством его занимается лишь сама форма.
При обращении к свойству формы RecordsetClone Вы получаете лишь ссылку на второй рекордсет. При Nothing Вы уничтожаете, опять, лишь ссылку на рекордсет, но ни как ни сам объект. Объект остается существовать с той позицией курсора при котором вы от него "отцепились"
Даже op.Close не закроет второй рекордсет.
Set op = Me.RecordsetClone и Set rs = Me.RecordsetClone - это ссылки на один и тот же рекордсет, независимо уничтожали вы ор или нет. | |
|
| |