powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вешалка! Table buffer for alias ... contains uncommitted changes.
3 сообщений из 3, страница 1 из 1
Вешалка! Table buffer for alias ... contains uncommitted changes.
    #35426430
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!

Помогите, а то вешалка!

Я нигде не настраивал буферизацию, т.к. оной не пользуюсь, но с некоторых пор на некоторых курсорах меня стала мучить эта еггора! Причем в одинаковых условиях одни курсоры четко работают без буферизации (давно созданные формы), а ничем не примечательные другие (недавно созданные формы) - дают ошибку.
Все курсоры являются выборками с SQL-серва через SQLEXEC() и являются источниками для грида - причем на типовой форме (класс, везде один и тот же, без вносимых изменений). По ходу реально это всё справочники. Я там в классе формы кнопочку такую сделал - актуализировать данные, по которой в грид данные перегружаются заново, в тот же курсор, без его (курсора) предварительного закрытия. После того как в таком курсоре происходит какой-нибудь риплейс, а после этого нажимается "Актуализировать" и происходит "чудо" - одни курсоры перезагружаются данными нормально, а другие - падают программой. Если риплейс не имел места, то никакой ошибки не возникает.

Что делать, и почему такое н а чало происходить?

вфп9
зы. CURSORGETPROP('Buffering') почему-то всегда дает 3, хотя по-умолчанию дожен давать 1. я ф шоке, но не от того, а того что при попытке CURSORSETPROP('Buffering',1) мне выдают - Views require either DB_BUFOPTROW or DB_BUFOPTTABLE. при чем сдесь Views? Я их в глаза ни разу не видывал, не то чтобы хоть раз хоть где-то использовал! пипец полный...
...
Рейтинг: 0 / 0
Вешалка! Table buffer for alias ... contains uncommitted changes.
    #35426563
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курсор, полученный через SQLExec() всегда находится в режиме оптимистической буферизации. По умолчанию, в режиме оптимистической буферизации строк (3), но можно переключить в режим оптимистической буферизации таблиц (5).

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

Как следствие, после внесения изменений в такой курсор необходимо либо сбросить буфер (TableUpdate()), либо отменить изменения в буфере (TableRevert()). Но поскольку при строковой буферизации сброс буфера может произойти автоматически при переходе на другую запись или при закрытии курсора, то иногда Вы можете и не заметить, что курсор находится в режиме буферизации.

PS: Если хочешь получить человеческий ответ, то и общайся на человеческом языке.
...
Рейтинг: 0 / 0
Вешалка! Table buffer for alias ... contains uncommitted changes.
    #35426602
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я одного не пойму - почему около года в аналогичных ситуациях проблема не всплывала. Как побороть последствия - мне понятно. Дело в том, что закрыть курсор можно без проблем и почему-то вфп не против. Мне хотелось узнать причину. Понимаете, все одинаково, только реально команды, посылаемые на сервер разнятся, ну и поля по именам, само собой. Это практически единственная разница и тем не менее, одни в абсолютно одинаковых условиях работают без ошибок, а другие - генерят ошибку именно в строке с SQLEXEC(nH,cCmd,cCursor) потому что не желает вфп в тот же, открытый курсор, данные залить.
Вы понимаете, если ошибка имеет место, то она есть всегда, если условия для ее возникновения создаются. А тут получается непонятка.
Я почему, собственно, нечеловеческим текстом - завтра надо показательную демонстрацию, по ходу даже на сегодня планировалось, а тут в месте, где все прекрасно работало вдруг, понимаешь, такое...

так, все. я кажись понял в чем дело...

спасибо за просвещение в смысле:
ВладимирМКурсор, полученный через SQLExec() всегда находится в режиме оптимистической буферизации. По умолчанию, в режиме оптимистической буферизации строк (3), но можно переключить в режим оптимистической буферизации таблиц (5).
Переключить такой курсор в режим пессимистической буферизации или отключить для него режим оптимизации - невозможно. не знал.

по-мойму причина в том, что большинство полученных курсоров с помощью SQLExec() я не использую, а использую курсор, полученный из последующей выборки из него. Потому, похоже, с этим до сих пор и не столкнулся ни разу... Если бы не Вы, я не знаю когда б я дошел до этой мысли! Спасибо!
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Вешалка! Table buffer for alias ... contains uncommitted changes.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]