Синхронизировать отображение значения полей в двух окнах

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
vea
Бывалый
Сообщения: 51
Зарегистрирован: 01 Сентябрь 2005, 15:48
Откуда: Иваново
Контактная информация:

Синхронизировать отображение значения полей в двух окнах

Сообщение vea »

Кларион 8.0 б.8973, ВинХР.
Есть tps-база. Два пользователя запускают программу. У одного окно для отслеживания (без действий), у другого (таких несколько и каждый работает только с одной, своей, записью базы) окно с возможностью изменения одного из полей (например, Prizn) в 0 или 1.
Как обновить окно первого пользователя при изменении поля Prizn вторым пользователем?
Просмотрел все в данной части форума и в части готовых решений и шаблонов. Ничего не высмотрел.
Думаю, что можно бы как-то обновлять очередь, отследив условие изменения поля в одной из записей. Но, как отловить изменение поля в одной из записей. Количество записей равно количеству вторых пользователей...
Спасибо за любую информацию.
С уважением, vea
kreator
✯ Ветеран ✯
Сообщения: 5158
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Синхронизировать отображение значения полей в двух окнах

Сообщение kreator »

А не нужно ничего. Нужно на таймер повесить обновление броуза и всё.
We are hard at work… for you. :)
Аватара пользователя
vea
Бывалый
Сообщения: 51
Зарегистрирован: 01 Сентябрь 2005, 15:48
Откуда: Иваново
Контактная информация:

Синхронизировать отображение значения полей в двух окнах

Сообщение vea »

Понял. Но в каком эмбеде повесить обновление? Спасибо!
С уважением, vea
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Синхронизировать отображение значения полей в двух окнах

Сообщение Yufil »

В свойствах окна прописать Timer (например, Timer(500) и обрабатывать Event:Timer ....
...
Of EVENT:Timer
Brwn.ResetQueue(Reset:Queue)

Очевидный недостаток - передёргивание очереди и позиции курсора.
Я бы всё-таки создал лог действий пользователя и проверял дату-время последнего обновления или количество записей в логе.
kreator
✯ Ветеран ✯
Сообщения: 5158
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Синхронизировать отображение значения полей в двух окнах

Сообщение kreator »

На таймер. В свойствах окна ставишь Timer (не забудь, он в сотых секундах), после этого в Embeds появится в разделе "Window Events" пункт "Timer". Там пиши (не важно до или после Parent Call) - BRW1.ResetQueue(Reset:Queue).
We are hard at work… for you. :)
Аватара пользователя
vea
Бывалый
Сообщения: 51
Зарегистрирован: 01 Сентябрь 2005, 15:48
Откуда: Иваново
Контактная информация:

Синхронизировать отображение значения полей в двух окнах

Сообщение vea »

Спасибо. Все дело в том, что первый пользователь - это просто наблюдатель, у него нет возможности что-то делать с базой (его может и не быть), только будет запускаться окно, чтобы видеть ход работы вторых пользователей...

А вот запись лога и проверка количества записей в нем, да еще и с прочтением его обновленных записей - интересная мысль... Спасибо.
С уважением, vea
Аватара пользователя
vea
Бывалый
Сообщения: 51
Зарегистрирован: 01 Сентябрь 2005, 15:48
Откуда: Иваново
Контактная информация:

Синхронизировать отображение значения полей в двух окнах

Сообщение vea »

kreator, спасибо огромное! Очевидно, вы поняли, что я несколько плаваю в понятиях и очень просто подсказали... Спасибо!
С уважением, vea
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3285
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

Синхронизировать отображение значения полей в двух окнах

Сообщение Дед Пахом »

а можно ещё мессаджи слать с рабочего компьютера на компьютер наблюдателя при изменении данных, но это посложнее будет, чем таймер Гёте.
С уважением, ДП
vd-vuf
Бывалый
Сообщения: 61
Зарегистрирован: 12 Декабрь 2008, 12:09
Откуда: Верхний Уфалей
Контактная информация:

Синхронизировать отображение значения полей в двух окнах

Сообщение vd-vuf »

