Синхронизировать отображение значения полей в двух окнах
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
	При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- vea
 - Бывалый
 - Сообщения: 51
 - Зарегистрирован: 01 Сентябрь 2005, 15:48
 - Откуда: Иваново
 - Контактная информация:
 
Синхронизировать отображение значения полей в двух окнах
Кларион 8.0 б.8973, ВинХР.
Есть tps-база. Два пользователя запускают программу. У одного окно для отслеживания (без действий), у другого (таких несколько и каждый работает только с одной, своей, записью базы) окно с возможностью изменения одного из полей (например, Prizn) в 0 или 1.
Как обновить окно первого пользователя при изменении поля Prizn вторым пользователем?
Просмотрел все в данной части форума и в части готовых решений и шаблонов. Ничего не высмотрел.
Думаю, что можно бы как-то обновлять очередь, отследив условие изменения поля в одной из записей. Но, как отловить изменение поля в одной из записей. Количество записей равно количеству вторых пользователей...
Спасибо за любую информацию.
			
			
									
						Есть tps-база. Два пользователя запускают программу. У одного окно для отслеживания (без действий), у другого (таких несколько и каждый работает только с одной, своей, записью базы) окно с возможностью изменения одного из полей (например, Prizn) в 0 или 1.
Как обновить окно первого пользователя при изменении поля Prizn вторым пользователем?
Просмотрел все в данной части форума и в части готовых решений и шаблонов. Ничего не высмотрел.
Думаю, что можно бы как-то обновлять очередь, отследив условие изменения поля в одной из записей. Но, как отловить изменение поля в одной из записей. Количество записей равно количеству вторых пользователей...
Спасибо за любую информацию.
С уважением, vea
			
						- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Синхронизировать отображение значения полей в двух окнах
А не нужно ничего. Нужно на таймер повесить обновление броуза и всё.
			
			
									
						We are hard at work… for you.   
			
						- vea
 - Бывалый
 - Сообщения: 51
 - Зарегистрирован: 01 Сентябрь 2005, 15:48
 - Откуда: Иваново
 - Контактная информация:
 
Синхронизировать отображение значения полей в двух окнах
Понял. Но в каком эмбеде повесить обновление? Спасибо!
			
			
									
						С уважением, vea
			
						Синхронизировать отображение значения полей в двух окнах
