powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / refresh представление хочу
8 сообщений из 8, страница 1 из 1
refresh представление хочу
    #32479458
Lam1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такая незадача. База в свободных таблицах на файл-сервере. DBC содержит ЛОКАЛЬНЫЕ представления. Запросы в основном долгоиграющие. Вьюшки отображаются в гридах readonly, данные вводятся в диалогах. В таблицу изменения вносятся отдельной процедурой со всякими проверками. А вот как потом обновить запись в представлении (только текущую), чтоб показать ее в гриде и не делать requery() ? Слишком долго получается, а обновлять надо сразу ((( Понимаю, что это все не прогрессивно, но что сдали, тем и играем (((
Спасибо.
...
Рейтинг: 0 / 0
refresh представление хочу
    #32479478
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если сразу, то просто сделай REPLACE в Local View измененных данных. Сбросить флаг изменения буфера можно командой SetFldState() (для полей текущей записи), хотя это никак не повлияет на собственно содержимое буфера.

Есть еще команда Refresh() - это аналог Requery(), но для конкретной записи в Local View.
...
Рейтинг: 0 / 0
refresh представление хочу
    #32480185
Lam1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ
Спасибо за совет. Надо мне внимательнее читать доку. Если я прав, то REFRESH() предпочтительнее для своих изменений, а REQUERY() для чужих. Причем последний лучше делать по требованию пользователя. Дело в том, что приложение спроектировано как переходный этап с FPD 2.6 на VFP+MS SQL. По замыслу работавшего до меня чела - вся работа с БД (открытие файлов, создание вьюшек, транзакции и триггеры) сидит в отдельном процедурном файле. Модули форм почти не придется переделывать - уважаю. Но пока все работает как файл-сервер.
...
Рейтинг: 0 / 0
refresh представление хочу
    #32480412
Lam1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Повинен в крайней тупости, однако стремлюсь... Записи вьюшек не обновляются через REFRESH(). Send SQL Updates отключен - мне не нужно обновлять таблицы БД через View, для этого есть SQL. Рефреш не обязательно должен быть связан с обновлением записи, которое только что произвело приложение. Или представления вообще не обновить без этого ?
Можно кидать камнями, так как наверняка всех достал (((
...
Рейтинг: 0 / 0
refresh представление хочу
    #32480442
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Физически, любое View - это результат выполнения команды Select-SQL. Т.е. это некая временная таблица физически расположенная на машине клиента и являющаяся результатом выполнения команды Select-SQL.

Когда ты даешь команду Requery() или Refresh(), то реально ты просишь повторно выполнить команду Select-SQL. Разумеется, никакие изменения внесенные клиентом в этом случае не попадут в исходные таблицы. Просто будет удалена старая временная таблица и вместо нее будет создана новая.

Send SQL Update - это прямо противоположная команда. Она передает данные от клиента на сервер теми же командами Update-SQL и Insert-SQL.

А вообще-то подобные впросы проще проверить экспериментально. 5 минут экспериментов на собственном компе лучше, чем пару часов ожидания ответа в конфе. :))
...
Рейтинг: 0 / 0
refresh представление хочу
    #32480484
Lam1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВладимирМ

Я о том же, Send SQL Update включен - REFRESH() работает на 5, выключен - No update tables are specified. Use the Tables property of the cursor.
Стыжусь своего ламерства, но дело принципа - причем тут update tables ?
...
Рейтинг: 0 / 0
refresh представление хочу
    #32480532
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая версия FoxPro? На VFP6SP5 - без проблем. Есть SendSQLUpdate или нет - без разницы. Правда, в нем сама команда Refresh() глючная, но это к делу не относится.

Попробуй так:

TableRevert(.T.,.T.,"MyView")
Refresh(1,"MyView")
...
Рейтинг: 0 / 0
refresh представление хочу
    #32480588
Lam1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы, не прокатило. А фокс 5-й, другого щас под рукой нет. У клиентов стоят рантаймы от 6-ки. Скорее всего глюки. Все-таки REPLACE в VIEW делать не хочется, нет гарантий наличия соответствующих временных переменных в нужный момент - потребуется существенная переделка кода. А решение с REFRESH указанной записи - это красиво и дешево. Буду копать его дальше.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / refresh представление хочу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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