Vvmebel.com

Новости с мира ПК
11 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Access обновить подчиненную форму

Access обновить подчиненную форму

Не использовать VBA, тоже самое, что писать сайт на html.

На событие после обновления поля Стадия пишем обработчик события. В нем:

Я бы так в нормально проекте не делал. Гораздо красивее на подчиненной форме объявить событие. И обработать его, на главной форме. Но раз вы VBA учить не хотите.

Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.5.2008

Репутация: нет
Всего: нет

Эксперт

Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21

Профиль
Группа: Участник
Сообщений: 9
Регистрация: 20.5.2008

Репутация: нет
Всего: нет

Спасибо, но не работает.

Друзья! Я упрощаю задачу до примитивности!
Во вложении — база без мусора. В ней таблица «Table1», в которой одно из полей — типа списка — «list». Также имеется форма — «Form1», в ней еще две формы — «подчиненная форма eklmn_query» и «подчиненная форма eprst_query». Данные подчиненные формы черпают данные из запросов: «eklmn_query» и «eprst_query», соответственно. Запросы представляют собой ни что инное, как фильтры по значению поля «list».

Итак собственно задача формулируется сл.обр.: нужно примитивно, с помощью макросов (безо всякого ВБА) реализовать сохранение в таблице выбранного в имеющейся записи в поле «list» в форме «Form1» нового значения и обновление формы с выполнением вышеуказанных запросов.

А теперь собственно проблема: я определяю макрос «save_and_update», состоящий из двух макрокоманд — «Сохранить» и «Обновление»; назначаю его событию «Внесены изменения» каждой из двух вышеуказанных подчиненных форм. Получаю такой вот результат — дуля с маком!

Собственно месидж (вопрос) к спецам по Акцессу: это глюк Акцессовского обновления или я что-то не так делаю?

Присоединённый файл ( Кол-во скачиваний: 8 )
autoupdate.rar 43,38 Kb

Как обновить подчиненную форму, управляемую отчетом (который управляется запросом), после добавления записей?

Недавно я занял ответственную должность, которая требует от меня отслеживать наши административные действия. Ранее офис отслеживал их в электронной таблице Excel, и исторические данные были повреждены/отсутствуют. Таким образом, я построил базу данных в Access 2010. Я разработал базу данных для отображения основной формы, которая предоставляет обзор каждого действия, но решил потребовать, чтобы большая часть данных добавлялась или обновлялась в конкретных формах ввода данных. Мой вопрос касается двух подформ в главной форме, которые я не могу обновить после ввода данных в таблицы. Вот особенности:

1) основная форма-это форма сведений о деле, и каждое дело имеет уникальный идентификационный номер дела, который связывает большинство форм и таблиц.

2) форма сведений о деле имеет две подформы. Отображаются имена людей, участвующих в деле (это Субформа субъект). В другом поле отображаются записи журнала обращений (это Подформа История обращений).

3) обе подформы должны работать одинаково. Каждый заполняется отчетом, который отображает информацию в соответствующей Подформе. В свою очередь, отчеты, лежащие в основе каждой Подформы, основаны на запросе, который выбирает записи для отображения на основе номера обращения.

4) новые данные для подформ не могут быть введены в форму сведения о деле. Вместо этого пользователь может нажать кнопку команды, которая запускает отдельную форму, которая позволяет пользователю ввести сведения о предмете или ввести обновление истории дел. После ввода данных пользователь нажимает кнопку сохранить запись, которая сохраняет запись и закрывает окно формы. Все, кажется, работает хорошо до этого момента.

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

Как я пытался сделать эту работу, я пробовал ряд подходов, которые я нашел на различных досках. Прямо сейчас, у меня есть:

A) форма ввода данных субъекта имеет Me.Инструкция Requery в After Insert Event Procedure

B) форма ввода данных субъекта имеет SaveRecord и команду CloseWindow, которые выполняются при запуске события сохранить запись при нажатии кнопки.

В) Основная форма сведений о деле имеет значение Me.Case_Subjects.Форма.Requery при выполнении процедуры события GotFocus.

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

Access обновить подчиненную форму

Макрокоманда Обновление для баз данных Access позволяет обновлять данные в указанном элементе управления активного объекта путем отправки запроса к его источнику. Если элемент управления не указан, макрокоманда отправляет запрос к источнику самого объекта. С помощью этой макрокоманды можно обеспечить отображение актуальных данных в активном объекте или элементе управления.

Настройка

Макрокоманда Обновление имеет следующие аргументы:

Имя элемента управления, который требуется обновить. Имя вводится в окне конструктора макросов в поле Имя элемента. Следует указать только имя элемента, а не полный идентификатор (такой как Forms! ИмяФормы! ИмяЭлемента). Чтобы отправить повторный запрос к источнику данных активного объекта, оставьте это поле пустым. Если активным объектом является таблица или результирующий набор, значение этого аргумента нужно оставить пустым.

