powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / [?] Обновление таблицы при изменении данных в Grid'е
5 сообщений из 5, страница 1 из 1
[?] Обновление таблицы при изменении данных в Grid'е
    #36745896
tvolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Такая проблема. На форме имеется Grid и некий Label. Грид привязан к таблице на диске
(для самого Grid'а прописан RecordSource, а для колонок (Column) указаны соответствующие поля
в качестве ControlSource). Всё нормально отображается и работает.
Теперь нужно сделать так, чтобы при изменении прямо в Grid некоторого числового поля, привязанного к полю fNum в таблице, изменялось значение Label.Caption, представляющее собой сумму всем значений поля fNum.
Так как таблица небольшая, то попробовал повесить на обработку Valid элемента Text столбца, отвечающего за взаимодействие с fNum, нечто типа такого (пишу по памяти, чтобы передать общую идею):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
local lcAlias
lcAlias = ALIAS()
SELE SUM(fNum) As fNum FROM fTable INTO CURSOR curSum
Label.Caption = STR(fNum, 14 , 2 )
USE IN curSum
IF !EMPTY(lcAlias)
   SELE (lcAlias)
ENDIF

Но обнаружилась такая проблема. Значение этой самой метки Label меняется не сразу по выходу
из ячейки редактирования, а только после как минимум перехода по строкам в гриде. Как бы сделать так, чтобы значение метки обновлялось сразу же, по выходу из элемента редактирования
Text, привязанного к полю fNum (чтобы не пришлось "бродить" по гриду) ?
Пока что обошел этот момент добавлением программного перехода на следующую строку
и возврата на предыдущую, эмулируя перемещения пользователя, но как-то всё это не очень красиво, мягко говоря :)
Полагал, что дело в буферизации, но по-дефолту в VFP9 буферизация, вроде как, отключена
(SetCursorProp('Buffering',1))...
В общем, если у кого есть какие-то идеи, буду рад услышать )
...
Рейтинг: 0 / 0
[?] Обновление таблицы при изменении данных в Grid'е
    #36746698
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tvolf,

Это у Вас из-за SELECT`а. Щас только, что проверил на своей программе. Замените код на такой:

Код: plaintext
1.
2.
SUM fNum ALL TO m.fNum
Thisform.Label.Caption=STR(m.fNum)

И будет Вам счастье.
...
Рейтинг: 0 / 0
[?] Обновление таблицы при изменении данных в Grid'е
    #36746700
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
thunder2,

SUM лучше заменить на CALC SUM(fNum) ALL TO m.fNum IN myalias так будет корректнее работать
...
Рейтинг: 0 / 0
[?] Обновление таблицы при изменении данных в Grid'е
    #36746909
tvolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
thunder2,

Спасибо за сообщение.
В принципе, такой вариант подходит - с использованием SUM или CALC (кстати, а в чем между ними различие ? В смысле, почему второй вариант более корректен ? Или там всё дело в указании для CALC области, в которой будет работать команда (IN ALIAS) ? )
Ну и не совсем понятно, почему не работает решение с SELECT ? Или в случае использования SUM и CALC, в отличие от использования SELECT, имеется неявное перемещение указателей в таблице, по которой происходит суммирование ? То есть, хотелось бы понять причину такого странного, на мой взгляд, поведения VFP9.
...
Рейтинг: 0 / 0
[?] Обновление таблицы при изменении данных в Grid'е
    #36747047
thunder2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tvolf,

автор
В смысле, почему второй вариант более корректен ? Или там всё дело в указании для CALC области, в которой будет работать команда (IN ALIAS) ? )

Именно. Хотя если у Вас форма "работает" с одним алиасом можете пользоваться SUM как более корокткой записью.
автор
Ну и не совсем понятно, почему не работает решение с SELECT ? Или в случае использования SUM и CALC, в отличие от использования SELECT, имеется неявное перемещение указателей в таблице, по которой происходит суммирование ? То есть, хотелось бы понять причину такого странного, на мой взгляд, поведения VFP9.

К сожалению моих знаний недостаточно, чтобы это объяснить. Просто принимите на веру.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / [?] Обновление таблицы при изменении данных в Grid'е
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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