Обновление Browse на компьютерах по сети

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
muskin
Активист
Сообщения: 114
Зарегистрирован: 08 Декабрь 2009, 21:16
Откуда: РК

Обновление Browse на компьютерах по сети

Сообщение muskin »

Приветствую всех!
Clarion 6.3(ABC)
Впервые связался с сетевым вариантом программы. Все сделал по науке.
Есть рабочая группа из пяти компьютеров (3-XP и 2-W7, у всех свои серые IP-адреса).
Есть многопользовательская программа - на каждом компьютере стоит одинаковый EXE-шник и на одном расположены все БД.
Все работает быстро и отлично, но для меня осталась одна нерешенная проблема.
Есть, например, окно с двумя List-ами, связанными через Relation и тут же вопрос -> как при изменении или добавлении записи
на одном из компов в данном окне автоматически обновлялись бы записи в аналогичном окне на других компах?
Вариант через таймер и BRW--.ResetFromFile срабатывает, но это влечет за собой постоянное подергивание курсора,
постоянное срабатывание BRW--.TakeScroll(Event:ScrollTop) (хотя нужно, чтобы он срабатывал только один раз при переходе
ведомой записи на новую позицию) и другие последствия.
У кого есть опыт - поделитесь.
Всем пралитарское Спасибо и 'Желаю, чтобы ВСЕ !!!'
kreator
✯ Ветеран ✯
Сообщения: 5037
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 23 раза

Re: Обновление Browse на компьютерах по сети

Сообщение kreator »

Мой опыт. Если несколько человек активно работают в одном окне (броузе), изменения они видят автоматически (ABC заново формирует очереди после операций добавления, изменения, удаления). Если какой-то человек ушел с этого экрана, то по возвращении туда окно автоматически должно обновиться (есть свойства - AutoRefresh, AutoDisplay, он же prop:AUTO). Нет, наверно, смысла принудительно обновлять броуз (или окно), если пользователю это не не надо. А вот если всё-таки нужно принудительно обновить экран (ну, например, сообщить кладовщику, что некто забронировал товар и его уже оплатил и через три минуты подойдёт за ним, давай быстренько метнись собирать заказ), тогда без таймера не обойтись, но там надо вызвать метод ResetQueue.
We are hard at work… for you. :)
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Обновление Browse на компьютерах по сети

Сообщение Алексей- Софт-Центр »

Добрый день!
Я бы использовал Timer и
brw1.resetfrombuffer()
а не
brw1.resetfromfile()


Алексей
Аватара пользователя
musкin
Новичок
Сообщения: 10
Зарегистрирован: 17 Ноябрь 2012, 0:18
Откуда: Taraz-City

Re: Обновление Browse на компьютерах по сети

Сообщение musкin »

kreator писал(а):Мой опыт. Если несколько человек активно работают в одном окне (броузе), изменения они видят автоматически (ABC заново формирует очереди после операций добавления, изменения, удаления). Если какой-то человек ушел с этого экрана, то по возвращении туда окно автоматически должно обновиться (есть свойства - AutoRefresh, AutoDisplay, он же prop:AUTO). Нет, наверно, смысла принудительно обновлять броуз (или окно), если пользователю это не не надо. А вот если всё-таки нужно принудительно обновить экран (ну, например, сообщить кладовщику, что некто забронировал товар и его уже оплатил и через три минуты подойдёт за ним, давай быстренько метнись собирать заказ), тогда без таймера не обойтись, но там надо вызвать метод ResetQueue.
Нет, не видят. Согласен, что без таймера и алгоритма обновления не обойтись. Но тут возникла другая проблемка..., при использовании реальной базы данных {Base(1500 записей) -> Relation -> Second (около 10000 записей в масштабе одной таблицы)} начинают возникать тормоза, и приличные (примерно 12 сек. при загрузке обоих List-ов на каждом из компов). Дальше идут еще большие тормоза, когда на одном из компов открывается Form-а для редактирования конкретной записи -> остальные компы просто ждут окончания редактирования. В проекте и везде для открытия файлов использую Share, все формулы удалил. Метод загрузки таблиц -> File.
Рабочая группа из 5 компов (приличной начинки) -> у всех свои уникальные серые адреса и одно имя группы, необходимые Службы Microsoft для работы в сети включены.
Где я что-то не предусмотрел?
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Обновление Browse на компьютерах по сети

Сообщение Алексей- Софт-Центр »

Добрый день!
Тормоза от
1.размера записи
2. наличия ключей
3. Типа фильтрации файлов
4. количества запсей.

Я , в свое время, когда возникла такая проблема - долго пытался оптимизировать программу и базу на TPS,
пока не перешел на MySql.
Получил на несколько порядков быстрее работающую программу.
(может я чего-то не так делал в TPS среде, может, как Вы писали - чего-то не учел :) )

ЗЫ. А оптимизацию начинал с ревизии сети, перевода ее со 100 мб на 1гб, и .т.д.
Кстати -при brw1.resetfrombuffer() - моргания не будет

Алексей
IKSoft
Посетитель
Сообщения: 42
Зарегистрирован: 27 Май 2010, 13:38

Re: Обновление Browse на компьютерах по сети

Сообщение IKSoft »

Я делал так:
- MSSQL
- не шаблоны (хотя можно и их)
- в каждой таблице есть LastChanged datetime поле
- есть фильтр записей в виде строки (from ... where ...)
- есть временной штамп, когда последний раз обновляли записи LastFefreshDateTime
- есть сохраненная процедура sp (можно и без нее)
- по событию (timer, gainfocus, вход в изменение записи)
вызывается эта sp с параметром строка фильтр и LastFefreshDateTime
- эта sp возвращает, надо ли перечитывать записи и список (ID) этих записей
типа (select ID from ... Where LastChanged > LastFefreshDateTime)

дальше как хотите - либо все записи пересчитывать, либо только измененные
Возможны и другие варианты
Аватара пользователя
morkovin
Ветеран
Сообщения: 910
Зарегистрирован: 20 Июль 2005, 14:53
Откуда: Volgograd, Russia
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

Re: Обновление Browse на компьютерах по сети

Сообщение morkovin »

В NetTalk (от CapeSoft) этот функционал заложен изначально:

NetRefresh - For adding the NetRefresh functionality to your application. NetRefresh allows your browses to automatically refresh when someone else (on another machine) updates dat
WBR, morkovin
Аватара пользователя
musкin
Новичок
Сообщения: 10
Зарегистрирован: 17 Ноябрь 2012, 0:18
Откуда: Taraz-City

Re: Обновление Browse на компьютерах по сети

Сообщение musкin »

Спасибо Всем за рекомендации! Чувствую, что без MySQL не обойтись. Но я этого зверя вижу в первый раз, дайте ссылку как его присовокупить к моему приложению.
Про этот MySQL слышал много раз -> может кто-нибудь прочитает небольшую лекцию, как его установить и настроить для таких придурков, коим являюсь я?
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Обновление Browse на компьютерах по сети

Сообщение Алексей- Софт-Центр »

Добрый день!
Это для скачки дистрибутивов:
http://mysql.ru/
Это для администрирования MySql
http://www.devart.com/ru/dbforge/mysql/ ... nload.html
Остальное : драйвер ODBC - есть здесь

Если что - стучись- поможем.

Алексей
Аватара пользователя
musкin
Новичок
Сообщения: 10
Зарегистрирован: 17 Ноябрь 2012, 0:18
Откуда: Taraz-City

Re: Обновление Browse на компьютерах по сети

Сообщение musкin »

Алексей!
Спасибо за ссылки. Вопрос только один -> а App и словарь нужно будет переделывать?
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Обновление Browse на компьютерах по сети

Сообщение Алексей- Софт-Центр »

Добрый день!
Да.
1.В словаре ставим ODBC вместо TPS. Ну и еще проверяем на 1 нормальную форму таблицы (желательно). MySql - построже с ключами, чем TPS.
2. Из соваря генерим программки конвертации из tps в MySql
3. Ну и переписываем (немного :) модернизируем) APP , для использование прелестей фильтрации MySql.

Алексей
Аватара пользователя
musкin
Новичок
Сообщения: 10
Зарегистрирован: 17 Ноябрь 2012, 0:18
Откуда: Taraz-City

Re: Обновление Browse на компьютерах по сети

Сообщение musкin »

Алексей- Софт-Центр писал(а):Добрый день!
Да.
1.В словаре ставим ODBC вместо TPS. Ну и еще проверяем на 1 нормальную форму таблицы (желательно). MySql - построже с ключами, чем TPS.
2. Из соваря генерим программки конвертации из tps в MySql
3. Ну и переписываем (немного :) модернизируем) APP , для использование прелестей фильтрации MySql.

Алексей
Спасибо за ответ.
Вставляю ODBC вместо TPS -> и одни ругательства.
В моем словаре, кроме драйверов TPS, присутствуют драйвера FoxPro и Text-a. А с ними как быть?
Да и 10-ти мегабайтовое приложение (1 год затрат) как-то переделывать стремно и не хочется.
Локалка из 5-ти компов -> неужели без службы терминалов на XP (типа патча TS-Free) не обойтись?
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: Обновление Browse на компьютерах по сети

Сообщение Алексей- Софт-Центр »

добрый день!
1. Одни ругательства где- в словаре? Если там, то надо заполнить правильно значения
2. С другими драйверами- они у вас используются, вероятнее всего, для подкачки каких- то данных из вне.
. Так что оставьте как есть.

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

Если возникнут сложности - пишите или здесь , или info@soft-center.ru


Алексей
Аватара пользователя
musкin
Новичок
Сообщения: 10
Зарегистрирован: 17 Ноябрь 2012, 0:18
Откуда: Taraz-City

Re: Обновление Browse на компьютерах по сети

Сообщение musкin »

Алексей- Софт-Центр писал(а):добрый день!
1. Одни ругательства где- в словаре? Если там, то надо заполнить правильно значения
2. С другими драйверами- они у вас используются, вероятнее всего, для подкачки каких- то данных из вне.
. Так что оставьте как есть.

Если не клиент-серверная обработка, то тогда пытайтесь оптимизировать свои броузы.
Возможно, придется переписывать большее количество кода, чем при переходе на sql(клиент-сервер)
Если возникнут сложности - пишите или здесь , или info@soft-center.ru
Алексей
Алексей, спасибо. Получается, что эти хваленные *.tps в сети не такие крутые, как в монопольном режиме?
А если не связыватьть с SQL, куда нужно смотреть вперед?
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Re: Обновление Browse на компьютерах по сети

Сообщение Shur »

Не надо делать скоропалительных выводов.

IKSoft вам предлагает совершенно нормальную вещь -- временной штамп LastFefreshDateTime (только я бы назвал LastUpdateDateTime). Сделайте его в отдельной табличке, обновление которой вы, кстати, можете повесить на клиентский триггер (если у вас версия Клариона позволяет их создавать).
Далее таймером смотреть его изменение (считывается только одна запись), и если он изменился, то тогда делайте рефреш броуза.

А то что tps быстрее или медленнее sql, то многое зависит от того, что и как вы делаете, хотя бы: тащите ли вы все данные из таблицы на клиента, а потом их фильтруете или же сразу в sql-запросе задаёте фильтр и таким образом передаёте обработку на sql-сервер и т.д.
Ответить