Как запросить форму из формы навигации? - PullRequest
0 голосов
/ 14 июня 2019

Я боролся с этой проблемой самостоятельно, потом с какой-то помощью, затем поискал ее; но мне не повезло. Поэтому я решил спросить

У меня есть две формы в доступе 2007. 1. От навигации 2. frmOrderList Форма frmOrderList встроена в форму frmNavigation. Форма frmOrderList строится на основе запросов, критерии которых расположены в форме frmOrderList. Когда критерии меняются, макрос (после обновления) запускается и пытается обновить frmOrderList. Я пытался использовать несколько кодов, но это не для меня.

Forms![frmNavigation]![NavigationSubform].Form![frmOrderList].Requery
Forms![frmNavigation].Form![frmOrderList].Requery
Forms![frmNavigation]![frmOrderList].Form.Requery
Forms![frmOrderList].Requery ' Works fine for the single form

Все та же ошибка Microsoft access не может найти поле 'frmOredrList', указанное в вашем выражении

1 Ответ

0 голосов
/ 14 июня 2019

Это хорошая шпаргалка на русском языке - http://www.sql.ru/faq/faq_topic.aspx?fid=156 Я хотел бы перевести несколько пунктов:

  1. Основной синтаксис это:

Forms![Form1].Controls![Field1].Value

Упомяните, что "."а также "!"идет один за другим, переключается.

Можно сделать так:

Forms![Form1]![Field1]

Но не должно быть одинаковых именованных объектов разных коллекций.

Адресация подчиненной формы

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

Forms![Form1].Controls![Form2].Form.Controls![Field1].Value

В этом случае:

  • Forms![Form1].Controls![Form2] является ссылкой на элемент управления , где отображается подчиненная форма.
  • Forms![Form1].Controls![Form2].Form- это ссылка на подчиненную форму.Свойство адресации Form требуется для MS Access 97 и необязательно для следующих версий.

Как описано, создается адресация для подчиненных форм 3-го и более уровней:

.Controls![Form2].Form (или .Controls("Form2").Form)

Для адресации объекта в текущем контексте

Рекомендуется использовать следующий синтаксис:

Me.Controls![Field1].Value

NB: имя элемента управления, который содержит форму, может отличаться от имени формы.Это можно проверить, изучив .Name свойство элемента управления.


Поэтому, используя эти инструкции, ваш код должен быть следующим (см. 2-ю рекомендацию):

Forms![Form1].Controls![Form2].Form.Controls![Field1].Value

в этом случае

Forms![frmNavigation].Controls![NavigationSubform].Form.Controls![frmOrderList].Form.Requery

И это будет работать, только если только имена ваших элементов управления совпадают с именами формы, в противном случае вы должны исправитьимена управляющих имен в квадратных скобках.

...