powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как нештатными средствами изменить значение oldval для поля в курсоре ?
5 сообщений из 5, страница 1 из 1
как нештатными средствами изменить значение oldval для поля в курсоре ?
    #32845944
strizh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть SPT-курсор. В нем надо для одного из полей принудительно изменять значения oldval для одного из полей, чтобы tableupdate его подхватывала (я долго шел к этой необходимости, поверьте - надо). Как это сделать ?
Если я делаю
select mtable
replace mfield with newval
setfldstate("mfield",1,"mtable")
то все равно oldval("mfield","mtable") возвращает старое значение. А как это правильно сделать ?
...
Рейтинг: 0 / 0
как нештатными средствами изменить значение oldval для поля в курсоре ?
    #32846058
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык сразу после реплейса заапдейть таблицу и фсего делоф
...
Рейтинг: 0 / 0
как нештатными средствами изменить значение oldval для поля в курсоре ?
    #32846287
strizh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Hel!Riser:
Это понятно, но это приводит к передаче на сервер мусорных операторов типа update mtable set mfield = null. А оно надо ?
...
Рейтинг: 0 / 0
как нештатными средствами изменить значение oldval для поля в курсоре ?
    #32846873
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для одного поля это сделать невозможно. Минимальной неделимой единицей буфера является запись .

Так что, либо смирись с "мусорными" UPDATE, либо откатывай буфер одной (текущей) записи по TableRevert(.F.).

Кроме того, собсвенно сброс буфера можно делать не одной командой TableUpdate(), а также по одной записи за раз в цикле по GetNextModified()

Ну, и наконец, можешь ручками формировать команду для сервера на основе сожержимого буфера и посылать ее черех SQLExec().
...
Рейтинг: 0 / 0
как нештатными средствами изменить значение oldval для поля в курсоре ?
    #32848748
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi strizh!

В общем случае для этого надо разобрать внутренние структуры фокса - как он
организует буфер, как его заполняет и т.п. - ну и потом через АПИ функции
работы с памятью менять содержимое буфера. Только не жди советов - я сильно
сомневаюсь что подобной информацией владеет хоть кто-то, кроме собственно
разработчиков движка фокса (а они не дадут, ибо это явно закрытая
информация), что данные структуры не меняются от версии к версии, что
реализация подобного "вмешательства" в дела фокса не отразится пагубно на
стабильности работы, и что вообще это будет сделать проще чем ПОЛНОСТЬЮ
переписать твою программу, отказавшись от авто-обновлений (которые и делает
фокс на основе OLDVAL, текущего значения полей в соответствии с WhereType) в
пользу "ручных" команд. Если фокс свежий - используй CursorAdapter - там
можно явно прописывать команды для обновления данных (указывая то что тебе
надо, а не только OLDVAL()).

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как нештатными средствами изменить значение oldval для поля в курсоре ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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