Читать еще:  Access открыть форму

Примечания

Макрокоманда Обновление выполняет одно из следующих действий:

Повторно выполняет запрос, на котором основан элемент управления или объект.

Отображает добавление, изменение и удаление записей в таблице, на которой основан элемент управления или объект.

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

К элементам управления, основанным на запросе или таблице, относятся:

списки и поля со списком;

элементы управления подчиненной формы;

объекты OLE, например диаграммы;

элементы управления с агрегатными функциями домена, например БД СУММ.

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

Если поле Имя элемента не заполнено, выполнение макрокоманды Обновление имеет тот же эффект, что и нажатие клавиш SHIFT+F9 при установленном на объекте фокусе. Если фокус находится на элементе управления подчиненной формы, макрокоманда отправляет повторный запрос только к источнику данных этой подчиненной формы (как при нажатии клавиш SHIFT+F9).

Примечание: Макрокоманда Обновление отправляет запрос к источнику элемента управления или объекта. С другой стороны, макрокоманда ОбновитьОбъект обновляет элементы управления в указанном объекте, но не отправляет повторный запрос к базе данных и не отображает новые записи. Макрокоманда ПоказатьВсеЗаписи не только отправляет повторный запрос для активного объекта, но также удаляет все примененные фильтры, чего не делает макрокоманда Обновление.

Метод Requery обновляет базовые данные указанной подчиненной формы, перезапрашивая источник данных для подчиненной формы. The Requery method updates the data underlying a specified subform by requerying the source of data for the subform.

Синтаксис Syntax

Expression. Повторный запрос expression.Requery

Expression (выражение ) Переменная, представляющая объект подчиненНой формы . expression A variable that represents a SubForm object.

Примечания Remarks

Этот метод можно использовать для того, чтобы форма или элемент управления отображали самые последние данные. You can use this method to ensure that a form or control displays the most recent data.

Метод Requery выполняет одно из следующих действий: The Requery method does one of the following:

  • Повторно выполняет запрос, на котором основана форма или элемент управления. Reruns the query on which the form or control is based.
  • Отображает новые или измененные записи или удаляет удаленные записи из таблицы, на которой основана форма или элемент управления. Displays any new or changed records or removes deleted records from the table on which the form or control is based.
  • Обновляет записи в соответствии с изменениями свойства Filter формы. Updates records displayed based on any changes to the Filter property of the form.

Элементы управления, основанные на запросе или таблице, включают: Controls based on a query or table include:

  • Списки и поля со списками. List boxes and combo boxes.
  • Элементы управления подчиненной формы. Subform controls.
  • Объекты OLE, например диаграммы. OLE objects, such as charts.
  • Элементы управления, для которых Настройка свойства ControlSource включает статистические функции по подмножеству или статистические функции SQL. Controls for which the ControlSource property setting includes domain aggregate functions or SQL aggregate functions.

Если указать любой другой тип элемента управления для объекта, указанного выражением __, будет повторно запрошен источник записей для формы. If you specify any other type of control for the object specified by expression, the record source for the form is requeried.

Если объект, указанный в выражении , не связан с полем в таблице или запросе, метод recalculation вызывает перерасчет элемента управления. If the object specified by expression isn’t bound to a field in a table or query, the Requery method forces a recalculation of the control.

Если опустить объект, указанный выражением __, метод requeries повторно запрашивает базовый источник данных для формы или элемента управления, имеющего фокус. **** If you omit the object specified by expression, the Requery method requeries the underlying data source for the form or control that has the focus. Если элемент управления, имеющий фокус, имеет источник записей или источник строк, он будет передаваться в запрос; в противном случае данные элемента управления будут просто обновлены. If the control that has the focus has a record source or row source, it will be requeried; otherwise, the control’s data will simply be refreshed.

