|
|
|
| Нужно из VBA обратиться к чекбоксу в форме
Private Sub Report_Open(Cancel As Integer)
If [Формы].[ЗаказыЗаголовки].[Комплектующие] = True Then
[Сумма_Руб].Visible = True
Else
[Сумма_Руб].Visible = False
End If
End Sub
"Комплектующие" - это чекбокс (флажок) в форме открытой в момент открытия отчета. Как его правильно обозвать чтоб работало?
| |
|
| |
|
|
|
| вопрос из серии как правильно обратиться с вопросом | |
|
| |
|
|
|
| Не совсем. У меня есть основная форма ЗаказыЗаголовки - в ней шапки заказов, там среди прочих есть флажок Комплектующие. В основной есть подчиненная форма ЗаказыДанные в ней: наименование, количество, Сумма_Руб - из запроса запЗаказыДанные
Есть основной отчет отчет не имеющий источника данных, а в нем подчиненный отчет, данные которого берутся из запроса запЗаказыДанные
Мне нужно чтобы поле Сумма_Руб в подчиненном отчете скрывалась (не выводилась на экран) если флажок Комплектующие сброшен; и показывалась если флажок установлен.
Вот, кажется так сформулировал
P.S. Прошу прощения за двойной пост - чё то у меня глюкнуло... | |
|
| |
|
|
|
| да я уже понял, перечтя внимательно пример кода
откройте NorthWind и посмотрите как там решаются подобные вопросы
ваш вопрос там решен элементарно | |
|
| |
|
|
|
| Еще раз прошу прощения!
А что такое NorthWind? | |
|
| |
|
|
|
| NorthWind - учебная база
попробуйте так
If form!ЗаказыЗаголовки!Комплектующие = True
|
| |
|
| |
|
|
|
| Спасибо! Поробую
А где можно найти эту NorthWind? Я вчера яндыксом попробовал - нашлось все кроме имеющего отношение к Access ... | |
|
| |
|
|
|
| Вешаю на событие Открытие подчиненного отчета вот это:
Private Sub Report_Open(Cancel As Integer)
If Form!ЗаказыЗаголовки!Комплектующие = True Then
[Сумма_Руб].Visible = True
Else
[СуммаРуб].Visible = False
End If
EndSub
Ругается: Object Required и выкидывает в VBA. Желтым выделена строка:
If Form!ЗаказыЗаголовки!Комплектующие = True Then
Что то я делаю не так, а что не пойму | |
|
| |
|
|
|
| а форма "ЗаказыЗаголовки" открыта? | |
|
| |
|
|
|
| Конечно!
Она закрывается только вручную, а кнопочка открытия заказа для просмотра находится на ней | |
|
| |
|
|
|
| а-а-а... вот так надо
If forms!ЗаказыЗаголовки!Комплектующие = True | |
|
| |
|
|
|
|
| или еще проще
[Сумма_Руб].Visible = forms!ЗаказыЗаголовки!Комплектующие
зачем вообще вы IF пихаете куда попало почем зря? | |
|
| |
|
|
|
| Да, проще... Попробую...
Опыта маловато - учиться и учиться ...
| |
|
| |
|
|
|
| по поводу попроще есть небольшое уточнение - иногда простота бывает хуже воровства
в случае, когда вы прогоняете условие по IF - чекбокс на форме может быть и True и False и Null - в ифах можно обработать все три состояния или приравнять два из них (как и сделано)
(хотя в таком случае логичнее было бы использовать SelectCase или придется для полноты картины делать вложенные IF)
если прямо по состоянию чекбокса управлять видимостью контрола (которая может быть только True или False) то можно создать ошибку при чекбокс = Null
вопрос в том, для чего нужен этот чекбокс и можно ли ему задать условие не позволяющее принимать значение Null
судя по коду - в вашем случе зависимость Visible от Null и False одинаковая и можно использовать предложенный короткий вариант определив для ЧекБокса на форме DefaultValue = False
возможны варианты если у чекбокса есть ControlSource
если источником для чекбокса является поле таблицы то лучше задать DefaultValue прямо в таблице и ValidationRule определить заодно <> Null
если источником является вычисляемое поле запроса, то лучше будет немного подрихтовать сам чекбокс, точнее и явно определив его источник
ControlSource = "F1" по "NZ" function | |
|
| |
|
|
|
| на кнопку открытия заказа на вашей форме вешайте что-то вроде
DoCmd.OpenReport "rptYourReportName", acPreview, , , , [Комплектующие]
в процедуре на открытие отчета пишите что-то вроде
[СуммаРуб].Visible = OpenArgs | |
|
| |
|
|
|
| Подскажите что неправильно в
Private Sub повтор_Click()
If Me![повтор] = True Then "[район1]='" & Me![район] end if
End Sub
Хочу сделать чтобы при нажатие на "флажок" (повтор), из текстового поля (район) значения переносились в текстовое поле (район1), кто нибудь пожалуйста помогите очень нужно. | |
|
| |
|
|
|
| Может так
Private Sub повтор_AfterUpdate()
If Me![повтор] = True Then
Ме.район1 = Me.район
end if
End Sub
|
| |
|
| |
|