|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
Здравствуйте форумчане. Визуально себе задачу нарисовал легко и был уверен что легко справлюсь но на деле не так просто, сломал голову и никак не могу решить вот такую проблему: 1. Есть разделённая БД (т.е. таблицы отдельно, а интерфейсы для пользователей отдельно). 2. Интерфейс 1 имеет флажок который при включении должен активировать переключатель в Интерфейсе 2, и соответственно наоборот - флажок снял-переключатель стал не активным. Доп. инф.: переключатели применяют в Интерфейсе 2 тот или иной фильтр по записям, записи все находятся в одной таблице. в голове крутится но наверно замыленым разумом уже не могу додуматься. натолкните на мысль кто чем сможет))) Можно языком встроеных макросов, можно на VB, как угодно!!! заранее всем большое спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 13:12 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
Дополню: главное от вас ИДЕЯ, реализация за мной, просто кончились идеи через что связать эти элементы ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 13:49 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
Поскольку интерфейсы (как я понял, в данном случае имеется в виду не две разные формы в одной интерфейсной БД, а именно две разные интерфейсные БД, возможно, идентичные) независимы, и даже, возможно, исполняются на разных рабстанциях, единственным средством обмена данными между ними остаётся собственно БД с данными. Так что заведи там служебную таблицу и клади в неё текущее состояние переключателя из первого интерфейса. А во втором по таймеру запрашивай его состояние, и в зависимости от полученного значения делай те или иные действия. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 13:58 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
Akina, Всё правильно поняли - одна БД - таблицы, интерфейсы тоже разные БД с разным набором форм. теперь собственно по Вашему предложению - эта мысль у меня и была первой. но вот в чем проблема. есть таблица ЗАДАЧИ, в которой собраны сотни записей. Оба интерфейса читают из этой таблицы. добавил таблицу с 1-м логическим полем в БД с таблицами, в которое собирался записывать значение с флажка в интерфейсе 1, НО при добавлении на форму интерфейса1 этого поля access запрашивает каким образом установить связь этого поля с таблицей ЗАДАЧИ, которая является источником записей для этой формы? а использовать поле из таблицы никак не связанной с формой не знаю как... прилагаю скрин схемы данных, в центре таблица ЗАДАЧИ и слева таблица Разрешения, там одно поле состояние(логическое), но записать в него ничего не получается... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 14:23 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
Akina, вкратце вопрос такой - как обратиться к полю не связанной ни с чем таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 14:44 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
9090, растолкуй... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 15:12 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
sansanytchAkina, вкратце вопрос такой - как обратиться к полю не связанной ни с чем таблицы? LOOKUP. Тынц: http://www.sql.ru/forum/actualsearch.aspx?search=LOOKUP&sin=0&bid=4&a=&ma=0&dt=-1&s=1&so=1 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 15:14 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
ТС Вам нужно узнать в реальном режиме времени изменились ли записи? Если таблица прилинкованная ну и пишите че захотите в чем все таки проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 15:25 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
9090, ну и я это понимаю, НО конкретно через какой элемент этой БД связь создать, пробую поле отдельной таблицы, но как в него записать 0 или -1 (поле логическое) с формы, у которой источником записей одна таблица ЗАДАЧИ и связи у неё с таблицей Разрешения нет и быть не может. см. схему данных... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 15:27 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
ROI, в реальном времени не нужно, буду проверять по событию обновления формы. проблема как заставить форму проверить состояние (0 или -1) записано в поле не связанной с этой формой таблицы... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 15:29 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
sansanytch9090, ну и я это понимаю, НО конкретно через какой элемент этой БД связь создать, пробую поле отдельной таблицы, но как в него записать 0 или -1 (поле логическое) с формы, у которой источником записей одна таблица ЗАДАЧИ и связи у неё с таблицей Разрешения нет и быть не может. см. схему данных... Ну создайте поле "состояние " в "Задачи". Мне непонятна логика чего этим полем вы хотите добиться, по этому такие ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 15:33 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
ROI, Может и я чего то не так объясняю... попытаюсь более детально и по существу: таблица ЗАДАЧИ содержит все задания БД, к ней привязано несколько таблиц как источники для полей со списком. далее имею форму где отображаются записи, исходя из примененного к ним фильтра, фильтры применяются в виде переключателей. в Интерфейсе1-(босс) хочет ставить\снимать галочку чтобы в Интерфейсе2-(исполнитель) активировался\деактивировался переключатель для применения фильтра. ОБА интерфейса - это разделенная форма с источником записей - таблица ЗАДАЧИ, таблица Разрешение НИКАК не свазана, поэтому как бы я с формы не обращался к таблице Разрешения (а точнее полю Состояние этой таблицы) - ничего не получается, ни записать 0\-1 из интерфейса1 через флажок, ни прочитать из Интерфейса2 что там в поле Состояние, чтобы исходя из результата сделать активным или нет фильтр. вот как то так. добавляю пару картинок обоих интерфейсов и обведенных элементов управления, которые собссно и нужно увязать в одно целое, схема данных БД с таблицами выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 16:00 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
интерфейс 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 16:00 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
интерфейс 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 16:01 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
9090, в смысле не моё??? не могу объяснять или БД не моя? с первым может и соглашусь а второе - БД моя с нуля созданная... интересует чтобы Флажок из одной БД (интерфейс1) отключал или включал переключатель в другой БД (интерфейс2). Флажок и переключатель обвел красным на скринах. как я понял реализовать нужно через таблицу в основной БД(скрин её схемы данных выложил выше). Но вот как??? полагаю логика такая: это в обработчик событий для флажка на форме Интерфейса1 if [флажок_на_форме]=0 then [Разрешения].[состояние]=0 else [Разрешения].[состояние]=-1 и это в обработчик событий при обновлении формы или в таймер на форме Интерфейса2 if [Разрешения].[состояние]=0 then [переключатель_на_форме].[включено]=False else [переключатель_на_форме].[включено]=True как то так... поправьте если что-то не так мыслю... проблема в том что в первом случае как записать в таблицу состояние флажка и соответственно во втором как считать его из таблицы... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 18:07 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
9090, ну пусть БД - файл с расширением accdb под интерфейсами имею ввиду разные accdb-файлы, в каждом из которых разные формы, запросы и макросы для работы с одной и той же таблицей записей, находящейся в другом файле accdb.(разделённая база данных) Т.е. руководитель, открывет свой файл и с помощью формы работает с записями по своим нуждам, а подчиненный открывает свой файл и работает в похожей форме но с немного ограниченными возможностями. каждый запускает свой файл(интерфейс) локально с своего рабочего стола, а основная база данных лежит на серваке... вот шеф захотел теперь посредством своего волеизъявления клацанием на флажок у себя на форме включать или отключать подчинённым один из переключателей, отвечающий за применение определенного фильтра в ихней форме. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 21:00 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
sansanytch, фигня какая-то... но реализовать как два пальца об асфальт: 1. Делаем общую таблицу с туевой хучей полей типа логическое и привязываем ее по сетке к приложению... 2. Делаем форму на основании этой таблицы - и проверяем что чеки боксы меняются и сохраняются... такая форма будет у всех (и абсолютно одинаковая). 3. Делаем форму идентификации для входа в приложение, если вошел шеф - все чеки боксы на этой форме делаем .Enabled = True, если это не шеф, то .Enabled = False... Делать разные (совсем разные) интерфейсы для каждого юзера - дурдом.... ну или я вообще ничё не понял, ориентируюсь на помыслы Акины... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 22:23 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
vmag,самих интерфейсов всего 2 - в одном экземпляре для шефа и пару троек одинаковых у секретарей... Делаем общую таблицу с туевой хучей полей типа логическое есть такая таблица, правда там уева туча а только одна запись, но дело не в количестве а вто м что она никак не связана ни с одной таблицей... и привязываем ее по сетке к приложению... к чему именно??? Делаем форму идентификации для входа в приложение так и сделано... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2015, 22:34 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
sansanytchесть такая таблица, правда там уева туча а только одна запись, Ну да, одна запись с нужным количеством логических полей... sansanytchк чему именно??? ни к чему конкретно... просто у приложения в закладке таблицы должна быть и эта таблица как и те, которые валяются на сервере... Шеф её может править (через форму, которая создана на базе этой таблицы) а остальные нет - только смотрят... но у остальных, в зависимости от сочетания состояния этих комбобоксов делается алгоритм обработки и естественно при помощи vba ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 00:27 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
sansanytch, см. форму для шефа и форму не для шефа (естественно это для наглядности, а так вообще-то это должна быть одна форма, с результатом доступности после авторизации), ну и таблица у всех одна (одинаковая, прилинкованная с сервера) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 00:54 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
sansanytchполагаю логика такая: это в обработчик событий для флажка на форме Интерфейса1 if [флажок_на_форме]=0 then [Разрешения].[состояние]=0 else [Разрешения].[состояние]=-1 и это в обработчик событий при обновлении формы или в таймер на форме Интерфейса2 if [Разрешения].[состояние]=0 then [переключатель_на_форме].[включено]=False else [переключатель_на_форме].[включено]=True как то так... поправьте если что-то не так мыслю... проблема в том что в первом случае как записать в таблицу состояние флажка и соответственно во втором как считать его из таблицы ...Если уж Вам так нравится такой подход, то 1. "как записать в таблицу состояние флажка" Код: vbnet 1.
2. "как считать его из таблицы" - Я правильно понимаю, что радиокнопки "все (Действ...+Архив)", "все (Действ...)", "на будущее", "на сегодня" - это группа переключателей, а "все ПЮИ разрешены" - это дополнительный признак, не входящий в эту группу? Если да, то "все ПЮИ разрешены" лучше сделать флажком. - Источник данных для "все ПЮИ разрешены" Код: sql 1.
По таймеру обновление (вариант с таймером для меня сомнителен, но потом сами определитесь) Код: vbnet 1.
и, наверное, отключение/включение доступа к радиокнопкам "все (Действ...+Архив)" и "все (Действ...)" Код: vbnet 1. 2.
возможно, потребуется сначала обновить набор задач в соответствии с запретом и перевести фокус, если он был на "все (Действ...+Архив)" или "все (Действ...)". ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 01:18 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
__Michelle, спасибо за пункт 1, а вот по пункту 2 немного неточно: - Я правильно понимаю, что радиокнопки "все (Действ...+Архив)", "все (Действ...)", "на будущее", "на сегодня" - это группа переключателей, а "все ПЮИ разрешены" - это дополнительный признак, не входящий в эту группу? последний "все ПЮИ разрешены" тоже переключатель как и все остальные, просто разместил его так, он тоже как и все остальные применяет к записям определенный фильтр, просто шеф имеет некоторые свои записи, которые не хочет показывать секретарям, но в какой то момент он ставит у себя отметку что можно и после этого флажком включает этот переключатель и секретари могут применить фильтр, отобразив эти записи. планирую проверять состояние флажка с формы шефа, чтобы как можно быстрее активировать или деактивировать переключатель "все ПЮИ разрешены" через событие "после обновления" самой формы, думаю, что при переходе на другую запись или любого изменения должно срабатывать это событие, тем самым состояние переключателя всегда будет в актуальном состоянии. Подскажите только макрос или код VBA. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 10:12 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
vmag, спасибо за пример, интересное решение, немного не то, т.к. формы шефа и не_шефа находятся в разных файлах но ваш пример думаю найдет своё применение ибо шеф любитель таких фич))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 10:20 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
__Michelle, допилил ваш пункт 1 - ЗАРАБОТАЛО!!! с небольшими поправками, а именно в событие После обновления разместил вот это: CurrentDb.Execute "UPDATE [Разрешения] SET [состояние] = " & [разрешить_АДМ] & " " Огромное спасибо, первая подсказка и в точку!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 10:31 |
|
Связь элементов управления в разных интерфейсах одной разделённой БД
|
|||
---|---|---|---|
#18+
__Michelle, Огромное спасибо по Варианту 2. как раз то что нужно с DLOOKUP в таймер воткнул вот такое: Dim varX As Boolean varX = DLookup("[состояние]", "Разрешения") If varX = False Then всеПЮИразр.Enabled = False Else всеПЮИразр.Enabled = True где "всеПЮИразр" - имя переключателя и ВСЁ заработало как часики!!! огромное Вам спасибо!!! ВСЕМ ПРИНИМАВШИМ УЧАСТИЕ ТАКЖЕ ВЫРАЖАЮ БЛАГОДАРНОСТЬ. СЧИТАЮ ТЕМУ ЗАКРЫТОЙ! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 14:15 |
|
|
start [/forum/topic.php?fid=45&fpage=125&tid=1614427]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 476ms |
0 / 0 |