Re[3]: Событие FetchComplete в ADO
От: Алекс Россия http://wise-orm.com
Дата: 10.07.02 03:05
Оценка: 4 (1)
Здравствуйте mitq, Вы писали:

M>Здравствуйте Алекс, Вы писали:


А>>Я думаю это от провайдера зависит, если он позволяет такие вещи, событие приходить будет.


M>Ok, покопаю в этом направлении. Но хочу задать ещё один вопрос: какие стили нужно понавешать на Recordset для того, чтобы в нём можно было обновить одну запись? Уже часа три бьюсь и не могу реализовать такую простую вещь:

M>1) Есть один Recordset (adUseClient, adOpenStatic, adLockOptimistic), который я использую для просмотра и который состоит из нескольких таблиц.
M>2) Изменяю одну из таблиц так:
M>
M>   _RecordsetPtr recset("ADODB.Recordset");
M>   recset->Open( ... , adOpenDynamic, adLockOptimistic, adCmdText );

M>   recset->Fields->Item[...]->Value = ...;
M>   recset->Update();
M>

M>3) Пытаюсь увидеть изменения в Recordset'е из первого пункта:
M>
M>   recordset->Resync( adAffectCurrent, adResyncUnderlyingValues );
M>   // Я абсолютно уверен в том, что стою на той записи, в которой были произведены изменения.
M>

M>После "перезапуска" Recordset'а изменения проявляются, но это слишком долго.


M>Появилась идея: я изменяю id'шник, используемый для сцепления таблиц, а не значение, выводимое на экран. Видимо, всё таки придётся перезапускать Recordset. Я прав?


Может это и не даст выигрышь в скорости, но ИМХО нужно сделать наоборот: первый рекордсет должен быть adOpenDynamic, а второй adOpenStatic.
Кстати, если второй заводится только для изменения пары-другой записей в табличке, лучше напрямую использовать SQL'ый update table. На много быстрее будет.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.