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

Вывести содержимое recordset в подчиненную форму

07.09.2018, 15:07. Показов 5153. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
При открытии формы формируется набор записей, которые я хочу отобразить в табличном виде на этой же форме.
Как я понял, для этого мне нужен объект "подчиненная форма".
Но не могу понять, как выгрузить туда содержимое своего recordset'a.

В строке "Источник данных" можно задать только сохраненные запросы.
А мой запрос формируется на VBA.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.09.2018, 15:07
Ответы с готовыми решениями:

Как добавить запись в подчиненную форму через форму элемента?
Есть основная форма. На ней подчиненная табличная форма - список короче. Отдельно есть форма для элемента записи подчиненной формы (...

нужно создать главную форму "Специальности" и в нее - подчиненную "Анкета", не получается создать подчиненную
Здравствуйте, форумчане! Такое дело - я с аксесом раньше не работал никогда и тут в универе по информатике (я заочник) дали контрольную...

Переход в подчиненную форму
Здравствуйте, уважаемые коллеги! Прошу помочь в проблемке. Я сам пока только учусь и что-то застрял. У меня в главной форме делается выбор...

26
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
07.09.2018, 15:15
Цитата Сообщение от avuremybe Посмотреть сообщение
В строке "Источник данных" можно задать только сохраненные запросы.
Почему?
Цитата Сообщение от avuremybe Посмотреть сообщение
А мой запрос формируется на VBA.
Ну, и пожалуйста.
Visual Basic
1
Me.ПодчФорма.Form.RecordSource = "SELECT ....."
1
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 55
07.09.2018, 15:16  [ТС]
Цитата Сообщение от Capi Посмотреть сообщение
Me.ПодчФорма.Form.RecordSource = "SELECT ....."
Это куда писать? В мой код? Или в источник данных подчиненной формы?
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
07.09.2018, 15:18
А по синтаксису не понятно?

Это код VBA.
1
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 55
07.09.2018, 15:29  [ТС]
Я сразу и попытался вкинуть это в код.
Но access говорит, что эта строка содержит ссылку на объект, которого не существует.
Поэтому уточняю, может не туда пишу.

Добавлено через 8 минут
Предполагаю, что при срабатывании события Open подчиненная форма еще не создана.
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
07.09.2018, 15:46
Цитата Сообщение от avuremybe Посмотреть сообщение
может не туда пишу
Я же не знаю, куда пишете.
Вы не рассказывали.

Цитата Сообщение от avuremybe Посмотреть сообщение
Предполагаю, что при срабатывании события Open подчиненная форма еще не создана
Чьего события Open?
Формы, содержащей подчиненную? Или как?

Подробно рассказывайте и код показывайте.
1
Эксперт MS Access
26825 / 14505 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
07.09.2018, 15:55
Цитата Сообщение от avuremybe Посмотреть сообщение
Предполагаю, что при срабатывании события Open подчиненная форма еще не создана.
Ровно наоборот. При открытии главной подчиненная уже открыта. Это частая причина ошибок разработчиков, навешивающих на событие открытия субформ действия с еще не открытой главной.

И второе. Рекордсет формы можно присваивать. Например на событии открытия формы
Visual Basic
1
2
3
dim rst as dao.recordset
set rst=currentdb.openrecordset ("select * from ... where ")
set me.recordset=rst
0
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 55
07.09.2018, 16:10  [ТС]
Цитата Сообщение от Capi Посмотреть сообщение
Me.ПодчФорма.Form.RecordSource = "SELECT ....."
Повесил это на кнопку - все равно говорит, что объект закрыт или не существует.
Проблема, очевидно, не в событии открытия формы.

Добавлено через 10 минут
Цитата Сообщение от mobile Посмотреть сообщение
dim rst as dao.recordset
set rst=currentdb.openrecordset ("select * from ... where ")
set me.recordset=rst
Это не выдает никаких ошибок но и в форме ничего не появляется.
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
07.09.2018, 16:18
Цитата Сообщение от avuremybe Посмотреть сообщение
Повесил это на кнопку
На какую кнопку? Где она?
Что за обрывки сведений?
1
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 55
07.09.2018, 16:23  [ТС]
Цитата Сообщение от Capi Посмотреть сообщение
На какую кнопку? Где она?
На форме сделал кнопку, повесил на нее данную функцию.
Результат остался таким же, как и с событием "открытие формы".
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
07.09.2018, 16:31
На какой форме?
Основной? Подчиненной? Вообще изолированной?

К тому же, было сказано показать код. Где он?
1
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 55
07.09.2018, 16:40  [ТС]
Цитата Сообщение от Capi Посмотреть сообщение
На какой форме?
Основной? Подчиненной? Вообще изолированной?
К тому же, было сказано показать код. Где он?
На основной. С подчиненной у меня пока вообще ничего сделать не получается.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Form_Open(Cancel As Integer)
    Dim d1 As Date, d2 As Date, sql As String ', rst As Recordset
    d1 = Date
    d2 = DateAdd("d", 6, d1)
    sql = "SELECT График.Дата, Machines.Оборудование, Machines.Линия, График.Категория FROM Machines INNER JOIN График ON Machines.[Номер машины] = График.Оборудование WHERE [График].[Дата] BETWEEN #" & Format(d1, "mm\/dd\/yy") & "# AND #" & Format(d2, "mm\/dd\/yy") & "# ORDER BY График.Дата"
    'Set rst = CurrentDb.OpenRecordset(sql)
    Me.eventWindow.Form.RecordSource = sql
    
    'rst.Close
    'Set rst = Nothing
End Sub
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
07.09.2018, 16:55
avuremybe,

Вроде все правильно.
Только можно текст несколько упростить, без переменных:
Visual Basic
1
....BETWEEN Date() AND Date()+6....
А в подчиненной объект указан, то есть свойство SourceObject (Объект-источник) заполнено?
1
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 55
07.09.2018, 16:57  [ТС]
Цитата Сообщение от Capi Посмотреть сообщение
А в подчиненной объект указан, то есть свойство SourceObject (Объект-источник) заполнено?
Нет. Я же в первом посте об этом упоминал, что там только сохраненные запросы предлагают, а надо VBA.
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
07.09.2018, 17:09
Лучший ответ Сообщение было отмечено avuremybe как решение

Решение

Цитата Сообщение от avuremybe Посмотреть сообщение
Я же в первом посте об этом упоминал, что там только сохраненные запросы предлагают, а надо VBA
То есть, Вы не форме подчиненной задать источник данных пытаетесь, а пустоте?

Не выйдет.

Форму сначала сделайте, потом в контейнер eventWindow её поместите (задав в SourceObject), а потом дальше.

Добавлено через 6 минут
Или, если ух так хочется туда запрос засунуть,создайте любой, сохраните, укажите его в SourceObject,
а в коде вместо
Me.eventWindow.Form.RecordSource = sql
пишите
Запрос.SQL = sql
здесь Запрос - имя этого запроса.

Но это, как сами вскоре убедитесь, так себе способ.
1
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 55
07.09.2018, 17:29  [ТС]
Цитата Сообщение от Capi Посмотреть сообщение
Форму сначала сделайте, потом в контейнер eventWindow её поместите (задав в SourceObject), а потом дальше.
Все, теперь все работает (:
Спасибо большое!

В который раз уже Вы меня выручаете...
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
07.09.2018, 17:44
avuremybe,

Вот и хорошо.
Пожалуйста.)))
0
0 / 0 / 0
Регистрация: 01.08.2018
Сообщений: 55
07.09.2018, 18:05  [ТС]
Цитата Сообщение от Capi Посмотреть сообщение
Me.ПодчФорма.Form.RecordSource = "SELECT ....."
Я по кнопке открываю другую форму и хочу проделать такое же с подчиненной формой на этой открытой форме.
Что мне для этого надо писать вместо Me. ?
На Forms(имяФормы). ругается...
Пишет Object doesnt support this propery or method.
0
Эксперт MS Access
 Аватар для Eugene-LS
12066 / 5849 / 1494
Регистрация: 05.10.2016
Сообщений: 16,440
07.09.2018, 18:10
Цитата Сообщение от avuremybe Посмотреть сообщение
Что мне для этого надо писать вместо Me. ?
Вроде так:
Me![Название объекта подчинённая форма].Form ...
0
Модератор
Эксперт MS Access
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
07.09.2018, 18:11
Цитата Сообщение от avuremybe Посмотреть сообщение
На Forms(имяФормы). ругается...
Forms("имяФормы").
или
Forms!имяФормы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.09.2018, 18:11
Помогаю со студенческими работами здесь

Добавление в подчиненную форму
Здравствуйте! Подскажите, пожалуйста. Есть основная форма и подчиненная форма в табличном виде. Как в подчиненную форму можно добавить...

Результат запроса в подчиненную форму
Здравствуйте, На одной форме есть 2 подчиненные формы в виде таблиц. При двойном нажатии на ячейку первого столбца 1 подчин формы...

Добавление строки в подчиненную форму
Здравствуйте. Возник такой вопрос: возможно ли добавить строку в подчиненную форму? На скрине видно, что есть одна строка. Кол-во строк...

Вывод информации в подчиненную форму
Помогите, пожалуйста, с программой MS Access. Никак не получается при нажатии на какое либо изделие в списке вывести информацию из таблицы...

Как блокировать подчиненную форму?
Здравствуйте, скажите, как блокировать и разблокировать подчиненную форму в зависимости от того введено или нет значение в поле основной...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru