Access 2010: выбранное значение записи из подчиненной формы

Заранее спасибо за помощь в решении этой проблемы - она ​​сводила меня с ума.

Прежде всего: мой вопрос касается инструкций здесь: http://www.fmsinc.com/MicrosoftAccess/Forms/Synchronize/LinkedSubforms.asp.

У меня есть форма в Access 2010, содержащая подчиненную форму. Содержимое подчиненной формы обновляется с помощью VBA. Здесь все отлично работает.

Я хочу иметь возможность открывать другую форму на основе записи, которую пользователь выбрал в подчиненной форме. Это влечет за собой знание номера записи, выбранной пользователем. Для начала я просто запишу ID выбранной записи в обычное текстовое поле формы.

Я нашел решение в вышеупомянутой ссылке. В нем говорится:

«Чтобы сослаться на значение в подчиненной форме, используйте следующий синтаксис для свойства источника управления текстового поля:

=[subFormName].[Форма]![ControlName]"

В их примере это работает отлично (я скачал .mdb, и он работает!), но когда я пытаюсь, «[Форма]» не вариант. Вот и я не могу заставить его работать!

Я также пробовал в их .mdb, и я тоже не могу выбрать [Form], поэтому, как только я изменяю свойство источника управления текстового поля, оно перестает работать. Вместо этого я пробовал использовать [.Formula], но ничего не вышло (ссылка на снимок экрана: http://i.imgur.com/pR2WkSW.png?1)

В чем может быть проблема? Может настройки языка?

Огромное спасибо заранее.

M.


person user3302702    schedule 12.02.2014    source источник


Ответы (2)


Я не уверен, чем это отличается в Access 2010, но, как вы можете видеть ниже, для Access 2007:

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

Вы можете напрямую ссылаться на элемент управления в построителе выражений. Просто :

а) разверните имя формы в левом фрейме

б) выберите имя подчиненной формы в левом фрейме

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

c2) Если вы хотите сослаться на свойство формы (т. е. фильтр подчиненной формы), выберите тег в среднем фрейме и соответствующее свойство в правом фрейме.

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

Это все должно быть там.

person parakmiakos    schedule 13.02.2014
comment
Большое спасибо за ваш ответ, я очень ценю это. Я не знал, что могу выбрать его в Expression Builder, но, конечно! К сожалению, проблема сохраняется, как вы можете видеть здесь: i.imgur.com/nq3OpFN.png?1 Кажется, я просто не в состоянии составить правильное выражение. Я пробовал в базе данных Access, которая находится здесь: fmsinc.com/MicrosoftAccess/Forms /Synchronize/LinkedSubforms.asp, и это та же проблема. - person user3302702; 13.02.2014
comment
Я заметил, что в левом фрейме имя формы frmMaster, а не subMaster. Не уверен, что это связано с вашей проблемой. В любом случае пробовали писать текст? это должно быть что-то вроде [frmMaster]![Form]![txtID] или [frmMaster]![Formular]![txtID]. Я склоняюсь к первому случаю, потому что даже на моем родном языке для Access синтаксис не менялся, работало написано на английском. - person parakmiakos; 13.02.2014
comment
Мне очень жаль, но нет, это не работает :( (ни первый, ни второй пример). Я не получаю синтаксическую ошибку, но это не работает: i.imgur.com/T9lcKlG.png?1 Я очень благодарен, что вы нашли время, чтобы помочь мне в этом. Если у вас есть время, не могли бы вы попробовать посмотреть, разрешено/можно ли вам выбрать [Form] в выражении? Дело в том.. .adb рождается с этим выражением (=[subMaster].[Form]![ txtID]) и работает отлично, но если я просто удалю выражение и добавлю его снова, это не так. ДОЛЖНЫ быть какие-то языковые настройки, нет? - person user3302702; 13.02.2014
comment
Я заметил, что в примере в файле .mdb имя Subform действительно subMaster. При ссылке на форму, расположенную в форме, вы действительно должны использовать имя, присвоенное ей в родительской форме (это имя элемента управления). Нажмите на подчиненную форму и на вкладке свойств проверьте ее имя. Попробуйте еще раз как [subMaster]![Form]![txtID]. Если это вас ни к чему не приведет, то я так же озадачен, как и вы :( - person parakmiakos; 13.02.2014
comment
Извините, но это не работает. Но большое спасибо за попытку, это очень мило с вашей стороны, я действительно ценю это. - person user3302702; 13.02.2014
comment
Я голосую за ваш вопрос на случай, если его заметит другой. Удачи! - person parakmiakos; 13.02.2014
comment
Большое Вам спасибо; Я хотел бы проголосовать за ваш ответ (потому что это может помочь другим), но у меня недостаточно баллов. Я лучше начну помогать другим :) - person user3302702; 13.02.2014

Вы должны иметь возможность ссылаться на элемент управления через VBA немного другим способом. Формы отображаются как классы с Form_ перед ними (что приятно, потому что вы можете использовать intellisense). Таким образом, ваш синтаксис будет похож на следующий:

Form_Formname.Controls("ControlName").Value 

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

person Robert Yarbrough    schedule 27.08.2016