|
VFP + Oracle. Курсорадаптер
|
|||
---|---|---|---|
#18+
VFP 9 Oracle 10 Вопрос: Работаю с Ораклом из фокса через курсорадаптеры, все прекрасно - делаю UPDATE курсорадаптера - все моментом долетает до базы в оракле, делаю рефреш - вижу все и в своем гриде. Однако такое не проходит с добавлением записей :( Т.е. когда исполняю инструкцию INSERT до тех пор пока не закрою клиентскую часть не вижу новой записи на сервере. Соотв. только после закрытия/открытия клиента вижу ее в гриде. Как это победить? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2009, 12:15 |
|
VFP + Oracle. Курсорадаптер
|
|||
---|---|---|---|
#18+
По умолчанию, курсор, создаваемый CursorAdapter открывается в 3 режиме буферизации (оптимистическая буферизация строк). При желании, его можно переключить в 5 режим буферизации (оптимистическая буферизация таблиц). Отключить для него режим буферизации или установить пессимистическую буферизацию невозможно. Как следствие, модификации, выполняемые в курсоре, созданном CursorAdapter будут выполняются не в самом курсоре, а в его буфере. Сброс изменений на сервер выполняется только тогда, когда модификации из буфера курсора попадут в сам курсор. Сброс буфера выполняется: Для строковой буферизации (2 или 3) - При переходе (попытке) на другую запись - При закрытии - По команде TableUpdate() Для табличной буферизации (4 или 5) - Только по команде TableUpdate() и никак иначе. Скорее всего, курсор у Вас находится в строковом режиме буферизации (3). Как следствие, сброс буфера и передача изменений на сервер происходит при перемещении указателя записи на другую запись. Вероятно, после команды INSERT вы этого не делаете и сброс буфера откладывается до закрытия курсора, что происходит в момент закрытия приложения. Более правильная стратегия заключается в ручном управлении моментом сброса буфера. Т.е. переводом курсора в 5 режим буферизации и явной подачей команды TableUpdate() после команд модификации курсора. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2009, 14:29 |
|
VFP + Oracle. Курсорадаптер
|
|||
---|---|---|---|
#18+
Если модификации в таблице-источнике Grid выполняются программно, то эти модификации будут отображены в самом Grid только в момент получения им фокуса. Программно, это делается командой Grid.SetFocus(). Выполнение Grid.Refresh() может и не отобразить внесенных изменений в Grid. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2009, 14:36 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1586148]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 325ms |
total: | 465ms |
0 / 0 |