Непонятка с Load\Unload формы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Непонятка с Load\Unload формы

Сообщение Dummiel » 23.11.2006 (Чт) 13:46

И снова я, не подумайте за спам! Ишшо одна заморочка.

Проект сделан по типу MDI-формы. Из меню родительской вызываю дочернюю (frmVvod - данные на клиента), в Form_Load()
которой делаю проверку на наличие записей в одной из таблиц БД (фамилии сотрудников). Коли они есть, заряжаю ими ComboBox.
Но если прога запускается в первый раз, то, естественно, никаких сотрудников в БД еще нет, их нужно заносить через меню
"Сервис\Редактирование справочников".

Проверка обычная:

sSQL = "SELECT * FROM Sotrudnik ORDER BY Famil"
Set dbRs = dbBD.OpenRecordset(sSQL)

If dbRs.RecordCount = 0 Then
MsgBox "Список сотрудников пуст!"
Exit Sub
End If

Задача - если список пуст, то нехай тот юзер идет в справочники и запишет хоть одного сотрудника, который будет
обслуживать клиентов предприятия. А вот форму мне показывать незачем, не то тупой юзер (бывают такие еще) будет
заполнять данные на клиента, а обслуживать его будет некому. А форма все равно показывается после Exit Sub.
А если я делаю If dbRs.RecordCount = 0 Then Unload Me, то VB выдает ошибку выполнения: показывает родительскую форму,
откуда я вызываю дочернюю, и кричит - объект уже выгружен. Причем программа останавливается как раз на frmVvod.Show.

Это как понять? :( Или в мозгах чего подправить? :)

С уважением - Dummiel.

Tanya
Обычный пользователь
Обычный пользователь
 
Сообщения: 98
Зарегистрирован: 03.03.2004 (Ср) 21:41
Откуда: Беларусь, Минск

Сообщение Tanya » 24.11.2006 (Пт) 0:04

может быть вместо

frmVvod.Show

нужно было написать

sSQL = "SELECT * FROM Sotrudnik ORDER BY Famil"
Set dbRs = dbBD.OpenRecordset(sSQL)

If dbRs.RecordCount = 0 Then
MsgBox "Список сотрудников пуст!"
else
frmVvod.Show
End If

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 25.11.2006 (Сб) 9:58

Елы-палы!

Мозги оказывается нужны для того, чтобы ими думать!!! :D
Только отправил этот вопрос, как тут же посетила мысля - просто проверку нужно делать из родительской формы! Как только проверил все из родительской формы, и по условию начал вызывать дочернюю, так все и заработало!

Спасибо за совет! :)

clickhere
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 30.11.2006 (Чт) 0:09
Откуда: Минск,Беларусь

Сообщение clickhere » 30.11.2006 (Чт) 0:36

Есть путь поставить проверку в дочерней форме не в Form_Load() а в Form_Activate()


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 25

    TopList