Ведение логов для этой задачи, собственно довесок, логически ни чего не решающий но хавающий ресурсы.
С тем же успехом можно перечитывать нужные записи и сравнивать предварительно сохраненные значения полей (если изменилось - обновляем окно)
ну и вариант с таймером, а что бы лишний раз окно не дергать, обновлять его только если данные изменились.
Изменения отслеживать по аттрибуту - time полученному из DIRECTORY(file) - ..(но это нужно проверить, всегда ли актуально значение time). Насколько я понял по задаче, это есть таблица, в ней количество записей равно количеству пользователей.
Ал
✯ Ветеран ✯
Сообщения: 1038
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Синхронизировать отображение значения полей в двух окнах

Сообщение Ал »

vd-vuf писал(а):Ведение логов для этой задачи, собственно довесок, логически ни чего не решающий...
Без обид, но утверждение спорное - надо али не надо доп. учёт - лог и прочее - знает только автор... :wink:
vd-vuf
Бывалый
Сообщения: 61
Зарегистрирован: 12 Декабрь 2008, 12:09
Откуда: Верхний Уфалей
Контактная информация:

Синхронизировать отображение значения полей в двух окнах

Сообщение vd-vuf »

Ал писал(а):
vd-vuf писал(а):Ведение логов для этой задачи, собственно довесок, логически ни чего не решающий...
Без обид, но утверждение спорное - надо али не надо доп. учёт - лог и прочее - знает только автор... :wink:
Когда автор обращается на форум с вопросом, уместно изложить решение, если оно есть конечно. А вот флудить не уместно. угу. без обид?
Ал
✯ Ветеран ✯
Сообщения: 1038
Зарегистрирован: 08 Июль 2005, 6:48
Откуда: Россия
Поблагодарили: 1 раз

Синхронизировать отображение значения полей в двух окнах

Сообщение Ал »

vea писал(а):Спасибо. Все дело в том, что первый пользователь - это просто наблюдатель, у него нет возможности что-то делать с базой (его может и не быть), только будет запускаться окно, чтобы видеть ход работы вторых пользователей...
А вот запись лога и проверка количества записей в нем, да еще и с прочтением его обновленных записей - интересная мысль... Спасибо.
... :idied:
видимо есть причины у автора не раскрывать подробности...
А если вам показалось что действительно
vd-vuf писал(а):
Ал писал(а):
vd-vuf писал(а):Ведение логов для этой задачи, собственно довесок, логически ни чего не решающий...
... А вот флудить не уместно. угу. без обид?
есть кнопочка [!], "угу. без обид?"
Ну и на этом "перепалку" закроем, ОК?

ps
Если пользовать GETFILEDATE|GETFILETIME можно конечно проследить обновления файла, но момент есть такой - программка может обновить собственно файл и дата-время соотв. будет вроде бы ОК, а его содержание останется прежним...
Аватара пользователя
vea
Бывалый
Сообщения: 51
Зарегистрирован: 01 Сентябрь 2005, 15:48
Откуда: Иваново
Контактная информация:

Синхронизировать отображение значения полей в двух окнах

Сообщение vea »

Друзья, не спорьте. Все ответы мне интересны. Заданный вопрос решил по таймеру. Получилось отлично. Лог-файл тоже интересен,т.к. я буду вести лог-файл для протоколирования действий всех пользователей и мог бы воспользоваться им. Но, заданный вопрос решен.
Теперь решаю обратную задачу: при изменении записи в окне первого пользователя надо автоматом найти значение другого поля. Например, Pole2 (эта часть, в данной теме, - черный ящик, и не обсуждается) и полученное значение поля Pole2 отобразить в окне второго пользователя (пользователей).
Действительно, число записей базы (строк очереди в броузе) равно количеству вторых пользователей (действительно работающих в программе, каждый в своем окне). Кстати, их окна - формы.
Ну, и чтобы прояснить: наверно уже догадались, что это электронная очередь... Всем спасибо за участие.
С уважением, vea
Аватара пользователя
vea
Бывалый
Сообщения: 51
Зарегистрирован: 01 Сентябрь 2005, 15:48
Откуда: Иваново
Контактная информация:

Синхронизировать отображение значения полей в двух окнах

Сообщение vea »

Добавлю, что очередь без терминала... Но, с экраном... :-)
С уважением, vea
Ответить