Добрый день.
Есть формы
Форма 1 каркас. На ней 4 вкладки
Вкладка1:
ПодФорма2 РеестрПациентов (таблица пациенты)
ПодФорма3 Реестр обследований (таблица Обследования) выводятся итоги обследования кратко данного пациента по каренту РеестраПациентов
Вкладка2 - видима если у пациента есть обследования:
ПодФорма 4 краткая инфа о пациенте rst на (таблица пациенты)
ПодФорма 5 Анамнез (таблица Обследования)
ПодФорма 6 Обследование (таблица Обследования) - выводится данное обследование данного пациента по каренту РеестраОбследований
Вкладка3 - видима если у пациента есть обследования:
Дубль ПодФормы 4
Дубль ПодФормы 5
Под6 Диагноз-Назначения (таблица Обследования) - выводятся Диагноз-Назначения в данном обследовании у данного пациента по каренту РеестраОбследований
Вкладка4 - видима если в данном обследовании был выписан рецепт:
Дубль ПодФормы 4
Дубль ПодФормы 5
ПодФорма 7 Рецепт на очки (таблица Очки) - выводятся рецепты в данном обследовании, по карренту РеестраОбследований.
---
На трех вкладках выводятся формы 4 и 5 (сведения о пациенте и анамнез), нужно чтобы они всегда были видны.
Связка мастерслэйвами по текстбоксам на главной.
Чтобы формировать видимость вкладок и подформ, пишу в главном модуле функцию и вызываю ее при открытии формы и на карентах РеестраПациентов и РеестраОбследований.
Set frm = Forms![01Main]![01ReestrObsl].Form
Set dbs = CurrentDb
'Если нет Pacienta - Pacienta, вкладки и кнопки удаления не показывать
II = Forms![01Main]![LikDoc].Value
strSQL = "SELECT ID_Doc FROM [01Пациент] WHERE ID_Doc = " & II & ";"
Set rst = dbs.OpenRecordset(strSQL)
If rst.RecordCount = 0 Then 'Пациентов нет
Forms![01Main]![Поиск].SetFocus
Forms![01Main].Form![Obsled].Visible = False
Forms![01Main].Form![Diagnoz].Visible = False
Forms![01Main].Form![Recept].Visible = False
Forms![01Main].Form![DelObsled].Visible = False
Forms![01Main].Form![DelPacienta].Visible = False
Forms![01Main].Form![01ReestrObsl].Visible = False
Else 'Пациенты есть
Forms![01Main].Form![DelPacienta].Visible = True
II = Forms![01Main]![LinkPacient].Value
strSQL = "SELECT ID_Name FROM [01Obsled] WHERE ID_Name = " & II & ";"
Set rst = dbs.OpenRecordset(strSQL)
If rst.RecordCount = 0 Then 'Обследований нет
Forms![01Main]![01Реестр].SetFocus
Forms![01Main].Form![Obsled].Visible = False
Forms![01Main].Form![Diagnoz].Visible = False
Forms![01Main].Form![Recept].Visible = False
Forms![01Main].Form![DelObsled].Visible = False
Forms![01Main].Form![01ReestrObsl].Visible = False
Else 'Обследования есть
Forms![01Main].Form![Obsled].Visible = True
Forms![01Main].Form![Diagnoz].Visible = True
Forms![01Main].Form![Recept].Visible = False
Forms![01Main].Form![DelObsled].Visible = True
Forms![01Main].Form![01ReestrObsl].Visible = True
II = Forms![01Main]![СвязникObsled].Value
strSQL = "SELECT ID_EyeTest FROM [01Очки] WHERE ID_EyeTest = " & II & ";"
Set rst = dbs.OpenRecordset(strSQL)
If rst.RecordCount = 0 Then 'Receptа нет
Forms![01Main].Form![Recept].Visible = False
Else 'Receptы есть
Forms![01Main].Form![Recept].Visible = True
End If
End If
End If
rst.Close
Set dbs = Nothing
Если не ставить обработчик ошибок - вылетает по ошибкам Нет текущей записи; выход за границы, выражение не содержит значения и еще что-то.
Если игнорировать ошибки - все работает нормально. Но видимо так все же неправильно делать, раз ошибки летят.
Насколько я понимаю это происходит из-за нескольких проходов аксесса на формах, когда в начале данные еще не готовы.
Подскажите как это можно поправить?
зы пробовал упростить код по совету Панурга
frm.Visible = Not (frm.Recordset.EOF And frm.Recordset.BOF)
не получается, EOF BEF ведут себя непредсказуемо.
Сорри за длинный текст
http://www.sql.ru/forum/1177226/oshibki-na-podchinennyh-formah