Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314

Прописать события для формы программно

29.09.2016, 08:40. Показов 3666. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю авторизацию для своей БД и решил сделать немного унивирсально что бы в дальнейшем просто прикреплять своб авторизацию к базам.
Вопрос
1.Как можно программно добавить во все формы текущего проекта добавить вызов функции из модуля.
2. И посмотрите как можно связать таблицу Form и User.
3. Ну и может где оптимизировать можно (а там факт что можно)
Вложения
Тип файла: zip Database4.zip (57.5 Кб, 5 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2016, 08:40
Ответы с готовыми решениями:

Написать процедуру обработки события OnCreate для формы, которая устанавливает для формы размер шрифта
Задание: 1.Создать приложение с формой. 2. Поместить на форму метку и кнопку. 3. Написать процедуру обработки события OnCreate для...

Обработка события для программно созданного компонента
Добрый день! В основной программе, в обработчике события при выборе пункта меню ToolStripMenuItem, создаю программно форму. На этой...

Обработчик события для программно созданных кнопок
Помогите пожалуйста! Есть программно создаваемые кнопки в количестве, зависящем от введенного в TextBox числа. Нужно задать программный код...

30
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
29.09.2016, 09:42
Цитата Сообщение от Бормалей Посмотреть сообщение
1.Как можно программно добавить во все формы текущего проекта добавить вызов функции из модуля.
Разными способами. Вставить например в процедуру нужного события вызов функции. Или создать свободное поле на форме и задать ему источником функцию.

Цитата Сообщение от Бормалей Посмотреть сообщение
как можно связать таблицу Form и User.
Так они уже связаны в схеме данных! Или Вы про что-то более другое?

Цитата Сообщение от Бормалей Посмотреть сообщение
3. Ну и может где оптимизировать можно (а там факт что можно)
Схем авторизации великое множество. В том числе и похожих на Вашу. Надо знать требования к БД, сетевую конфигурацию, разделена ли база и прочее.
1
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
29.09.2016, 09:53  [ТС]
Не внятно объяснил.
Вообщем есть у меня готовая база (назовем итоговая)где н-е количество форм, я хочу добавить к ней авторизацию, переношу в Итоговую базу формы и таблицы Авторизации, нажимаю кнопку на форме Авторизации и во все формы базы Итоговой добавляются события
на редактирование
Visual Basic
1
Call GetRole(edit)
на добавление
Visual Basic
1
GetRole(add)
и так далее
Цитата Сообщение от mobile Посмотреть сообщение
Так они уже связаны в схеме данных!
а они правильно связаны? в этом вопрос. или можно применить другую схему связи (например с промежуточной таблицей)

Добавлено через 2 минуты
Цитата Сообщение от mobile Посмотреть сообщение
Схем авторизации великое множество. В том числе и похожих на Вашу. Надо знать требования к БД, сетевую конфигурацию, разделена ли база и прочее.
то есть сложно сделать универсальную систему авторизации?.
А еще зачем знать разделена ли база?
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
29.09.2016, 10:14
Цитата Сообщение от Бормалей Посмотреть сообщение
Вообщем есть у меня готовая база (назовем итоговая)где н-е количество форм, я хочу добавить к ней авторизацию, переношу в Итоговую базу формы и таблицы Авторизации, нажимаю кнопку на форме Авторизации и во все формы базы Итоговой добавляются события
Я бы не стал так делать. Зачем? Неужели для входа в каждую форму нужна авторизация? Авторизацию делают при входе в БД или при смене юзера. Обычно форму авторизации делают невидимой и она висит на все время сессии. Все, что нужно - имя, логин и прочее забирают из нее. Прямым обращением или функцией в событии загрузки. И я думаю, что авто

Цитата Сообщение от Бормалей Посмотреть сообщение
а они правильно связаны? в этом вопрос. или можно применить другую схему связи (например с промежуточной таблицей)
Если для каждого юзера свой набор доступных форм, то да необходима промежуточная таблица связывающая юзера и его набор форм. Если же форма у юзера одна, то достаточно ее указать в т.User, как сделано у Вас.

Цитата Сообщение от Бормалей Посмотреть сообщение
сложно сделать универсальную систему авторизации?.
Если нет специальных экзотических требований, то не так сложно. Поищите по форуму, этих форм авторизации великое множество.

Цитата Сообщение от Бормалей Посмотреть сообщение
А еще зачем знать разделена ли база?
Табличная часть может быть на sql-сервере или таблицы локальные. Табличная часть бывает, редко правда, различной для различных юзеров и тогда надо делать соответствие баз для пользователей.
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
29.09.2016, 10:30  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Поищите по форуму, этих форм авторизации великое множество.
Поискал не понравились. Да и самому надо делать так интереснее.
Цитата Сообщение от mobile Посмотреть сообщение
Неужели для входа в каждую форму нужна авторизация?
нет вход будет осуществлен один раз. Но формы же связаны с таблицами и если повесить проверку ДО обновления, До сохранения, До удаления: Авторизован/не авторизован и проверять права может добавлять или редактировать в модуль
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
29.09.2016, 10:42
Цитата Сообщение от Бормалей Посмотреть сообщение
нет вход будет осуществлен один раз. Но формы же связаны с таблицами и если повесить проверку ДО обновления, До сохранения, До удаления: Авторизован/не авторизован и проверять права может добавлять или редактировать в модуль
Это слишком сложно. Довольно часто делают иначе. Создается таблица "мета-данных", где для определенных полей форм и ролей юзеров запрещены/разрешены определенные операции. Тогда при входе в форму считываются мета-данные на форму и согласно им полям расставляется доступ: редактирование, удаление, вставка. Я даже где-то выкладывал что-то похожее. Надо поискать.
1
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
29.09.2016, 10:48  [ТС]
Цитата Сообщение от mobile Посмотреть сообщение
Создается таблица "мета-данных", где для определенных полей форм и ролей
Так это нужно будет прочитать все контролы каждой формы и дать/запретить доступ каждому пользователю?
Цитата Сообщение от mobile Посмотреть сообщение
Я даже где-то выкладывал что-то похожее.
Работа с таблицей метаданных и блокировка полей в ней оно?
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
29.09.2016, 10:54
Цитата Сообщение от Бормалей Посмотреть сообщение
Работа с таблицей метаданных и блокировка полей в ней оно?
Да она.
1
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
29.09.2016, 10:59  [ТС]
Но у меня тоже самое сделано только для форм а не для контролов. Потому что в той базе куда я хочу это при....делать больше 30 форм, и в каждой форме овердофига контролов.
Хотя можно же просто перечитать все контролы каждой формы и создать таблицу. Хотя все равно для каждой роли и формы придется выставлять права.

Но а все таки можно ли программно дописать программу? То есть Есть форма Klient. В событии до обновление есть некий код. Нужно программно вставить перед этим кодом вызов функции.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
29.09.2016, 12:23
Цитата Сообщение от Бормалей Посмотреть сообщение
вставить перед этим кодом вызов функции.
call имяфункции()
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
29.09.2016, 17:11  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
call имяфункции()
Да, спасибо.
Не туда думал. Можно же использовать
Visual Basic
1
2
3
4
5
6
7
8
For Each FrmName In Application.CurrentProject.AllForms
    SQLQ = "SELECT Resolution.frmEDIT, Resolution.frmADD, Resolution.frmDel" & _
            " FROM Forms INNER JOIN Resolution ON Forms.Êîä = Resolution.Form" & _
            " WHERE (((Forms.frmName)='" & FrmName.Name & "' ));"
    Debug.Print SQLQ
    Set zapros = CurrentDb.OpenRecordset(SQLQ)
    If zapros.Fields(0) = True Then FrmName.AllowEdits = True Else Forms(FrmName.Name).Form.AllowEdits = False
Next FrmName
только проблема в том что AllowEdits можно использовать только для открытой формы. а хотелось пробежаться по всем формам расставить разрешения.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
30.09.2016, 02:38
Так разрешения нужно под пользователя расставлять, а не под название формы. Формы вы можете и так настроить раз и навсегда в свойствах.
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
30.09.2016, 02:57  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Так разрешения нужно под пользователя расставлять, а не под название формы. Формы вы можете и так настроить раз и навсегда в свойствах.
У меня есть таблица со всеми именами форм всего проекта (получено программно) и таблица мета-данных (спасибо mobile научил этому слову) где хранятся разрешения на каждую форму для каждой роли пользователя.
Я хочу что бы эти права расставлялись при авторизации пользователя, при этом самому не прописывать в события открытия, изменения,удаления форм Вызов функции.
То есть если я начну делать другой проект и захочу что бы там была авторизация, я просто беру и импортирую из своей базы Авторизация все таблицы и формы. Нажал кнопку получить имена всех форм, создал роли, пользователей, заполнил таблицу с правами для каждой формы, расставил права и все. Не меняя код в основной базе.
Предыдущая процедура как раз и расставляет права для текущего пользователя, однако для этого нужно открыть форму, прописать ей свойство, закрыть форму. Да и проверить в многопользовательском варианте. Хотя по идее каждый пользователь работает со своим приложение форм, и не должно возникнуть проблем.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
30.09.2016, 04:50
Цитата Сообщение от Бормалей Посмотреть сообщение
То есть если я начну делать другой проект и захочу что бы там была авторизация, я просто беру и импортирую из своей базы Авторизация все таблицы и формы.
Это будет не другой проект, а точная копия этого
Поверьте, в разных задачах и доступ разный, не бывает идентичных пользователей и доступов. Что касается вашей задачи, то вам нужна функция, которая будет сверять вашего пользователя, находить форму в метаданных и сообразно прав юзера проставлять ему права. Юзеров как раз я и не вижу у вас.
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
30.09.2016, 05:02  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Это будет не другой проект, а точная копия этого
Есть готовый проект Договора, к нему надо прикрутить авторизацию. дальше по написаному.
Цитата Сообщение от alvk Посмотреть сообщение
Юзеров как раз я и не вижу у вас.
Так скачайте и откройте базу =)
Цитата Сообщение от alvk Посмотреть сообщение
не бывает идентичных пользователей и доступов
Но можно делать роли с правами, а роли присваивать пользователю. Роль: Инспектор может править Форму1 и форму2, Договорник Может править Форму 3. Иванову задаем Роли Инспектор и Договорник, и вот он уже может править все три формы.
Цитата Сообщение от alvk Посмотреть сообщение
Что касается вашей задачи, то вам нужна функция, которая будет сверять вашего пользователя, находить форму в метаданных и сообразно прав юзера проставлять ему права.
Та функция как раз это и проделывает. Но что то мне кажется не те свойства форм я использую. А при авторизации открывание закрывание всех форм проекта как то не алё.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
30.09.2016, 06:37
Цитата Сообщение от Бормалей Посмотреть сообщение
Так скачайте и откройте базу =)
Скачал, как открыть?
Цитата Сообщение от Бормалей Посмотреть сообщение
Инспектор может править Форму1 и форму2
а если только одно поле в форме 2 можно ему править?
Цитата Сообщение от Бормалей Посмотреть сообщение
А при авторизации открывание закрывание всех форм проекта как то не алё.
а это зачем? функцию на открытие каждой формы нужно вешать. (или загрузку)
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
30.09.2016, 08:42  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
а если только одно поле в форме 2 можно ему править?
так я делаю доступ по формам, а не по контролам. Права на контролы в дальнейшем тоже будут, но надо разобратся с формами.
Цитата Сообщение от alvk Посмотреть сообщение
а это зачем? функцию на открытие каждой формы нужно вешать. (или загрузку)
А я вот и не хочу что бы туда прописывать.
Цитата Сообщение от alvk Посмотреть сообщение
Скачал, как открыть?
да в мдб не конвертируется говорит удалить пустые строки. Подстановку не использовал, столкнулся уже при выводе отчетов. поэтому теперь стараюсь не использовать.
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
30.09.2016, 08:55  [ТС]
вот мдб.
Вложения
Тип файла: zip Database4.zip (67.6 Кб, 5 просмотров)
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
30.09.2016, 09:04
Цитата Сообщение от Бормалей Посмотреть сообщение
так я делаю доступ по формам, а не по контролам. Права на контролы в дальнейшем тоже будут
Э нет, в вашем случае так не пойдёт, ваши свойства работают на всю форму сразу, вы не сможете их применять частично, в контролах другие.
Цитата Сообщение от Бормалей Посмотреть сообщение
А я вот и не хочу что бы туда прописывать.
а я вот хочу небо чтоб жёлтым было
Цитата Сообщение от Бормалей Посмотреть сообщение
вот мдб.
посмотрю немного позже.
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
30.09.2016, 09:09  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
а я вот хочу небо чтоб жёлтым было
Мне бы такую проблему=)
Цитата Сообщение от alvk Посмотреть сообщение
Э нет, в вашем случае так не пойдёт, ваши свойства работают на всю форму сразу, вы не сможете их применять частично, в контролах другие.
Это почему? Я же сам буду выбирать что применять разрешения на контрол или форму.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.09.2016, 09:09
Помогаю со студенческими работами здесь

Вызов события для программно созданного компонента
Добрый вечер! У меня программно создается вкладка с richtextbox. Как я могу вызвать именно для нужного мне richtextbox событие...

Обработчик события для объекта, созданного программно
Здравствуйте. В форме программно создано кнопочное поле. Cреда Visual Studio 2010. (в файле form1.h это строки №№ 72 и 21-32) ...

Как прописать класс для всплывающей формы?
Здравствуйте,подскажите пожалуйста как прописать нужной ссылке класс?У меня есть элемент "Личный кабинет" и я бы хотел чтоб при...

Привязать обработчик события для программно добавленного элемента управления
Такая проблема. Программно создаю DataGridView при добавлении новой вкладки на tabControl. Существует функция обработки события получения...

Как создать обработчик события для программно созданных реквизитов?
Добрый день. У меня такая проблема. При открытии формы элемента справочника у меня создаются реквизиты и элементы по записям в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru