Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 5.00
Bars4
68 / 8 / 1
Регистрация: 14.03.2013
Сообщений: 116
#1

Динамическая программная установка подчиненной формы для данной - MS Access

14.03.2013, 15:32. Просмотров 3585. Ответов 13
Метки нет (Все метки)

Здравствуйте, обитатели форума !
http://www.cyberforum.ru/ms-access/thread1773798.html

Подскажите светлую мысль, как в VBA по событию текущей формы программно назначить или изменить подчиненную ей форму (с назначением связанных полей, соответственно)?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2013, 15:32
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Динамическая программная установка подчиненной формы для данной (MS Access):

Обновление поля подчиненной формы по обновлению поля другой подчиненной формы
Доброго времени суток. Прошу помощи, запутался. Существует главная форма...

Выборка в подчиненной форме 2 из формы 2 по выбранному значению в подчиненной форме 1 из формы 1
Добрый день! Есть 2 формы(на первой форме находится "подчиненная форма 1", на...

Фильтр для подчиненной формы
Добрый день. Пытаюсь создать фильтр для суб формы. Не получается. (( в БД...

Кнопки для подчиненной формы
Есть нетабличная форма1, на которой находиться подчиненная табличная форма2....

Фильтр для подчиненной формы
Всем доброго и удачного дня!!! У меня вскочил вопрос. Как в основной форме -...

13
mobile
Эксперт MS Access
22490 / 12808 / 2611
Регистрация: 28.04.2012
Сообщений: 14,012
14.03.2013, 16:19 #2
У контрола главной формы, содержащего подформу, можно изменить объект-источник:
Visual Basic
1
Me.КонтролКонтейнерСубформы.SourceObject="ИмяФормы"
У самой подформы можно изменить источник данных:
Visual Basic
1
Me.КонтролКонтейнерСубформы.Form.RecordSource="ИмяТаблицы/запросаИлиSQL-выражениеЗапроса"
Можно задать поля связи LinkMasterFields и LinkChildFields
Visual Basic
1
2
Me.КонтролКонтейнерСубформы.LinkMasterFields="ИмяПоляГлавнойФормы"
Me.КонтролКонтейнерСубформы.LinkChildFields="ИмяПоляПодформы"
Или вы не о том спрашиваете?
1
Bars4
68 / 8 / 1
Регистрация: 14.03.2013
Сообщений: 116
14.03.2013, 16:42  [ТС] #3
Об этом.
Светлая голова. Спасибо.
Т.е пользуясь таким методом и с привлечением пары раскрывающихся списков с таблицами и их полями можно динамически мастерить структуру базы во время выполнения кода ?
0
mobile
Эксперт MS Access
22490 / 12808 / 2611
Регистрация: 28.04.2012
Сообщений: 14,012
14.03.2013, 16:54 #4
Цитата Сообщение от Bars4 Посмотреть сообщение
Т.е пользуясь таким методом и с привлечением пары раскрывающихся списков с таблицами и их полями можно динамически мастерить структуру базы во время выполнения кода ?
Не "структуру базы", а интерфейс формы. Под структурой БД обычно понимается набор таблиц/полей, их свойств и связей между ними.

А интерфейс формы, да можно менять динамически в достаточно широких пределах. Правда создавать новые контролы или удалять имеющиеся можно только в режиме конструктора, но тоже программно.
А менять источники данных форм и контролов можно сколь угодно часто. Лишь бы интерфейс соотвествовал "бизнес-требованиям"
1
Bars4
68 / 8 / 1
Регистрация: 14.03.2013
Сообщений: 116
14.03.2013, 17:01  [ТС] #5
Цитата Сообщение от mobile Посмотреть сообщение
Можно задать поля связи LinkMasterFields и LinkChildFields
Visual Basic
1
2
Me.КонтролКонтейнерСубформы.LinkMasterFields="ИмяПоляГлавнойФормы"
Me.КонтролКонтейнерСубформы.LinkChildFields="ИмяПоляПодформы"
Не влияет ли это на часть структуры БД - связи (пусть даже без контроля целостности данных) ?
0
mobile
Эксперт MS Access
22490 / 12808 / 2611
Регистрация: 28.04.2012
Сообщений: 14,012
14.03.2013, 17:29 #6
Свойства Основные поля/Подчиненные поля создают интерфейс, который, по идее, должен отражать структуру БД. Например, главная форма на основе таблицы заказов, а подчиненная на основе таблицы товаров в заказе. Тогда связь по номеру заказа в Основных/Подчиненных полях создаст удобный и непротиворечивый интерфейс. Но, если перепутать поля, то конечно, можно создать ошибочную ситуацию (например, в одном линковых полей написать КодТовара и связь будет КодЗаказа=КодТовара !!!). Но и тогда ошибки будут ошибками данных, а не структуры данных. Эти свойства никак не связаны со структурой в том смысле, что они могут как-то ее изменить. Таблицы, поля, связи остаются прежними.
1
Bars4
68 / 8 / 1
Регистрация: 14.03.2013
Сообщений: 116
14.03.2013, 17:37  [ТС] #7
Т.е. речь идет о структуре представления данных. Уловил.
Спасибо.
0
Kontugenyi
10 / 0 / 1
Регистрация: 29.01.2013
Сообщений: 75
17.03.2013, 11:37 #8
А расскажите поподробнее как сделать так, чтобы поля основной формы обновлялись в зависимости от выбранной записи подчиненной формы. Т.е. в подчиненной форме отображаются все данные в режиме таблицы, в основной форме поля только для одной записи вынесены в textbox (предполагается возможность редактировать) и должны обновляться в зависимости от выбранной записи подчиненной формы.

F_Company - основная форма, F_Company_sub - подчиненная. TextBoxName - поле основной формы, NameShort - поле подчиненной формы.

Me.F_Company_sub.LinkChildFields = "TextBoxName"

Подскажите пож., как с этим работать... А то я что-то обрадовался, что нашел нужный способ.. а сделать с ним ничего не вышло.
0
Bars4
68 / 8 / 1
Регистрация: 14.03.2013
Сообщений: 116
17.03.2013, 19:28  [ТС] #9
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Kontugenyi Посмотреть сообщение
А расскажите поподробнее как сделать так, чтобы поля основной формы обновлялись в зависимости от выбранной записи подчиненной формы.
Чтобы обойти тонкости формулировок БД и добиться максимально синхронного понимания предмета разговора предлагаю рассмотреть некую область действительности, которую при необходимости можно смасштабировать или перенести на другую область окружающего мира: итак, если есть территория РФ с неким правовым пространством -> далее, в рамках этого пространства (на уровне ниже) создаются или уже существуют предприятия (ООО, ОАО и т.д.) с определенными атрибутами и собственной структурой (tblПредприятие) -> далее, на уровень ниже, на предприятии создаются, перемещаются, продаются продукты труда (услуги, товары, объекты, опять же со своими атрибутами) (tblОбъекты) -> далее, на предприятии формируются, перемещаются и удаляются некие документы (tblДокументы) ->... ну и так далее до нужно степени деталировки. Теперь смоделируем себе, что все изменения с участием перечисленных элементов происходят в результате неких событий (tblСобытие). У этих событий есть атрибуты: наименование события, его описание, дата и т.д. Таблица tblСобытие будет связующей для всех остальных таблиц отношением (объекты)один-ко-многим(события). То есть на предприятии можем создавать (может происходить) множество событий (создавая записи в таблице tblСобытие), в результате которого создаются документы (tblДокументы) и некие объекты производства (tblОбъекты) и т.д: События оказываются подчинены (дочерние объекты) к конкретному предприятию (родительский объект), объекты производства, документы (дочерние объекты) будут привязаны к данному событию (ну и разумеется к этому родительскому предприятию).
Примерную структуру БД выкладываю. Если речь об этом, то коды VBA и организацию форм распишу. Если есть неточности формулировок БД - специалисты, подправьте меня.
0
Миниатюры
Динамическая программная установка подчиненной формы для данной  
Bars4
68 / 8 / 1
Регистрация: 14.03.2013
Сообщений: 116
17.03.2013, 23:12  [ТС] #10
mobile, а существуют ли иные (командные) способы установки связи между полями таблиц БД, кроме как перетаскивание их мышью из таблицы в таблицу в окне схемы данных - т.е. во время выполнения ?
0
Андрэич
2836 / 768 / 41
Регистрация: 20.05.2012
Сообщений: 2,056
17.03.2013, 23:19 #11
Цитата Сообщение от Bars4 Посмотреть сообщение
mobile, а существуют ли иные (командные) способы установки связи между полями таблиц БД, кроме как перетаскивание их мышью из таблицы в таблицу в окне схемы данных - т.е. во время выполнения ?
Программные способы?
Можно непосредственно SQL, можно кодом VBA (но и в первом случае без последнего не обойтись)
1
mobile
Эксперт MS Access
22490 / 12808 / 2611
Регистрация: 28.04.2012
Сообщений: 14,012
17.03.2013, 23:43 #12
Цитата Сообщение от Bars4 Посмотреть сообщение
mobile, а существуют ли иные (командные) способы установки связи между полями таблиц БД, кроме как перетаскивание их мышью из таблицы в таблицу в окне схемы данных - т.е. во время выполнения ?
Да, есть. Смотрите в хелпе предложение CONSTRAINT для инструкций ALTER TABLE и CREATE TABLE. Можно создать управляющий запрос с ними и задать в нем все необходимые свойства и связи. А в сочетании с CHECK можно добиться и нетривиальных результатов, ищите, например, "триггер Бенедикта" в инете. Здесь запрещены ссылки на иные форумы, поэтому прямую ссылку дать не могу.
1
Kontugenyi
10 / 0 / 1
Регистрация: 29.01.2013
Сообщений: 75
18.03.2013, 21:40 #13
Цитата Сообщение от Bars4 Посмотреть сообщение
Чтобы обойти тонкости формулировок БД и добиться максимально синхронного понимания предмета разговора....
Мне кажется у меня все должно быть проще. Есть таблица tblCompany, которая содержит поля ИНН, форма собственности, краткое наименование и полное наименование. Страница разделена на 2 части: нижняя содержит подчиненную форму в режиме таблицы со списком записей (список компаний), верхняя содержит элементы управления textbox. TextBox'ы верхней части соответствуют выбранным записям подчиненной формы. Т.е. при перемещении по записям подчиненной формы меняются соответствующие значения textbox в верхней части.

Планировалось, что в обычном состоянии в верхней части textBox'ы заблокированы для ввода данных (параметр доступ = false), но при нажатии соответствующей кнопки textBox'ы разблокируются позволяя внести изменения в данную запись через эти textbox'ы.

Идея в том, чтобы в подчиненной табличной форме отображались все организации, но не все параметры для каждой организации, а только основные, а уж в верхней части - полностью все параметры, которые при необходимости можно изменить.

Пример формы в приложении.
0
Миниатюры
Динамическая программная установка подчиненной формы для данной  
Bars4
68 / 8 / 1
Регистрация: 14.03.2013
Сообщений: 116
18.03.2013, 22:36  [ТС] #14
Цитата Сообщение от Kontugenyi Посмотреть сообщение
Страница разделена на 2 части: нижняя содержит подчиненную форму в режиме таблицы
"Страница разделена" - подразумевал форма разделена ?
Если нижняя часть содержит подчиненную форму, то на ней я не смог обнаружить родительскую. Она существует ?
Почему нельзя просто на основе tblТаблица создать разделенную frmФорма (собственно у тебя это и сделано), а затем скрыть столбцы, отображение которых не требуется. Элементы управления остаются. Кодируй их на VBA как требуется.
Или я что-то неправильно понял ?
1
18.03.2013, 22:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2013, 22:36
Привет! Вот еще темы с решениями:

Условие отбора для подчиненной формы
Здравствуйте, помогите составить условие. Есть база, в ней есть форма...

Объект-источник для подчиненной формы.
День всем добрый, подскажите плз как програмно присвоить подчиненной форме...

Условие для запроса из подчиненной формы
Подскажите какой синтаксис для условия отбора в запросе из поля со списком в...

Фильтр по списку для подчиненной формы
Всем доброго времени суток! Очень нужна помощь. Есть форма "Оборудование"....


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru