Консультация № 190550
09.02.2017, 23:10
0.00 руб.
0 6 0
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Надо поправить логику работы формы в базе аксесс 2003, база не моя, приходится разбираться с ней. Предполагается что с ней будет работать сразу два пользователя и нужно сделать автоматическое обновление формы у пользователей при изменении одним из них, точней на форме должны автоматически переключатся кнопки из отжатого в нажатое положение (с этим разобрался). Загвоздка встала в том что бы определить было ли изменение в базе за прошедшее время или нет (к примеру за 1-3 сек)? Тупо по таймеру обновлять форму думаю не правильно, логичней обновлять только в случаи обновления записей.

Обсуждение

давно
Профессионал
848
1596
10.02.2017, 10:48
общий
С аксесс 2003 не работаю, но почитав бегло форумы пришел к выводу, что триггеров нет, значит обратную связь как делать не известно. Так что таймер. Была бы база на ms sql...
на форме должны автоматически переключатся кнопки из отжатого в нажатое положение (с этим разобрался)

Если я правильно понял, то Вы разобрались как обновлять состояние переключателей на форме одного пользователя, когда переключатели изменяет другой пользователь на своей форме?
Если это так, то тогда если на одной форме нажимают кнопку "сохранить данные", то это и будет сигналом для другой формы, что записи в базе обновились.
давно
Профессионал
153662
1070
10.02.2017, 13:48
общий
Адресаты:
Здравствуйте. Тоже в интернете толком не нашёл ни чего. Нет пока только разобрался как вообще обновить по команде состояние переключателей. Пока думаю в каком нибудь поле таблицы заносить метку если была нажата какая нибудь кнопка на форме, а в таймере делать запрос к этому полю. Нужно обновлять состояние до нажатия кнопки сохранить, что бы не вышло что оба одновременно будут давить на одну кнопку.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Профессионал
848
1596
10.02.2017, 14:43
общий
Адресаты:
Ну или сделать отдельную табличку, в которую бросать действия. Типа этого.
[code lang=sql]CREATE TABLE Actions
(
action varchar(50) NULL,
usr1 bit NULL,
usr2 bit NULL
)

--действие на 1 клиенте
INSERT INTO Actions VALUES('btn1=true', 1,0)

--действие на 2 клиенте
INSERT INTO Actions VALUES('btn1=true', 0,1)

--первый клиент забирает действия второго
Select action From Actions Where usr1=0
Delete From Actions Where usr1=0
--второй клиент забирает действия первого
Select action From Actions Where usr2=0
Delete From Actions Where usr2=0[/code]

Забор действий и удаление должны как-то происходить в 1 транзакции.
Пользователей разложил в столбцы, т.к. при добавлении 3-го пользователя проще будет переделать запросы.
давно
Профессионал
153662
1070
11.02.2017, 12:15
общий
Адресаты:
В принципе я думаю можно и так. Проблема ещё в том что я не знаю встроенный бэйсик в акссесе, приходится пользоваться навыками программирования в делфи на паскале и статьями из нета.
Об авторе:
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

давно
Старший Модератор
312929
1973
19.02.2017, 03:27
общий
Адресаты:
Можете оформить последнее сообщение как ответ.
давно
Профессионал
848
1596
21.02.2017, 10:33
общий
Адресаты:
Сорри, маленько не успел
Форма ответа