powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / 3 телемаркетолога и Access
25 сообщений из 51, страница 2 из 3
3 телемаркетолога и Access
    #39368285
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТоликmanMrShin, вот за все это огромное спасибо!

Так, на всякий случай - в моем варианте физически нельзя получить одну и ту же заявку более чем одному юзеру, это реализовано на уровне схемы БД...
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39368355
Толикman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmagТак, на всякий случай - в моем варианте физически нельзя получить одну и ту же заявку более чем одному юзеру, это реализовано на уровне схемы БД...

Так MrShin пишет про кэши, на уровне схем то все ОК, но если кэш не залился в сеть, то схема ни схема а другой юзер не видит этих данных, или я ошибаюсь?

Я попробую сегодня/завтра протестировать твой вариант)
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39368402
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Толикmanно если кэш не залился в сеть

да мне как то эти кэши ...
- Запрос на изменение в таблице прямой (захват заявки)
- Проверка перед захватом тоже прямо в таблице (кинжальная)
имхо должно работать - максимальная плюха которая теоретически может быть это когда все по команде нажмут одновременно кнопку "Взять заявку в обработку!" и все захотят одну и ту же заявку - при этом заявка упадет только кому-то одному, а у других ничего не изменится, только в списке свободных заявок этой заявки уже не будет... но и эту ситуацию можно обыграть - при нажатии кнопки "Взять заявку..." посчитать в начале сколько заявок в работе у этого юзера (в левом списке), а после захвата обновить список и опять посчитать сколько стало, если количество не изменилось, то выдать комментарий - Извини, не успел!...
Чем меньше надобности в танцах с бубнами - тем надежнее система...
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39368673
Толикman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag- Проверка перед захватом тоже прямо в таблице (кинжальная)
Как же, акс ведь из кеша может дернуть эту инфу, я такое наблюдал...
а потом он тупо запустит запрос на изменение, который не позарится на внесенные недавно изменения, вот это и генерирует проблему...
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39368750
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТоликmanЯ попробую сегодня/завтра протестировать твой вариант)
ТоликmanКак же, акс ведь из кеша может дернуть эту инфу, я такое наблюдал...
после тестирования, пожалуйста отпишитесь о результате, для меня это тоже важно, до сих пор проблем не было, от 5 до 10 юзеров ни разу не перехлестнулись лет за 10, правда ситуация немного другая, но подход такой же - захваты по признакам сразу из таблиц и сразу в таблицах, а не на базе запросов и в запросах...
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369027
Толикman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmagпожалуйста отпишитесь о результате, для меня это тоже важно

Сегодня и завтра не выйдет потестить, только в ПН.
Сейчас все подготовлю для этого.
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369076
Толикman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin,

Вопросы появились:

Если я выключу транзакции в запросе к одной таблице, чем я рискую? По логике вещей - ничем, верно? Там идет обновление 3-х записей в одной таблице. Риск потери данных из-за выключения компа точно такой же, как и при завершении транзакций, верно?

Про 100 милисекунд - как на практике происходит соревнование за доступ к ресурсу? Жесткий диск разве сам не выстраивает очередь? Один юзер получит доступ, а другой получит отказ и повторит попытку только через следующие 100 милисекунд, верно?
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369137
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Толикman,

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

Вообще я сам не совсем понял, зачем требуется менять задержку, если таблица СНАЧАЛА блокируется и на чтение и на запись, а уже только потом что-то делается с данными. Задержка и число попыток требуются вообще-то при попытке записи изменений, когда таблица/запись оказывается заблокирована другим пользователем, в данном случае ошибка произойдет уже на этапе создания рекордсета и повторных попыток Акс автоматом делать не будет, насколько я понимаю, хотя могу и ошибаться. Полного описания как именно происходят блокировки с временными циклами я не видел. Возможно, реальная блокировка происходит все-же не в момент открытия рекордсета, а позднее, тогда задержка уже нужна.

В общем, в вашем случае я бы не особо заморачивался с многопользовательскими штучками, т.к. вероятность того, что ваши 3 несчастных пользователя нажмут кнопку одновременно ничтожно мала. Они нужны, когда автоматические процессы меняют тысячи записей подряд, и действуют несколько таких процессов одновременно. В этом случае вероятность коллизий резко возрастает. А для такого рода задач я бы Акцесс не выбрал, для этого есть серверные базы данных.
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369202
Толикman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShinВ общем, в вашем случае я бы не особо заморачивался с многопользовательскими штучками, т.к. вероятность того, что ваши 3 несчастных пользователя нажмут кнопку одновременно ничтожно мала. Они нужны, когда автоматические процессы меняют тысячи записей подряд, и действуют несколько таких процессов одновременно. В этом случае вероятность коллизий резко возрастает. А для такого рода задач я бы Акцесс не выбрал, для этого есть серверные базы данных.

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

Я до последнего отказываюсь от VBA, мне в 99 из 100 случаев достаточно штатных макросов, что позволяет избежать потребности в безусловном разрешении выполнения всех кодов VBA. Раньше я каждый чих пытался прописать в VBA, но когда понял, что в аксе лучше ничего серьезного даже не проектировать, то ушел от этой концепции, и зачастую оказывается, что есть более оптимальные решения и без VBA, просто не хватает знаний возможностей приложения.

Транзакции по умолчанию включены во всех запросах (созданных через конструктор) акса. И как я понял, при выполнении макроса, акс открывает транзакцию и только после его завершения закрывает ее. а у меня там прилично запросов подряд выполянется, сначала резервируется клиент, а потом дописываются данные в связанные таблицы (подтягивается список услуг, информация по речевому модулю и всякая мелочь) - видимо все это идет в рамках одной транзакции... А когда еще и форма открывается (также из штатного макроса) то транзакция видимо вообще закрывается после закрытия формы, соответственно только тогда и происходит отложенная запись изменений. Такие выводы делаю из-за очень частых конфликтов (я тоже считаю что вероятность в один момент направить запрос к БД крайне мала, там ведь даже не секундами считается). Сейчас выключил в ключевых запросах транзакцию, буду пробовать так... Если и это не поможет, то напишу логику на VBA.
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369238
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТоликmanЯ до последнего отказываюсь от VBA

у меня есть мопед, но я до последнего не пользуюсь мотором - кручу педали когда езжу...
Тут как-то кажется DB. (могу ошибаться) сказал: на акцессе можно реализовать всё, ну по крайней мере - почти всё... естественно, вне VBA эта фраза теряет всякий смысл...
Думаю, владей бы вы VBA - этого топика не было бы вообще...
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369549
Толикman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Конечно, я ждал такой реакции, хорошо еще фото помидора не прикрепили :)
Все, что я ниже написал - это моя призма.

vmagу меня есть мопед, но я до последнего не пользуюсь мотором - кручу педали когда езжу...
Не согласен с аналогией. VBA - это лом, против которого нет приема.
Он нужен когда штатных функций недостаточно.
Например хешировать пароль, создать несколько экземпляров одной формы, импортировать данные из excel с динамической шапкой и т.д.. - но тут же возникают проблемы безопасности...

Но когда на форуме поднимаются темы, типа: "Как выполнить несколько запросов подряд", "как посчитать количество рабочих дней", "как обратиться к элементу подчиненной-подчиненной формы" и первые советы сразу из VBA.
Хотя для всего этого у акса уже есть инструменты, не требующие VBA, но мы их не изучаем, потому что проще на VBA.

vmagТут как-то кажется DB. (могу ошибаться) сказал: на акцессе можно реализовать всё, ну по крайней мере - почти всё... естественно, вне VBA эта фраза теряет всякий смысл...

Конечно. Даже больше. Если заменить в фразе Access на Excel, то утверждение также останется верным!

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

И что на счет параметров безопасности? Представляете какая дыра появляется, когда разрешаешь выполнять все VBA-макросы без подтверждения? Ведь на VBA можно сделать все! Или нужна подпись, а если есть центр сертификации на корпоративной сетке, то значит где-то есть и MSSQL, зачем вообще тогда Access - максимум - интерфейс к MSSQL (Вот здесь можно, может даже нужно, работать с VBA, чтобы при компиляции скрыть логику)...

Акс отличная песочница, для тех кто хочет получить основы БД, но нельзя на нем строить серьезные решения. А раз нельзя, то зачем сразу все усложнять в VBA? Вот хорошая фраза:

Закон МейераУсложнять — просто , упрощать — сложно
Стоит тебе уйти с рабочего места, как твои плоды сразу прекращают обслуживаться - в VBA никто разбираться не будет, развития решение получать не будет. Будут либо тебя дергать, либо откажутся от твоего решения. А подключать нового человека из вне - вопрос доверия. Чем проще решение на выходе - тем лучше.

Лично мое использование акса сводится к автоматизации повторяющихся запросов и создания форм ввода данных, и лишь для этого VBA явно не нужен.
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369580
хм-м-м
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Толикman,
нет ли противоречия в этих утверждениях?
Толикman...для всего этого у акса уже есть инструменты, не требующие VBA, но мы их не изучаем, потому что проще на VBA...Толикman...Стоит тебе уйти с рабочего места, как твои плоды сразу прекращают обслуживаться - в VBA никто разбираться не будет...
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369588
Толикman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хм-м-м,

да здесь же о другом.
Все кто мутит решения в аксе - это мы, здесь и общаемся.

А на работе такие решения появляются в двух случаях:
1. Сотрудник разбирается в аксе - таких единицы;
2. Заказчик (директор/начальник) нашел доверенного фрилансера;

И стоить сотруднику уволится/сменить должность или фрилансеру перестать заниматься поддержкой своих решений (все развиваются, все растут, времени не хватает), как решение оказывается заброшенным, и со временем у заказчика появляются потребности по ее развитию.

А если решение написано на VBA, то встает вопрос о читаемости кода, здесь заказчик редко предъявляет требования. А с не читаемым кодом кто будет работать?

Ушли от темы... прошу прощения.
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369645
Фотография _bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
решается такая задача следующим образом: есть табличка "задачи", есть табличка "распределенные задачи".
отработанная задача удаляется из "распределенные задачи"
по таймеру автомат закидывает в "распределенные задачи" очередную задачку тому, у кого задачи кончились
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369671
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_bobрешается такая задача следующим образом: есть табличка "задачи", есть табличка "распределенные задачи".
хватит одной таблицы "задачи" с признаком состояния этой задачи, и тогда не нужно будет еще и других таблиц:
- решенные задачи
- не решаемые задачи
....
_bobпо таймеру автомат закидывает в "распределенные задачи" очередную задачку тому, у кого задачи кончились
такие вопросы нужно решать комплексно (технически+организационно) ибо много вопросов:
- что значит задачи кончились? (если таймер сработал, а у всех есть еще текущие задачи)
- я хитрый менеджер - мне упали задачи, я их не делаю, остальные делают, у меня их всегда больше всех, я уехал по своим делам, в конце дня сделал штук 10 и так каждый день, в конце месяца получил как все оклад (нужно вводить кучу правил, нормы, нормативы)
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369784
Фотография _bob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag_bobрешается такая задача следующим образом: есть табличка "задачи", есть табличка "распределенные задачи".
хватит одной таблицы "задачи" с признаком состояния этой задачи, и тогда не нужно будет еще и других таблиц:
- решенные задачи
- не решаемые задачи
....
_bobпо таймеру автомат закидывает в "распределенные задачи" очередную задачку тому, у кого задачи кончились
такие вопросы нужно решать комплексно (технически+организационно) ибо много вопросов:
- что значит задачи кончились? (если таймер сработал, а у всех есть еще текущие задачи)
- я хитрый менеджер - мне упали задачи, я их не делаю, остальные делают, у меня их всегда больше всех, я уехал по своим делам, в конце дня сделал штук 10 и так каждый день, в конце месяца получил как все оклад (нужно вводить кучу правил, нормы, нормативы)

технически+организационно это решается автоматизацией колл-центра с очередями, сдельной оплатой и многим другим
ТС задал конкретный вопрос: как решить технически на акцессе
умничать не надо
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369786
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТоликmanА на работе такие решения появляются в двух случаях:
1. Сотрудник разбирается в аксе - таких единицы;
2. Заказчик (директор/начальник) нашел доверенного фрилансера;
Маловато у вас информации по этому поводу. Многие крупные компании сознательно выбирают Акс в качестве основы для вспомогательных решений именно из-за мощности, гибкости и достаточно простой поддержки приложений. В большинстве своем, конечно, сама база на основе SQL серверов, но есть и исключения. Например General Motors для планирования заказов по запчастям использует Access с "родной" файловой базой, причем работает это на основе данных, выгружаемых из SAP. SAP, конечно, хорош, но интерфейс уж больно убогий, а написание нормального дружественного интерфейса стоит баснословных денег. Знаю многие другие крупные компании, использующие Акцесс совсем не по упомянутым причинам.

Что касается VBA - да, если вы используете Акс только для построения запросов, то он особо и не нужен. Потом людям начинает хотеться бОльших удобств, и вы начинаете упираться в "потолок" возможностей штатных средств и все равно приходится переделывать на VBA.
Сами приложения получаются при правильном подходе не намного отличающимися от решений на том же "промышленном" VB.NET, если это, конечно, не требуем многопоточности и еще некоторых возможностей, которых нет в VBA.
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39369840
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если решение написано на VBA, то встает вопрос о читаемости кода, здесь заказчик редко предъявляет требования. А с не читаемым кодом кто будет работать?

А если решение написано на куче макросов, в нем разобраться намного проще? кто с этим будет работать...... Если заказчик не предъявил требований, а разработчику все равно, то неуправляемую лапшу и на макросах можно сделать, особенно в случаях как этот - когда нужно точно добиваться обновления кешей и проталкивать изменения в какие-то моменты....
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39370268
Толикman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag,

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

Я реализовал без VBA эту тему.
Запрос на бронирование очереди сделал с выборкой на 3 записи.
Таким образом резервируется 3 записи вперед.
И каждый раз при выборе нового задания система отбирает 3 записи, еще не отработанные сотрудником, включая ранее им зарезервированные. Т.е. добавляется одна новая запись - на ней ставится резервация.

Вот запрос на выборку:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
SELECT TOP 3 
 Предикторы_локал.Код, 
 Предикторы_локал.Зарезервировал, 
 Предикторы_локал.[Дата резервации]
FROM 
 Предикторы_локал 
 LEFT JOIN Сессии_активные ON Предикторы_локал.Зарезервировал = Сессии_активные.Сотрудник
WHERE 
 (
  (
   (Предикторы_локал.[Дата резервации]) Is Null 
   Or (Предикторы_локал.[Дата резервации])<Now()
  ) 
  AND ((Предикторы_локал.Звонок) Is Null) 
  AND 
  ((([Сессии_активные]![Код] Is Null) Or ([Предикторы_локал]![Зарезервировал]=[TempVars]![Телемаркетолог]))=True) 
  AND ((Предикторы_локал.Экспорт)=False)
 )
ORDER BY 
 ([Предикторы_локал]![Зарезервировал]<>[TempVars]![Телемаркетолог]) Or ([Предикторы_локал]![Зарезервировал] Is Null) DESC,
 [Предикторы_локал]![Речевой модуль]=[TempVars]![РМ], 
 Предикторы_локал.Приоритет DESC , 
 Предикторы_локал.[Срок отработки], 
 Предикторы_локал.Код;



И запрос на обновление:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
UPDATE 
 Предикторы_резервирование_отбор 
SET 
 Предикторы_резервирование_отбор.Зарезервировал = [TempVars]![Телемаркетолог], 
 Предикторы_резервирование_отбор.[Дата резервации] = Now()
WHERE 
 (
  (
   (Предикторы_резервирование_отбор.Зарезервировал)<>[TempVars]![Телемаркетолог] 
   Or (Предикторы_резервирование_отбор.Зарезервировал) Is Null
  )
 );


Здесь видно, что сначала в работу попадают задачи, зарезервированные раньше остальных.

Конфликты остались, но они происходят в задачах до которых юзер еще не дошел, и у него есть 2 задания в запасе для нивелирования конфликта.

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

Единственный возможный явный конфликт - если при старте системы все одновременно начнут работать - здесь я создал форму-прелоадер, которая по таймеру (раз в 2 сек) проверяет успешно ли записались данные - это окно вываливается единожды при начале работы. Стресс тест не выдал конфликтов.

В целом стало даже быстрее работать.
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39370273
Толикman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Толикmanvmag,

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


Забыл написать, в том сообщении приложен твой файл БД (сразу после конфликта) и скриншоты с двух ПК.
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39370418
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТоликmanПротестировали мы.
Выбрали юзеров и по команде нажали на кнопки.
У обоих в списках задач появилась эта задача.

мдя... очевидное - невероятное... верю на слово...
напрашивается необходимость все таки одного централизованного раздатчика в данном случае...
ну раз дожал свой вариант - молодец, чего уж сказать тут...
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39370452
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmagнапрашивается необходимость все таки
использовать нормальную базу, допустим https://msdn.microsoft.com/ru-ru/library/hh510202.aspx , а акс как фронт-енд, возможно? с нормальными индексами, блокировками. ну и часть кода на vba, которая правильно с этим обращается.

ну или использовать как блокировщик допустим файл с каким-то именем на сетевом ресурсе,
https://msdn.microsoft.com/ru-ru/library/office/gg264163.aspx

открываем монопольно. Открылся - работаем, не открылся - говорим юзеру - попробуй попозже.... сразу как только критическая секция пройдена, и данные гарантированно сброшены на диск - файл закрывается. (вба, с транзакциями, с прочтением и запушиванием буферов)
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39370714
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakovну или использовать как блокировщик допустим файл с каким-то именем на сетевом ресурсе,

+
ну да... перед захватом заявки пробовать создавать файл с именем например НОМЕР_ЗАЯВКИ.TXT, а после исполнения его удалять
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39370734
Толикman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vmag,

Так можно придумать собственную логику блокировки записей)

Мы здесь же отбрасываем вариант с использованием серверной БД, запрос был - как решить в Аксе.

Вариант с назначением диспетчера вполне актуальный, но:

1. Придется запускать отдельный файл на чьей то машине, и контролировать факт его работы. При этом этот диспетчер должен видимо каждую секунду/три распределять очередь. Ведь если появится новый сотрудник, он же не должен ждать минуту-две пока этот диспетчер очнется с очередной иттерацией. А частые запросы - это все таки нагрузка. Да может потребоваться отдельная машина, ну как минимум отдельный экземпляр.

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


Вариант с использованием файлов:

1. Дублирует логику самого акса, костыль еще тот. Писать в файл - это подключать API насколько я помню, это достаточно серьезные интеллектуальные вложения, по-моему... Конечно сейчас все копируется. Но все же.

2. какие еще подводные камни? Пока идет запись, другие могут только ждать. Работа с файловой системой влечет дополнительные сетевые ресурсы, там же каждый раз проверяется используется ли файл другим или нет, и это может порождать задержки, а если мы будем постоянно опрашивать, пока файл не будет удален, то эти задержки кратно растут.


Поэтому я искал решение проблемы распределения очереди при возникновении такой потребности.

И вариант с резервированием на несколько задач вперед вполне подошел.
Я выключил транзакции, блокировку оставил на уровне страниц, и получил решение с постоянным доступом к данным.
С точки зрения пользователя все работает.
С точки зрения решения, происходит управление конфликтами (они просто предусмотрены).
Нет задержек из-за блокировок, нет нагрузки на сеть по секундам (единственная нагрузка - раз в 5 минут обновляется сессия по сотрудникам с каждого клиента), нет тормозов в интерфейсе.

Думаю что это оптимальное решение.
Не требует сложной логики на VBA, т.е. можно реализовать штатными средствами (Макросами), можно простыми командами VBA.
Достаточно продумать логику двух запросов - на выборку и обновление.

Кстати кому интересны наблюдения за макросами:
Пока непрерывно выполняется макрос - блокировка не снимается, и если в конце макроса открывается форма - блокировка связанных с формой таблиц может сохраниться.

Чтобы блокировки с таблиц снялись надо сделать перерыв, причем это зависит от скорости работы машины, на домашнем ПК с SSD мне 250 миллисекунд было недостаточно, а 300 уже достаточно, на рабочем с сеткой это значение приблизилось к 450/500.

Прерывание можно делать формой с таймером управляя событиями "Открытие" и "Таймер", при этом останавливать сам макрос не обязательно, достаточно открыть форму в режиме диалогового окна.

Надеюсь кому-нибудь данный опыт поможет.
...
Рейтинг: 0 / 0
3 телемаркетолога и Access
    #39371486
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Толикman,

Привык как-то доводить дела до конца...
В этом файле учтена возможность синхронного нажатия по команде клавишей Enter и совет от Vladimir Baskakov (хотя и измененный)...
- В старой версии несколько юзеров смотрели одновременно одно и то же (статус заявки) и захватывали одно и то же, в результате только у одного из них на экране была гарантировано правдивая картинка результата, остальным нужно было повторное обновление списка рабочих заявок...
- В этой версии уже никто не смотрит, а пробует застолбить выбранную заявку во временной таблице tmp, естественно это получится только у одного юзера...
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / 3 телемаркетолога и Access
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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