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

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

29.09.2016, 08:40. Показов 3939. Ответов 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
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
30.09.2016, 09:12
Лучший ответ Сообщение было отмечено Бормалей как решение

Решение

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Бормалей Посмотреть сообщение
1.Как можно программно добавить во все формы текущего проекта добавить вызов функции из модуля.
Visual Basic
1
2
3
4
5
For each frm in currentdb.allforms
     DoCmd.OpenForm frm.name, acDesign, , , , acHidden
     forms(frm.name).OnOpen = "=ИмяПроцедуры()"
     DoCmd.Close acForm, frm.name, acSaveYes
next frm
1
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
30.09.2016, 09:26
Названия таблиц я бы сразу переделал, с такими именами шутки плохи, нужны свои.

Добавлено через 4 минуты
Цитата Сообщение от Бормалей Посмотреть сообщение
Это почему? Я же сам буду выбирать что применять разрешения на контрол или форму.
Свойства формы типа allowedits будете применять на контролы? Как? На вход каждому поставить отмену, а на выход опять применение? Каждому контролу в каждой форме?

Добавлено через 4 минуты
Да, хорошо, что у меня такого нет, весь этот инструмент изначально встроен в Акцесс
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
30.09.2016, 09:33  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
Свойства формы типа allowedits будете применять на контролы? Как?
у них есть другие свойства на это.
Цитата Сообщение от alvk Посмотреть сообщение
На вход каждому поставить отмену, а на выход опять применение?
один раз на вход
Цитата Сообщение от alvk Посмотреть сообщение
Каждому контролу в каждой форме?
с этим да проблемы проставлять надо будет права на каждый контрол. Поэтому делаю вначале с формами а потом можно и подумать.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
30.09.2016, 09:36
Цитата Сообщение от Бормалей Посмотреть сообщение
у них есть другие свойства на это.
вот именно, так что не получится у вас применить свойства формы к контролам.
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
30.09.2016, 09:42  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
вот именно, так что не получится у вас применить свойства формы к контролам.
так я и не собирался применять одну и ту же функцию для форм и контролов. Можно сделать таблицу MeSettings и там выставлять распределение по формам или контролам. Ну а можно создать таблицу группы контролов и распределять на группы конртолов, но надо хранить еще и родителя контрола.
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
30.09.2016, 09:48
Цитата Сообщение от Бормалей Посмотреть сообщение
Можно сделать таблицу MeSettings и там выставлять распределение по формам или контролам.
заходит пользователь в программу, форма МояФорма заблокирована для редактировния allowedits = false , а в другой таблице у него на трёх полях в этой форме есть доступ. Что происходит в таком случае?
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
30.09.2016, 10:04  [ТС]
Цитата Сообщение от alvk Посмотреть сообщение
заходит пользователь в программу, форма МояФорма заблокирована для редактировния allowedits = false , а в другой таблице у него на трёх полях в этой форме есть доступ. Что происходит в таком случае?
Заходит пользователь в программу водит логин пароль, логин пароль передаются на проверку, если зашел запускается процедура
Если в ТаблицеНастройки стоит распределять права по форме Запускается Процедура Расстановки прав согласно Таблице Разрешения с выброкой признак форма (или отсутствие родителя еще не додумал).
Если в таблицеНастройки стоит распределять права по форме Запускается процедура Расстановки прав согласно
Таблице Разрешения с выброкой признак контрол.
0
Эксперт MS Access
26828 / 14509 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
30.09.2016, 10:27
Лучший ответ Сообщение было отмечено Бормалей как решение

Решение

Бормалей, если по каким-то причинам не подошла процедура texnik-san, то вот как пример вставки обращения к функции MuFunc в модуль формы в событие загрузки. В процедуре определяется поисковая строка strFind, строка вставки strAdd и методом ReplaceLine поисковая строка заменяется собой же и строкой вставки

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub addStringToModuleForm(frmName)
    Dim mdl As Module, frm As Form
    Dim strFind, strAdd
    Dim lngSLine As Long, lngSCol As Long
    Dim lngELine As Long, lngECol As Long
    
    'Поисковая строка
    strFind = "Private Sub Form_Load()" 
    'Строка вставки
    strAdd = "Dim n" & vbCrLf & "n=MuFunc()" & vbCrLf
    
    DoCmd.OpenForm frmName, acDesign
    Set frm = Forms(frmName)
    Set mdl = frm.Module
    'Поиск строки и замена 
    If mdl.Find(strFind, lngSLine, lngSCol, lngELine, lngECol) Then
        mdl.ReplaceLine lngSLine, strFind & vbCrLf & strAdd 
    Else
        'Если нет процедуры Load, то создать и вставить в нее текст
        nn = mdl.CreateEventProc("Load", "Form") 'frm.Name)
        mdl.InsertLines nn + 1, strAdd
    End If
    DoCmd.Close acForm, frmName, acSaveYes 'Сохраняем форму
End Sub
 
'Процедура цикла по всем формам
Sub CicleFrm
    Dim frm As AccessObject
    For Each frm In CurrentProject.AllForms
        addStringToModuleForm frm.Name
    Next
    MsgBox "Вставка завершена"
End Sub
Аналогично Вы можете менять любой текст в модулях
1
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,383
30.09.2016, 10:42
Цитата Сообщение от Бормалей Посмотреть сообщение
Если в ТаблицеНастройки стоит распределять права по форме Запускается Процедура Расстановки прав согласно Таблице Разрешения с выброкой признак форма (или отсутствие родителя еще не додумал).
Если в таблицеНастройки стоит распределять права по форме Запускается процедура Расстановки прав согласно
Таблице Разрешения с выброкой признак контрол.
я ничего тут не понял, вы хотели сказать, что некоторые пользователи будут ограничены по формам, а другие по контролам? или как?

И что делать юзеру в ситуации, что я описал? Идти гулять? Ведь все поля в форме заблокированы, потому что вся форма закрыта для редактирования
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
30.09.2016, 13:51  [ТС]
mobile, так просто Спасибо код еще не пробовал ни ваш ни texnik-san Но обязательно попробую и то и другое. Сейчас заставляют допиливать основную базу.
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
30.09.2016, 15:19
Бормалей, мой код пробовать только в случае, если у вас кроме нужной вам функции никаких других событий на открытии ни одной формы нет и не планируется. В остальных случаях вариант mobile предпочтительнее. Потому что мой код вызов процедуры из модуля просто затрет (сама процедура останется, но вызваться будет не она, а функия из модуля). И да, именно функция, а не процедура, и обязательно паблик.

Добавлено через 3 минуты
Ааа, увидела у себя ошибищу!! allforms это коллекция не currentdb а currentproject!!!

Visual Basic
1
2
3
4
5
For each frm in currentproject.allforms
     DoCmd.OpenForm frm.name, acDesign, , , , acHidden
     forms(frm.name).OnOpen = "=ИмяПроцедуры()"
     DoCmd.Close acForm, frm.name, acSaveYes
next frm
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.09.2016, 15:19

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru