2015-01-11 8 views
0

У меня возникли проблемы со ссылкой на подформат в рамках подформы на форме.Ошибка ссылки на вложенную подсистему MS Access

Private Sub Command37_Click() 
Dim UMsge As String 

Me.Filter = "ID=" & Me.ID 
Me.FilterOn = True 

UMsge = "Swimmer's Name: " & Forms![Parents]![Swimmers Subform].Form![Memb First Name] & " " & Forms![Parents]![Swimmers Subform].Form![Memb Last Name] & vbCrLf & vbCrLf & "Roster Group: " & Forms![Parents]![Swimmers Subform].Form![Roster Group] & vbCrLf & vbCrLf & "Monthly Fee: " & Format(Forms![Parents]![Swimmers Subform].Form![Parents - Payment subform].Form![GroupMonthlyPrice], "Currency") & vbCrLf & vbCrLf & "Thank You!" 

DoCmd.SendObject acSendForm, "Parents", acFormatPDF, Me.Email, , , "Monthly Fees Owed As Of " & DateSerial(Year(Date), Month(Date), Day(Date)), UMsge, True 

End Sub 

Это только эта последняя часть:

Format(Forms![Parents]![Swimmers Subform].Form![Parents - Payment subform].Form![GroupMonthlyPrice], "Currency") 

FormView: enter image description here

ответ

0

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

Кроме того, поскольку ваша кнопка в той же форме, для верхней части самой формы, мы можем использовать ключевое слово «я». Это простёт ваш код совсем немного.

Предположим, что мы имели 3 вложенных суб формы, мы могли бы использовать этот синтаксис:

strName = Me.Swimmers_SubForm.Form![memb First Name] & " " & _ 
      Me.Swimmers_SubForm.Form![memb Last Name] 

выше получит вам имя в первой вложенной форме к югу.

Однако, следующая следующая форма выглядит ОЧЕНЬ очень похожа на подкатаполит.

две вещи:

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

Так что вам нужно (нужно) улавливать эту ошибку.

Кроме того, если это лист вспомогательных данных, то вы не можете дать контроль Подчиненная форма имя - начинается с child0, и это, вероятно, ваша проблема.

Обратите внимание, что возврат записи будет подсвеченной строкой, а в вашем примере экрана я вижу две строки, и я НЕ вижу столбец с именем [GroupMonthlyPrice]. Однако я буду считать, что это колонка, которую вы хотите использовать? Или вам нужен столбец под названием [Месячная плата]?

Так ссылаться на эту 3-ю вложенную форму, синтаксис будет таким:

Me.Swimmers_SubForm.Form!Child0.Form![GroupMonthlyPrice] 

Так сломать все это вниз, я хотел бы использовать этот код:

Dim f  As Form  ' ref to sub form 
Dim UMsge As String 

Set f = Me.Swimmers_Subform.Form 

UMsge = "Swimmer's Name: " & f![Memb First Name] & " " & f![Memb Last Name] & vbCrLf & _ 
     "Roster Group: " & f![Roster Group] & vbCrLf & vbCrLf & _ 
     "Monthly Fee: " & Format(f!Child0.Form![GroupMontlyPrice], "Currency") 

ссылаются, «е» в выше не требуется, но, безусловно, делает код более читаемым.

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

+0

Спасибо, что ответили! ", если эта форма никогда не была расширена, тогда ссылка сломается (дочерняя форма не существует)" Кажется, это проблема, которую мне нужно поймать, чтобы она не была ошибкой. Не могу поверить, что я этого не осознавал. – Solarplex

Смежные вопросы