Multiuser problem in 55h

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Народ. Когда-то давно я много и упорно писал на CDD, CFD и немного
на CW 2.0. Теперь понадобилось дописать к старой проге модуль на CW 5.5,
и вот, что я обнаружил : если запустить две копии программы и в одной
из них сделать Insert, то в другой видна пустая добавленная запись (что нормально), но из нее она прекрасно удаляется ! Т.е. никакого блокирования
записи не происходит (в CFD такого не было). Причем после удаления (а глупый
юзер обязательно удалит "лишнюю" запись) окно-форму закрыть не удается,
оно ругается без возможности выхода.

Понятно, что руками это исправляется. Но, может быть, я просто не нажал
какую-нибудь пимпочку ?

driver - Clarion 2.1
Написал: Абагян(52)
Гость

Сообщение Гость »

почитай конференцию, не так давно это очень подробно разжовывалось и предлагалось много вариантов решения данной проблемы.

Andrew Myalin
andrew@arsis.ru
http://mavcla.arsis.ru (MAV Direct ODBC)
ICQ: 10659412
Yahoo group: clarion@yahoogroups.com

(Добавление)
Теперь понадобилось дописать к старой проге модуль на CW 5.5, и вот, что я обнаружил : если запустить две копии программы и в одной из них сделать Insert, то в другой видна пустая добавленная запись (что нормально), ...
"Нормально" только в том смысле, что добавленная запись существует, но ненормально, что ее видят другие пользователи. Поставь на нее фильтр. Можно сделать следующее. В одно (или не только в одно) из обязательных текстовых полей вписать что-то типа "Введите имя пользователя" и сделать фильтр на '~='. И ес-но в валидаторе записи проверить, что юзер ввел туда что-то свое.
Или совсем просто - при просмотре использовать ключи с атрибутом OPT.
но из нее она прекрасно удаляется ! Т.е. никакого блокирования записи не происходит (в CFD такого не было). Причем после удаления ...
Не происходит. В CFD блокирование было в шаблоне Child, который все делел под транзакцией, и получалась, по сути, однопользовательская система.
(а глупый юзер обязательно удалит "лишнюю" запись) окно-форму закрыть не удается, оно ругается без возможности выхода
Странно. Должна вываливаться из формы.

Nick Tsigouro <nick@arsis.ru>
Написал: ClaList(2)
Гость

Сообщение Гость »

Извиняюсь, предварительно просмотрел весь форум - ничего не нашел. Наверное, упало в какой-нибудь архив.

Все обходные маневры понятны. Фильтр почему-то здорово тормозит
обновление страницы, а OPT не пройдет из-за Auto Number.
В общем, нет нормального универсального решения.

Насчет Child в CFD неправда, отродясь им не пользовался. Во
всех стандартных Update-формах отрабатывает нормальный
hold без транзакций - только что проверил. Программа, кстати,
прекрасно работает с 95 года в многопользовательском режиме.
Вот, решил дописать кусок на CW, а тут мелкие пакости всякие.
Написал: Абагян(52)
Гость

Сообщение Гость »

Понятно, что руками это исправляется. Но, может быть, я просто не нажал какую-нибудь пимпочку ?
В CFD-шаблонах использовалась блокировка текущей редактируемой записи. В CW-версиях от этого ушли.
Поэтому такие вещи, о которых ты пишешь, теперь должны решаться самим разработчиком.
Все обходные маневры понятны. Фильтр почему-то здорово тормозит обновление страницы, а OPT не пройдет из-за Auto Number.
Фильтр, настроенный ТОЛЬКО на отсечение записей, находящихся в процессе добавления, НЕ может сильно сказываться на скорость обновления бровза! Очевидно, что проблема в чем-то другом. Кстати, эту фильтрацию можещь запросто вынести из фильтра VIEW прямо в код, например в точке вставки фильтр по записям. На скорость это практически не повлияет.
Но зато удобнее, да и не надо "засорять" сам фильтр VIEW, который должен нести несколько другую функциональность.
Это, как раз, и есть универсальное решение, подходящее практически для всех таблиц.

Можешь еще использовать логическую блокировку добавляемых записей, против которой недавно в этом списке рассылки яростно выступали некоторые коллеги.

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

=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com

Библиотека DynaLib
http://dynalib.narod.ru
Написал: ClaList(2)
Ответить