powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как правильно обновить данные на форме
10 сообщений из 35, страница 2 из 2
Как правильно обновить данные на форме
    #39415379
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKn

Посмотрите в свойствах таблицы или CURSORGETPROP() какой у вас тип буферизации.
Поставьте сразу 5-ую.
...
Рейтинг: 0 / 0
Как правильно обновить данные на форме
    #39415382
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sg12,

5-я изначально (
...
Рейтинг: 0 / 0
Как правильно обновить данные на форме
    #39415417
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKn

Даже не знаю, что и сказать.
Возможно, проблема в том, что пользователи напрямую работают с таблицей - это всегда нехорошо. Остается VIEW.
Или, в форме попробуйте установить Form.DataSession = 2 и/или Form.BufferMode = 2, что получится.
...
Рейтинг: 0 / 0
Как правильно обновить данные на форме
    #39415429
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKn


Да, есть еще команда FLUSH() - сброс буферов на диск.
...
Рейтинг: 0 / 0
Как правильно обновить данные на форме
    #39415526
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sg12,

Ничто не помогло.
Причем решение где-то на поверхности лежит.
...
Рейтинг: 0 / 0
Как правильно обновить данные на форме
    #39415594
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKn

Антивирь, разве.
Добавьте в Form.Error() строку MESSAGEBOX(nError) и попробуйте прогнать через циклы, если получится:
FOR i = 1 TO RECCOUNT()
TABLEUPDATE/TABLEREVERT
NEXT
...
Рейтинг: 0 / 0
Как правильно обновить данные на форме
    #39415626
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все замечательно. Предположим, Вы добились своего и запись обновляется. А как Вы с этой формой работать-то собираетесь?

Т.е. Вы ввели некое значение, но не успели его сохранить, как у Вас оно было тут же удалено и вернулось старое значение! Вы же обновляете текущими данными с диска. Даже если они не были изменены другим пользователем.

Кстати, раз у Вас постоянно идет ругань на то, что буфер изменен. Значит, так оно и есть! Ваша форма что-то постоянно меняет в таблице. Но поскольку буферизация табличная, то автоматического сброса буфера не происходит. А раз буфер был создан, то он, естественно, не может быть обновлен актуальными данными.

Я так понимаю, что у Вас форма представляет собой 2 Grid. Где основной Grid - это напрямую таблица DBF в 5 режиме буферизации, а подчиненный Grid - это Local View, который выполняет перезапрос в событии AftreRowColChange основного Grid

Если это так, то Вам следует сделать следующее:

В событии BeforRowColChange, если предполагается переход на другую строку или выход из формы выполнять проверку факта изменения текущей записи через GetFldState(-1). Если есть изменения, то выполнять сброс буфера в текущей строке с учетом возможного конфликта совместного доступа TableUpdate(.f.,.f.). При переходе на другое поле в рамках текущей записи - ничего не делать

Собственно, на этом и все. Актуализация данных будет происходить автоматически, у тех записей, для которых не было никаких изменений. Нет буфера. Вот Вам и надо следить за тем, чтобы этот буфер по каким-либо причинам не создавался.
...
Рейтинг: 0 / 0
Как правильно обновить данные на форме
    #39415685
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKn

ВладимирМ прав, как всегда - буфера надо сбрасывать на каждой строке. Я просто упустил GetFldState. Погуглите его, и, скорее всего, вы найдете готовое решение.
...
Рейтинг: 0 / 0
Как правильно обновить данные на форме
    #39415701
sg12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmitryKn

А лучше - скачать Tastrade (поставлялось в более ранних версиях VFP), и внимательно его изучить.
http://drozdov.foxclub.ru/util_r.html
...
Рейтинг: 0 / 0
Как правильно обновить данные на форме
    #39415789
DmitryKn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ...

Я так понимаю, что у Вас форма представляет собой 2 Grid. Где основной Grid - это напрямую таблица DBF в 5 режиме буферизации, а подчиненный Grid - это Local View, который выполняет перезапрос в событии AftreRowColChange основного Grid

Если это так, то Вам следует сделать следующее:

В событии BeforRowColChange, если предполагается переход на другую строку или выход из формы выполнять проверку факта изменения текущей записи через GetFldState(-1). Если есть изменения, то выполнять сброс буфера в текущей строке с учетом возможного конфликта совместного доступа TableUpdate(.f.,.f.). При переходе на другое поле в рамках текущей записи - ничего не делать

Собственно, на этом и все. Актуализация данных будет происходить автоматически, у тех записей, для которых не было никаких изменений. Нет буфера. Вот Вам и надо следить за тем, чтобы этот буфер по каким-либо причинам не создавался.


ВладимирМ, огромное спасибо, сильно помогло.

С помощью GetFldState(-1) установил в каких полях создаются изменения, разобрался почему.
Дело в том, что форма организована, возможно, не идеально, в стремлении выложить как можно больше информации пользователю напихал контролов на форму, значение которых вычисляется в ходе refresh подчиненного грида, т.е. и в ходе refresh формы, например, при переходе на другую строку в основном гриде. А поскольку привязал контролы к таблице, вот тут буфер и возникал со всеми последствиями.

Отвязал контролы - все работает отлично. Теперь нужно просто оптимизировать форму, да и на таблицу критичнее посмотреть.

Еще раз огромное спасибо, проблема решена, по крайней мере понятен путь.
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как правильно обновить данные на форме
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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