|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
Доброго времени суток. Встретилась задача: есть АРМ на Access, необходимо добавить в него функционал, который по выбору значения из combobox "создаст" новый интерфейс для ручного ввода значений. Условно говоря, если выбрано первое значение из списка, то в подчиненной форме должно создаваться N'ое количество label и combobox на каждый label с значениями "Плохо/Хорошо", количество и текст label берутся из результатов вопроса; если выбрано второе значение из списка, то необходимо в подчиненной форме создать N/4 label и combobox. Пол дня сегодня на реализацию потратил, ума не приложу как это сделать. ЗыСы: с Access и VBA на Вы ;) ЗыСыЗыСы: Или не подчиненные формы? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 11:19 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
mozgen, может напишешь что хочешь сделать, а не как - какая задача? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 11:29 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
mozgen, самое простое это создать 2 формы, которые используются в качестве подчиненных и по выбору в комбобоксе менять источник (сам таким не пользуюсь так что накидал только эскиз - могут быть вариации) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
может requery надо -надо посмотреть. можно оформить на одной и по выбору в комбобоксе скрывать/открывать поля и менять caption меток, но кодить намного дольше. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 11:57 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
Панург, хочу средствами VBA создать основную и подчиненную ей формы, при этом, по изменению основный формы должен будет изменяться набор и порядок контролов подчиненной. Пока способов реализации на ум пришло 2: 1) каждый раз при изменении в основной пересоздавать интерфейс в подчиненной; 2) создать несколько заготовок исходя из вариантов выбора пользователя, и в основной форме открывать их как подчиненные. В первом случае Access ругается на то, что форма при создании в ней элементов должна находится в режиме конструктора, а как, если она уже открыта в основной и с ней велась работа? Во втором проблема та же но с основной, и не непонятно как программно вставить подчиненную форму (гугл чет молчит). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:05 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
alecko, проще всего Tab с двумя вкладками. Но тут самый главный вопрос - зачем это городится) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:05 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
mozgen хочу средствами VBA создать основную и подчиненную ей формы ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:06 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
Панург mozgen хочу средствами VBA создать основную и подчиненную ей формы Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:14 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
mozgen Почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:16 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
alecko, Спасибо рабочая мысль ;) Ругается на Код: vbnet 1.
- "Введенное значение не подходит для данного свойства" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:17 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
Панург mozgen Почему? Аргументированно, блин)) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:18 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
mozgen, я тебя тоже спрашивал и ответа не увидел. А по поводу создания форм в Access можешь сам посмотреть насколько принято создавать формы - CreateForm . За без малого 20 лет 47 тем. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 12:22 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
mozgen ...Почему?... Панург ...Потому... Может всё таки наконец стоит строго спросить с разработчиков - Access, почему это они неудослужились предусмотреть Вашу хотелку? Кстати, а в какой из программ такое возможно? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 13:32 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
mozgen, subfrm1, subfrm2 должны быть созданы у контрлов могут быть другие имена. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 13:41 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
alecko, mozgenРугается на .SourceObject = "subfrm1" - "Введенное значение не подходит для данного свойства" Это был какой-то баг. после перезапуска приложения ошибка пропала. В общем и целом получилась такое: Код: vbnet 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. 34.
Формы созданы (frmInputControl_100, frmInputControl_20), формы разные, сам код отрабатывает без ошибок, но в основной форме отображается только "frmInputControl_100", причем без разницы какое значение из cmbControlMode выбирать. В чем может быть загвоздка? Может как-то принудительно обновлять нужно? хотя обновляется вроде.. И, честно говоря, aleckoSet sfrm1 = .Form - это форма которая находится в контейнере-источнике вот это не совсем понял. Можете подробнее разъяснить этот момент? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 14:18 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
alecko, дико извиняюсь, затупил. Указал переменную, которую использовал ранее, не controlModeIndex а cmbControlMode.ListIndex, конечно. Спасибо, все работает, все отлично! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 14:36 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
mozgen вот это не совсем понял. Можете подробнее разъяснить этот момент? в главной форме есть элемент управления - это подформа. она - контейнер. содержит форму. мы указываем какую именно форму она содержит указывая название этой формы в источнике формы которая находится в элементе управления- контейнере. ListIndex у списков для таких целей не используется, есть value - это надежнее, куча процедур зачем? а если придется править? лучше так: Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2019, 14:56 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
alecko, Понял, спасибо =) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2019, 08:16 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
mozgen ..если выбрано первое значение из списка, то в подчиненной форме должно создаваться N'ое количество label и combobox на каждый label с значениями "Плохо/Хорошо"... данный способ вполне приемлем при небольшом количестве полей-особенно если надо скрыть\отобразить только часть полей(сколько их у Вас?), а остальные присутствуют всегда ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2019, 16:10 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2019, 17:26 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
sdku, тут все немного сложней. Вообще, в моем случае access используется не как БД, а как UI. Сама БД крутится на оракле, с которым у аксеса есть ряд связанных таблиц. Не спрашиваете почему это так, пожалуйста. Это решение уже есть, есть давно, и живем мы с тем, с чем имеем =) В рамках описанной здесь задачи все subForm формируются на основании довольно сложных выборок и имеют разный функционал. Количество элементов управления в которых может варьироваться от 3 до нескольких десятков (предположительно, надеюсь больше не будет). Соответственно и количество и наборы данных во всех лейблах, комбобоксах и пр. могут, и будут отличатся. В моей реализации это выглядит примерно таким образом: есть пачка заготовленных заранее форм в которых "жестко" прописаны все "стационарные" элементы управления, а в событии Form_Open алгоритм создания "динамических" элементов. Эти формы далее будут использоваться как подчиненные. В основной форме по событию cmb_AfterUpdate происходит изменение источника для элемента subForm на нужную форму, а в месте с тем в нужную форму передаются параметры по которым отработают все запросы этой подформы и сформируется нужный интерфейс. Таким образом метод предложенный alecko мне более чем подошел. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 09:42 |
|
Нужен совет по работе с подчиненными формами.
|
|||
---|---|---|---|
#18+
mozgen, теоретически это решение правильное. но практически нереальное, потому что при создании элементов управления на форме аксесс увеличивает счетчик и дойдя до ~ 950 -го номера он на этой форме создавать больше элементы управления не даст (счетчик очевидно уменьшить не удастся). Поэтому динамическое создание элементов управления на форме в Аксесс кроме как в период конструирования - очень плохая идея. Ввиду описанного выше применяются различные решения, отличные от создания элементов управления. Одним из способов является например использование одной формы, которая при этом может принимать неограниченное количество различных статических состояний (инстансов), которые хранятся в таблице (свойства элементов - расположение, формат и пр.). даже статью написал Сейчас описанный способ конечно сильно обновился, но принципиально не изменился Естественно каждый способ имеет как плюсы так и минусы, в описанном случае это избыточное наличие элементов, в большинстве форм и т.п. есть динамическое управление расположением - отслеживаем offset по горизонтали и вертикали. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2019, 18:43 |
|
|
start [/forum/topic.php?fid=45&fpage=23&tid=1610333]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 129ms |
0 / 0 |