Если фокус находится на элементе управления подчиненной формы, этот метод повторно запрашивает источник записи для подчиненной формы, а не для родительской формы. If a subform control has the focus, this method only requeries the record source for the subform, not the parent form.

  • Метод Requery обновляет данные, содержащиеся в форме или элементе управления, чтобы отобразить записи, которые были обновлены или удалены из источника записей с момента последнего запроса. The Requery method updates the data underlying a form or control to reflect records that are new to or deleted from the record source since it was last queried. Метод Refresh показывает только изменения, внесенные в текущий набор записей; Он не отражает новые или удаленные записи в источнике записей. The Refresh method shows only changes that have been made to the current set of records; it doesn’t reflect new or deleted records in the record source. Метод repain просто перерисовывает указанную форму и ее элементы управления. The Repaint method simply repaints the specified form and its controls.
  • Метод Requery не передает управление операционной системе, позволяя Windows продолжить обработку сообщений. The Requery method doesn’t pass control to the operating system to allow Windows to continue processing messages. Используйте функцию DoEvents , если необходимо переделать временное управление операционной системе. Use the DoEvents function if you need to relinquish temporary control to the operating system.
  • Метод Requery выполняется быстрее, чем действие Requery. The Requery method is faster than the Requery action. При использовании макрокоманды «обновление» Microsoft Access закрывает запрос и перезагружает его из базы данных. When you use the Requery action, Microsoft Access closes the query and reloads it from the database. При использовании метода Reload Access повторно выполнят запрос, не закрывая и не перегружая его. When you use the Requery method, Access reruns the query without closing and reloading it.
Читать еще:  Функция like в access

Пример Example

В следующем примере используется метод Requery для запроса данных из списка Емплойилист в форме Employees. **** The following example uses the Requery method to requery the data from the EmployeeList list box on an Employees form.

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

348 просмотра

2 ответа

1 Репутация автора

У меня возникают проблемы при обновлении подчиненной формы после добавления записи в другой форме в Access 2007-2010. Кажется, это может быть очень просто, но я не уверен, где я терплю неудачу.

У меня есть три формы:

  • Тот, который является основной формой пользователя с именем main_user,
  • еще один, где пользователь создает требования к закупкам под названием tb_requirements
  • и еще один, связанный с tb_requirements, который называется tb_records.

Основная идея этой системы заключается в том, что пользователь создает общие требования к закупкам с вложениями в tb_requirements, а затем добавляет некоторые подробные требования в общую форму требований (tb_records).

Эта функция уже работает, но когда я пытаюсь обновить / вернуться к главному пользовательскому экрану (main_user) со всеми открытыми и новыми требованиями, она не работает. Основная форма пользователя использует подчиненную форму таблицы tb_requirements. Итак, в VBA main_user я написал следующий код:

Я также попытался с .Refresh и .Recalc и он не работает. Не могли бы вы помочь?

Ответы (2)

плюса

3018 Репутация автора

Активировать может быть то, что вам нужно. это как вернуть фокус (IIRC) на основную форму.

Другой подход заключается в открытии «вторичных» форм в диалоговом режиме. псевдокод:

Вы можете сделать это в 2 строки.

между 1 и 2 вы работаете в требованиях к покупке.

Автор: wazz Размещён: 17.05.2017 10:23

плюса

1 Репутация автора

Привет ребята! Я уже понял это. Чего мне не хватало, так это закрытия формы и таблицы после добавления новой записи.

После этого .Requery мог работать, в противном случае он оставался с теми же данными. Большое спасибо за ваше время и советы, очень ценю.

МС Access VBA помочь — обновление таблицы в подчиненную форму из главной формы

Я надеюсь, что кто-то может мне помочь. В настоящее время я использую Access 2013

У меня возникли проблемы с получением правильного кодирования для запроса в таблице данных внутри подформы.

Моя настройка выглядит следующим образом:

  • Использование формы навигации с верхними и боковыми кнопками.
  • Основная активная форма — (Main_Hub)
  • Когда вкладка задача активна, подчиненная форма (список задач)
  • На этой подформе находятся 3 формы таблицы данных (Task_Form_Priority_1_High) и т. д.

Это когда проблема начинается

  • После добавления новой задачи форма таблицы данных (Task_Form_Priority_1_High) не обновляется, если я не нажму на кнопку задачи (либо на кнопку главной вкладки задачи, либо на кнопку боковой вкладки)

Я знаю, что мне нужно использовать что-то с Forms!subform!form.requery , но, похоже, не могу получить правильный код VBA.

Вот изображение формы:

Редактировать:
(Main_Hub) имеет кнопку навигации, которая имеет цель (Task_List).
Форма списка задач содержит 1 кнопку для добавления задачи и 3 формы таблицы данных (Task_Form_Priority_1_High), med и low.
Эти таблицы используют запросы в качестве источника записи (Task_Query_Priority_1_High), med, low.

1 Ответ

Вы можете обрезать все формы следующим образом:

Общий синтаксис таков:

Похожие вопросы:

У меня есть основная форма, которая содержит две другие дочерние подформы. Когда textbox изменения стоимости на подчиненной форме (a) я хотел бы установить значение textbox на подчиненной формы (Б).

Читать еще:  Sql ms access

Как я могу ссылаться на событие нажатия кнопки в основной форме на подчиненную форму, аналогичную: DoCmd.GoToRecord , , acNewRec Я хочу использовать подчиненную форму как для просмотра, так и для.

Я пытаюсь передать переменную из модальной формы в подчиненную форму внутри подчиненной формы и не могу создать правильный синтаксис. Субформа sfrProfiling содержится в субформе Crafter Default.

У меня есть разделенная форма представления с подчиненной формой в ней. В части таблицы данных разделенного представления Access отображает плюс ( + ), который позволяет пользователю отображать.

Существует ли способ программно добавить подчиненную форму в форму с помощью Access VBA? У меня есть временная таблица, которая генерируется динамически по запросу пользователя. Если это возможно, я.

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

Недавно я получил справку о том, когда выбрать значение из комбо, выделите эту запись в таблице данных субформы Access , и теперь я пытаюсь выполнить связанную задачу. Как я могу заставить.

В MS Access 2010 у меня есть запрос, который цитирует следующее В критериях; [Forms]![frm_Add_Item_Subform].[ActiveControl].[Caption] Это позволяет мне использовать текст Caption кнопки в запросе.

На GUI на основе форм я пытаюсь открыть и закрыть некоторые формы, чтобы выполнить вычисления. Я хочу сделать это только с Access macros (для более легкого обслуживания нетехническим персоналом).

У меня есть основная форма Purchase_Orders с подчиненной формой Items . Я также создал кнопку, которая открывает всплывающую форму и запрашивает предыдущие заказы на покупку для items , которые были.

Создание подчиненной формы

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

В Access для этой цели используются так называемые подчиненные формы. Подчиненная форма строится непосредственно на главной форме; в этой паре главная форма соответствует родительской таблице (идет со стороны «один» в связи «один-ко-многим»), подчиненная – дочерней (идет со стороны «многие» в связи «один-ко-многим»). В этом случае одной записи главной формы соответствует несколько записей подчиненной формы.

Создать форму с подчиненной можно несколькими способами. Рассмотрим некоторые из них.

1 способ. Главная и подчиненная формы строятся одновременно, на основе имеющихся таблиц и/или запросов. Возьмем для этой цели связанные таблицы «Отделы» (родительская) и «МоиСотрудники» (дочерняя). Шаги:

1. В окне БД на панели объектов выберите Формы, в меню — Создать и в первом открывшемся окне – Мастер форм, в качестве источника данных (в нижнем поле) – таблицу «Отделы» (рис. 89), нажмите ОК

2. Во втором окне выбираем нужные поля, например, Название Заведующий, Телефон. Далее, в этом же окне, в поле Таблицы и запросы выберите подчиненную таблицу «МоиСотрудники». Затем выберите ее поля, например, ФИО, Должность, Начислено (рис. 90). Нажмите Далее

3. В третьем окне подтвердите вид представления данных и флажок Подчиненные формы. Нажмите Далее.

4. В четвертом окне выберем вид подчиненной формы: Ленточный. Далее.

5. В последующих окнах выберите оформление и название главной формы. Нажмите Готово.

Результат – форма с подчиненной; для каждой записи главной формы подчиненная показывает все соответствующие записи из связанной (дочерней) таблицы.

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

2 способ.Предполагается, что формы для главной и подчиненной таблиц созданы заранее. Будем использовать ранее созданные формы для таблиц «МоиСотрудники» и «Отделы» (или их копии). Шаги:

1. Откройте форму для родительской (главной) таблицы «Отделы» в режиме конструктора. Расширьте область данных так, чтобы можно было разместить подчиненную форму.

2. Отключите кнопку Мастера на панели элементов. Нажмите на панели элементов кнопку Подчиненная форма/Отчет . Нарисуйте левой мышью область, куда будет помещена подчиненная форма.

3. Выделите внедренный объект, войдите в его Свойства. На вкладке Данные в списке Объект-источник выберите таблицу «МоиСотрудники». Убедитесь, что связь (ключи Основные поля и Подчиненные поля) идет по полю Отдел. Закройте окно свойств.

4. Отформатируйте полученные объекты, замените надпись «Внедренный» на «Сотрудники».

3 способ. Форма строится аналогично предыдущему, второму способу, но шаг 2 выполняется при включенной (нажатой) кнопке Мастера. Далее двигаемся в соответствии с инструкциями мастера. Для примера можно построить форму, в которой главную роль играет форма «Отделы», а подчиненную – форма «Сотрудники» из БД «Борей» (эту форму нужно предварительно импортировать из этой БД).

4 способ. Самый простой. Предполагается наличие в БД двух готовых форм – будущих главной и подчиненной. Шаги:

1) Открыть главную форму в режиме конструктора. Расширить (мышью) ее область данных.

2) Перетащить мышью подчиненную форму из окна БД и бросить ее на главную в отведенное место.

Попробуйте этот способ с копией формы «Отделы».

Ссылка на основную публикацию
Adblock
detector