Подгрузилась ли подформа?

Morkisa
Дата: 26.02.2008 10:14:15
Подскажите плиз, существует ли какой-нибудь способ проверить, загрузилась ли уже подформа или еще нет? Ошибка возникает в следующей ситуации:

Есть главная форма, на ней связання подформа. Если она не успевает открыться (остается белым прямоугольником), а в коде идет к ней обращение какое-либо, то вылетает ошибка: "The expression you entered refers to an object that is closed or doesn t exist." (Введенное выражение содержит ссылку на объект, который закрыт или не существует)
IsLoaded не помогает :( (насколько поняла, работает только для главных форм)
Karfaqen
Дата: 26.02.2008 10:28:31
Если она не успевает открыться (остается белым прямоугольником), а в коде идет к ней обращение какое-либо, то вылетает ошибка
Как именно и в каком именно коде (в каком событии) происходит ваше обращение?
_restavraciya
Дата: 26.02.2008 10:30:22
Самое простое - обрабатывать эту самую ошибку (а не "вылетать" по ней)

Например иметь счетчик попыток с интервалом их предприятия
Ошибка - счетчик попыток декримет и старт таймер
Таймер - предпринять следующую попытку
.. тд

Но тут вопрос - сколько можно ждать ?
Ибо нет определенного времени загрузки (зависит от запроса в источнике строк подформы)

Если через одбц то попробовать ждать не дольше чем "время ожидания одбц"
_restavraciya
Дата: 26.02.2008 10:34:39
Токого не_должно возникать при загрузке главной_формы (если в событии open не ломится к подчиненной)
Может быть такое если менять sourceobject подчиненной или (наверное) recordsource подчиненной
Morkisa
Дата: 26.02.2008 10:42:42
Karfaqen
Если она не успевает открыться (остается белым прямоугольником), а в коде идет к ней обращение какое-либо, то вылетает ошибка
Как именно и в каком именно коде (в каком событии) происходит ваше обращение?


В любом.
на апдейте, смене рекордсорса, на даже просто попытке считать с нее значение (например, назв_подформы.название_поля_на_ней)....Вылетает даже на строке назв_подформы.form....
Karfaqen
Дата: 26.02.2008 11:12:24
Morkisa
В любом.
на апдейте, смене рекордсорса, на даже просто попытке считать с нее значение
Это вы перечисляете ДЕЙСТВИЯ, при которых у вас возникает ошибка. А я прошу вас назвать МОМЕНТ, в который вы выполняете эти действия.

Вы же не асинхронно пытаетесь "просто считать с нее значение". Раз вы говорите "НЕ УСПЕВАЕТ загрузиться", значит у вас это происходит в ходе выполнения какой-то ЦЕПОЧКИ событий (в которых субформа "не успевает" загрузиться). Вот и расскажите, в ходе КАКОЙ именно последовательности событий вы пытаетесь "просто считать с нее значение".
Morkisa
Дата: 26.02.2008 11:47:30
[quot KarfaqenЭто вы перечисляете ДЕЙСТВИЯ, при которых у вас возникает ошибка. А я прошу вас назвать МОМЕНТ, в который вы выполняете эти действия.

Вы же не асинхронно пытаетесь "просто считать с нее значение". Раз вы говорите "НЕ УСПЕВАЕТ загрузиться", значит у вас это происходит в ходе выполнения какой-то ЦЕПОЧКИ событий (в которых субформа "не успевает" загрузиться). Вот и расскажите, в ходе КАКОЙ именно последовательности событий вы пытаетесь "просто считать с нее значение".[/quot]

Private Sub Поле_AfterUpdate()
   Dim numrows As Long, NumColumns As Long
    numrows = Me.SelTop
    NumColumns = Me.SelLeft - 1
    Requery
    Me.SelTop = numrows !!!!! вот на этой строке и происходит ошибка, заметьте чаще проходит нормально все (подформа загрузилась)
    Me.SelLeft = NumColumns
End Sub


Private Sub Form_AfterUpdate()
    Refresh
End Sub
Karfaqen
Дата: 26.02.2008 12:06:26
Requery
Me.SelTop = numrows !!!!! вот на этой строке и происходит ошибка, заметьте чаще проходит нормально все (подформа загрузилась)
Попробуйте сделать DoEvents после Requery