|
|
|
Вешалка! Table buffer for alias ... contains uncommitted changes.
|
|||
|---|---|---|---|
|
#18+
Привет! Помогите, а то вешалка! Я нигде не настраивал буферизацию, т.к. оной не пользуюсь, но с некоторых пор на некоторых курсорах меня стала мучить эта еггора! Причем в одинаковых условиях одни курсоры четко работают без буферизации (давно созданные формы), а ничем не примечательные другие (недавно созданные формы) - дают ошибку. Все курсоры являются выборками с SQL-серва через SQLEXEC() и являются источниками для грида - причем на типовой форме (класс, везде один и тот же, без вносимых изменений). По ходу реально это всё справочники. Я там в классе формы кнопочку такую сделал - актуализировать данные, по которой в грид данные перегружаются заново, в тот же курсор, без его (курсора) предварительного закрытия. После того как в таком курсоре происходит какой-нибудь риплейс, а после этого нажимается "Актуализировать" и происходит "чудо" - одни курсоры перезагружаются данными нормально, а другие - падают программой. Если риплейс не имел места, то никакой ошибки не возникает. Что делать, и почему такое н а чало происходить? вфп9 зы. CURSORGETPROP('Buffering') почему-то всегда дает 3, хотя по-умолчанию дожен давать 1. я ф шоке, но не от того, а того что при попытке CURSORSETPROP('Buffering',1) мне выдают - Views require either DB_BUFOPTROW or DB_BUFOPTTABLE. при чем сдесь Views? Я их в глаза ни разу не видывал, не то чтобы хоть раз хоть где-то использовал! пипец полный... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2008, 20:25 |
|
||
|
Вешалка! Table buffer for alias ... contains uncommitted changes.
|
|||
|---|---|---|---|
|
#18+
Курсор, полученный через SQLExec() всегда находится в режиме оптимистической буферизации. По умолчанию, в режиме оптимистической буферизации строк (3), но можно переключить в режим оптимистической буферизации таблиц (5). Переключить такой курсор в режим пессимистической буферизации или отключить для него режим оптимизации - невозможно. Как следствие, после внесения изменений в такой курсор необходимо либо сбросить буфер (TableUpdate()), либо отменить изменения в буфере (TableRevert()). Но поскольку при строковой буферизации сброс буфера может произойти автоматически при переходе на другую запись или при закрытии курсора, то иногда Вы можете и не заметить, что курсор находится в режиме буферизации. PS: Если хочешь получить человеческий ответ, то и общайся на человеческом языке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2008, 23:45 |
|
||
|
Вешалка! Table buffer for alias ... contains uncommitted changes.
|
|||
|---|---|---|---|
|
#18+
Я одного не пойму - почему около года в аналогичных ситуациях проблема не всплывала. Как побороть последствия - мне понятно. Дело в том, что закрыть курсор можно без проблем и почему-то вфп не против. Мне хотелось узнать причину. Понимаете, все одинаково, только реально команды, посылаемые на сервер разнятся, ну и поля по именам, само собой. Это практически единственная разница и тем не менее, одни в абсолютно одинаковых условиях работают без ошибок, а другие - генерят ошибку именно в строке с SQLEXEC(nH,cCmd,cCursor) потому что не желает вфп в тот же, открытый курсор, данные залить. Вы понимаете, если ошибка имеет место, то она есть всегда, если условия для ее возникновения создаются. А тут получается непонятка. Я почему, собственно, нечеловеческим текстом - завтра надо показательную демонстрацию, по ходу даже на сегодня планировалось, а тут в месте, где все прекрасно работало вдруг, понимаешь, такое... так, все. я кажись понял в чем дело... спасибо за просвещение в смысле: ВладимирМКурсор, полученный через SQLExec() всегда находится в режиме оптимистической буферизации. По умолчанию, в режиме оптимистической буферизации строк (3), но можно переключить в режим оптимистической буферизации таблиц (5). Переключить такой курсор в режим пессимистической буферизации или отключить для него режим оптимизации - невозможно. не знал. по-мойму причина в том, что большинство полученных курсоров с помощью SQLExec() я не использую, а использую курсор, полученный из последующей выборки из него. Потому, похоже, с этим до сих пор и не столкнулся ни разу... Если бы не Вы, я не знаю когда б я дошел до этой мысли! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2008, 01:53 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1587550]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
194ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 506ms |

| 0 / 0 |