В свойствах окна прописать Timer  (например, Timer(500)  и обрабатывать Event:Timer .... 
...
Of EVENT:Timer
Brwn.ResetQueue(Reset:Queue)
Очевидный недостаток - передёргивание очереди и позиции курсора.
Я бы всё-таки создал лог действий пользователя и проверял дату-время последнего обновления или количество записей в логе.
			
			
									
						...
Of EVENT:Timer
Brwn.ResetQueue(Reset:Queue)
Очевидный недостаток - передёргивание очереди и позиции курсора.
Я бы всё-таки создал лог действий пользователя и проверял дату-время последнего обновления или количество записей в логе.
- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Синхронизировать отображение значения полей в двух окнах
На таймер. В свойствах окна ставишь 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
 - Бывалый
 - Сообщения: 51
 - Зарегистрирован: 01 Сентябрь 2005, 15:48
 - Откуда: Иваново
 - Контактная информация:
 
Синхронизировать отображение значения полей в двух окнах
kreator, спасибо огромное! Очевидно, вы поняли, что я несколько плаваю в понятиях и очень просто подсказали... Спасибо!
			
			
									
						С уважением, vea
			
						- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
Синхронизировать отображение значения полей в двух окнах
а можно ещё мессаджи слать с рабочего компьютера на компьютер наблюдателя при изменении данных, но это посложнее будет, чем таймер Гёте.
			
			
									
						С уважением, ДП
			
						- 
				vd-vuf
 - Бывалый
 - Сообщения: 61
 - Зарегистрирован: 12 Декабрь 2008, 12:09
 - Откуда: Верхний Уфалей
 - Контактная информация:
 
Синхронизировать отображение значения полей в двух окнах
Ведение логов для этой задачи, собственно довесок, логически ни чего не решающий но хавающий ресурсы.
С тем же успехом можно перечитывать нужные записи и сравнивать предварительно сохраненные значения полей (если изменилось - обновляем окно)
ну и вариант с таймером, а что бы лишний раз окно не дергать, обновлять его только если данные изменились.
Изменения отслеживать по аттрибуту - time полученному из DIRECTORY(file) - ..(но это нужно проверить, всегда ли актуально значение time). Насколько я понял по задаче, это есть таблица, в ней количество записей равно количеству пользователей.
			
			
									
						С тем же успехом можно перечитывать нужные записи и сравнивать предварительно сохраненные значения полей (если изменилось - обновляем окно)
ну и вариант с таймером, а что бы лишний раз окно не дергать, обновлять его только если данные изменились.
Изменения отслеживать по аттрибуту - time полученному из DIRECTORY(file) - ..(но это нужно проверить, всегда ли актуально значение time). Насколько я понял по задаче, это есть таблица, в ней количество записей равно количеству пользователей.
- 
				Ал
 - ✯ Ветеран ✯
 - Сообщения: 1059
 - Зарегистрирован: 08 Июль 2005, 6:48
 - Откуда: Россия
 - Благодарил (а): 1 раз
 - Поблагодарили: 1 раз
 
Синхронизировать отображение значения полей в двух окнах
Без обид, но утверждение спорное - надо али не надо доп. учёт - лог и прочее - знает только автор...vd-vuf писал(а):Ведение логов для этой задачи, собственно довесок, логически ни чего не решающий...
- 
				vd-vuf
 - Бывалый
 - Сообщения: 61
 - Зарегистрирован: 12 Декабрь 2008, 12:09
 - Откуда: Верхний Уфалей
 - Контактная информация:
 
Синхронизировать отображение значения полей в двух окнах
Когда автор обращается на форум с вопросом, уместно изложить решение, если оно есть конечно. А вот флудить не уместно. угу. без обид?Ал писал(а):Без обид, но утверждение спорное - надо али не надо доп. учёт - лог и прочее - знает только автор...vd-vuf писал(а):Ведение логов для этой задачи, собственно довесок, логически ни чего не решающий...
- 
				Ал
 - ✯ Ветеран ✯
 - Сообщения: 1059
 - Зарегистрирован: 08 Июль 2005, 6:48
 - Откуда: Россия
 - Благодарил (а): 1 раз
 - Поблагодарили: 1 раз
 
Синхронизировать отображение значения полей в двух окнах
...vea писал(а):Спасибо. Все дело в том, что первый пользователь - это просто наблюдатель, у него нет возможности что-то делать с базой (его может и не быть), только будет запускаться окно, чтобы видеть ход работы вторых пользователей...
А вот запись лога и проверка количества записей в нем, да еще и с прочтением его обновленных записей - интересная мысль... Спасибо.
видимо есть причины у автора не раскрывать подробности...
А если вам показалось что действительно
есть кнопочка [!], "угу. без обид?"vd-vuf писал(а):Ал писал(а):... А вот флудить не уместно. угу. без обид?vd-vuf писал(а):Ведение логов для этой задачи, собственно довесок, логически ни чего не решающий...
Ну и на этом "перепалку" закроем, ОК?
ps
Если пользовать GETFILEDATE|GETFILETIME можно конечно проследить обновления файла, но момент есть такой - программка может обновить собственно файл и дата-время соотв. будет вроде бы ОК, а его содержание останется прежним...
- vea
 - Бывалый
 - Сообщения: 51
 - Зарегистрирован: 01 Сентябрь 2005, 15:48
 - Откуда: Иваново
 - Контактная информация:
 
Синхронизировать отображение значения полей в двух окнах
Друзья, не спорьте. Все ответы мне интересны. Заданный вопрос решил по таймеру. Получилось отлично. Лог-файл тоже интересен,т.к. я буду вести лог-файл для протоколирования действий всех пользователей и мог бы воспользоваться им. Но, заданный вопрос решен.
Теперь решаю обратную задачу: при изменении записи в окне первого пользователя надо автоматом найти значение другого поля. Например, Pole2 (эта часть, в данной теме, - черный ящик, и не обсуждается) и полученное значение поля Pole2 отобразить в окне второго пользователя (пользователей).
Действительно, число записей базы (строк очереди в броузе) равно количеству вторых пользователей (действительно работающих в программе, каждый в своем окне). Кстати, их окна - формы.
Ну, и чтобы прояснить: наверно уже догадались, что это электронная очередь... Всем спасибо за участие.
			
			
									
						Теперь решаю обратную задачу: при изменении записи в окне первого пользователя надо автоматом найти значение другого поля. Например, Pole2 (эта часть, в данной теме, - черный ящик, и не обсуждается) и полученное значение поля Pole2 отобразить в окне второго пользователя (пользователей).
Действительно, число записей базы (строк очереди в броузе) равно количеству вторых пользователей (действительно работающих в программе, каждый в своем окне). Кстати, их окна - формы.
Ну, и чтобы прояснить: наверно уже догадались, что это электронная очередь... Всем спасибо за участие.
С уважением, vea
			
						- vea
 - Бывалый
 - Сообщения: 51
 - Зарегистрирован: 01 Сентябрь 2005, 15:48
 - Откуда: Иваново
 - Контактная информация:
 
Синхронизировать отображение значения полей в двух окнах
Добавлю, что очередь без терминала... Но, с экраном... 
			
			
									
						С уважением, vea
			
						