Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите обратиться к чекбоксу!
 
 автор: Alex   (09.01.2007 в 21:21)   личное сообщение
 
 

Нужно из VBA обратиться к чекбоксу в форме

Private Sub Report_Open(Cancel As Integer)

If [Формы].[ЗаказыЗаголовки].[Комплектующие] = True Then
[Сумма_Руб].Visible = True
Else
[Сумма_Руб].Visible = False
End If
End Sub

"Комплектующие" - это чекбокс (флажок) в форме открытой в момент открытия отчета. Как его правильно обозвать чтоб работало?

  Ответить  
 
 автор: Explorer   (09.01.2007 в 21:59)   личное сообщение
 
 

вопрос из серии как правильно обратиться с вопросом

  Ответить  
 
 автор: Alex   (09.01.2007 в 22:15)   личное сообщение
 
 

Не совсем. У меня есть основная форма ЗаказыЗаголовки - в ней шапки заказов, там среди прочих есть флажок Комплектующие. В основной есть подчиненная форма ЗаказыДанные в ней: наименование, количество, Сумма_Руб - из запроса запЗаказыДанные
Есть основной отчет отчет не имеющий источника данных, а в нем подчиненный отчет, данные которого берутся из запроса запЗаказыДанные
Мне нужно чтобы поле Сумма_Руб в подчиненном отчете скрывалась (не выводилась на экран) если флажок Комплектующие сброшен; и показывалась если флажок установлен.
Вот, кажется так сформулировал
P.S. Прошу прощения за двойной пост - чё то у меня глюкнуло...

  Ответить  
 
 автор: Explorer   (09.01.2007 в 22:17)   личное сообщение
 
 

да я уже понял, перечтя внимательно пример кода

откройте NorthWind и посмотрите как там решаются подобные вопросы

ваш вопрос там решен элементарно

  Ответить  
 
 автор: Alex   (09.01.2007 в 22:25)   личное сообщение
 
 

Еще раз прошу прощения!
А что такое NorthWind?

  Ответить  
 
 автор: osmor   (10.01.2007 в 08:43)   личное сообщение
 
 

NorthWind - учебная база
попробуйте так

If form!ЗаказыЗаголовки!Комплектующие = True 

  Ответить  
 
 автор: Alex   (10.01.2007 в 10:46)   личное сообщение
 
 

Спасибо! Поробую
А где можно найти эту NorthWind? Я вчера яндыксом попробовал - нашлось все кроме имеющего отношение к Access ...

  Ответить  
 
 автор: Alex   (10.01.2007 в 12:12)   личное сообщение
 
 

Вешаю на событие Открытие подчиненного отчета вот это:

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

Что то я делаю не так, а что не пойму

  Ответить  
 
 автор: osmor   (10.01.2007 в 12:25)   личное сообщение
 
 

а форма "ЗаказыЗаголовки" открыта?

  Ответить  
 
 автор: Alex   (10.01.2007 в 12:32)   личное сообщение
 
 

Конечно!
Она закрывается только вручную, а кнопочка открытия заказа для просмотра находится на ней

  Ответить  
 
 автор: osmor   (10.01.2007 в 13:14)   личное сообщение
 
 

а-а-а... вот так надо
If forms!ЗаказыЗаголовки!Комплектующие = True

  Ответить  
 
 автор: Alex   (10.01.2007 в 13:18)   личное сообщение
 
 

Yes !!!
Заработала! Ура!
Огромнейшее спасибо!!!

  Ответить  
 
 автор: Explorer   (10.01.2007 в 13:34)   личное сообщение
 
 

или еще проще

[Сумма_Руб].Visible = forms!ЗаказыЗаголовки!Комплектующие


зачем вообще вы IF пихаете куда попало почем зря?

  Ответить  
 
 автор: Alex   (10.01.2007 в 13:47)   личное сообщение
 
 

Да, проще... Попробую...
Опыта маловато - учиться и учиться ...

  Ответить  
 
 автор: Explorer   (10.01.2007 в 14:04)   личное сообщение
 
 

по поводу попроще есть небольшое уточнение - иногда простота бывает хуже воровства

в случае, когда вы прогоняете условие по IF - чекбокс на форме может быть и True и False и Null - в ифах можно обработать все три состояния или приравнять два из них (как и сделано)

(хотя в таком случае логичнее было бы использовать SelectCase или придется для полноты картины делать вложенные IF)

если прямо по состоянию чекбокса управлять видимостью контрола (которая может быть только True или False) то можно создать ошибку при чекбокс = Null

вопрос в том, для чего нужен этот чекбокс и можно ли ему задать условие не позволяющее принимать значение Null

судя по коду - в вашем случе зависимость Visible от Null и False одинаковая и можно использовать предложенный короткий вариант определив для ЧекБокса на форме DefaultValue = False

возможны варианты если у чекбокса есть ControlSource

если источником для чекбокса является поле таблицы то лучше задать DefaultValue прямо в таблице и ValidationRule определить заодно <> Null

если источником является вычисляемое поле запроса, то лучше будет немного подрихтовать сам чекбокс, точнее и явно определив его источник

ControlSource = "F1" по "NZ" function

  Ответить  
 
 автор: Explorer   (10.01.2007 в 13:31)   личное сообщение
 
 

на кнопку открытия заказа на вашей форме вешайте что-то вроде

DoCmd.OpenReport "rptYourReportName", acPreview, , , , [Комплектующие]

в процедуре на открытие отчета пишите что-то вроде

[СуммаРуб].Visible = OpenArgs

  Ответить  
 
 автор: kevich   (05.10.2008 в 11:19)   личное сообщение
 
 

Подскажите что неправильно в

Private Sub повтор_Click()
If Me![повтор] = True Then "[район1]='" & Me![район] end if
End Sub

Хочу сделать чтобы при нажатие на "флажок" (повтор), из текстового поля (район) значения переносились в текстовое поле (район1), кто нибудь пожалуйста помогите очень нужно.

  Ответить  
 
 автор: Pasat   (05.10.2008 в 12:32)   личное сообщение
 
 

Может так
Private Sub повтор_AfterUpdate()
If Me![повтор] = True Then 
Ме.район1 = Me.район
end if
End Sub

  Ответить  
 
 автор: kevich   (06.10.2008 в 18:36)   личное сообщение
 
 

Спасибо работает!

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList