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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Помогите пожалуйста или яч сойду с ума =)
 
 автор: АлаяЗаря   (06.02.2010 в 20:49)   личное сообщение
30 Кб.
 
 

Возникла утром идея, мать ее...

В базе имеется Объект и подчиненный к нему Подобъект, но также объект может и не иметь подчиненого объекта.

Вот что я придумал, поставить флажок около объекта, если у него нет подчиненного объекта, то и ладно, а если есть открывается подчиненная форма куда можно вписать так скажем данные.

И вроде все получилось, только есть одна загвоздка, пока на флажок не нажмешь ничего не работает =( блин я даже не знаю как объяснить, мозг кипит....

Откройте форму и не трогайте флажок полистайте записи и поймете... -)

  Ответить  
 
 автор: kot_k_k   (06.02.2010 в 21:12)   личное сообщение
 
 

событие "Текущая запись" - проверка флага и задание на этом свойство Visible пдчиненной форме.

Private Sub Form_Current()
If Me.lfelse = True Then
    Me.podobekt.Visible = True
    Else
    Me.podobekt.Visible = False
End If
End Sub

че за название LFELSE

п.с. кипит наш разум возмущенный

  Ответить  
 
 автор: АлаяЗаря   (06.02.2010 в 21:16)   личное сообщение
 
 

=) спасибо большое =) уф, прям груз с плеч =) рад, мона и пива попить =)

  Ответить  
 
 автор: kot_k_k   (06.02.2010 в 21:21)   личное сообщение
 
 

галочка - есть/нет - лишние поле на форме.

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

можно вообще без этого поля.

проверку устраиваем на наличие записей в рекодсете и делаем Visible соответственно.

  Ответить  
 
 автор: АлаяЗаря   (06.02.2010 в 21:28)   личное сообщение
 
 

Ну это не утвержденный вариант, просто ищу пути решения =)


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


это я тоже об этом подумал!


а делаем соответсвующую кнопку - добавить Подобъект



Это вариант, только

- которая делается видимой только при отсутсвии записей в подчиненной табле - и программно меняем ее значение



блин, вот это даже не знаю как сделать =(

Примерно представляю, но мозг не соображает как все это написать в VBA

  Ответить  
 
 автор: kot_k_k   (06.02.2010 в 21:31)   личное сообщение
 
 

программно - это про поле типа Флаг. сорь. несколько раз перестраивал ответ гоняя туда сюда текст.

  Ответить  
 
 автор: АлаяЗаря   (06.02.2010 в 21:44)   личное сообщение
 
 

бррр, я так понял, кнопка "добавить подчиненный объект" видна если в подчиненной таблице нет записей, и не видна если наоборот. Вот не могу сообразить как это реализовать...

На вскидку Флаг=да, есть подчинение
кнопка не видна, флаг не виден, таблица видна

Флаг = нет

Кнопка видна, таблица не видна...

  Ответить  
 
 автор: kot_k_k   (06.02.2010 в 21:50)   личное сообщение
 
 

у тебя есть поле флаг - анализируя его (при каких либо событиях формы, объектов формы, даже других форм) можно скрывать и не скрывать объекты (вообще выполнять какие-либо действия)
у кнопки есть тоже св-во Visible - оно есть у каждого объекта на форме!!!

Ме.Объект_формы.Visible - True/False

  Ответить  
 
 автор: osmor   (06.02.2010 в 22:00)   личное сообщение
18 Кб.
 
 

можно вообще без этого поля.

Я бы сказал даже нужно
Запросом или Dcount проверять наличие записей в таблице ПодОбъект соответствующих текущему объекту.
см. базу

  Ответить  
 
 автор: Lukas   (06.02.2010 в 22:44)   личное сообщение
 
 

Можно у самой подчиненной формы спросить, есть ли в ней строки:

'Модуль подчиненной формы:
Public Function HaveRows() As Boolean
    HaveRows = Me.RecordsetClone.RecordCount > 0
End Function

И спрятать/показать ее контейнер:

'В модуле главной формы
Private Sub Form_Current()
    Call ShowHide(Me.podobekt.Form.HaveRows())
End Sub

Private Sub cmdpodobekt_Click()
    Call ShowHide(True)
End Sub

Private Sub ShowHide(blnCheck As Boolean)
    With Me.podobekt
        .Visible = blnCheck
        If blnCheck Then .SetFocus
    End With
    Me.cmdpodobekt.Enabled = Not blnCheck
End Sub

Нет необходимости указывать имя таблицы, поля, то есть присутствует некая универсальность.

  Ответить  
 
 автор: АлаяЗаря   (07.02.2010 в 11:50)   личное сообщение
 
 

Буду разбираться и пробывать! спасибо =)

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