-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


продолжение работы формы после ошибки

Пятница, 28 Февраля 2014 г. 19:43 + в цитатник
В обработчиках открытия и закрытия формы вызываются функции создающая и удаляющая, соответственно, ряд запросов с названиями по номерам "ServiceQR1", ServiceQR2" и т.д. Количество запросов зависит от данных в базе (определяется в функции их создания) и харнится во внешней (в рамках одного модуля) переменной iout, значение которой присвается в функции открытия формы, а используется при удалении запросов в обработчике открытия.
Все работает, но если вылетает какая-то ошибка, то при последующем закрытии формы запросы не удаляются. Я проверил, после вылетания ошибки iout становится равной 0.
В чем может быть проблема?
P.S. На предмет использования этой переменной в других функция я проверил - нет. Значение перед вылетанием ошибки проверял - все ок, без ошибки тоже все работает.

Private Sub Form_Close()
Module1.deletequeries
End Sub

Private Sub Form_Open(Cancel As Integer)
Module1.CreateQueries
End Sub


из Module1:
Sub CreateQueries()
'If FormCount = 0 Then
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Структура", dbOpenDynaset)
rst.MoveFirst
Dim t As Long
t = rst.Fields("Спонсор")
Dim query1 As String
query1 = "SELECT Структура.Спонсор AS Спонсор, Структура.Дистрибьютор AS Дистрибьютор " _
& "FROM Структура " _
& "WHERE Структура.Спонсор=" & t
iout = 15 'осталось со времен отладки - чтоб не зацикливалось,
' но решил оставить, потому что для этого примера будет кстати
Dim str As String
str = "ServiceQR"
Dim qr1 As DAO.QueryDef
Set qr1 = CurrentDb.CreateQueryDef(str & "1", query1)
Dim i As Long
Dim j As Long
j = 1
i = 0
Do While qr1.OpenRecordset(dbOpenDynaset).RecordCount <> 0
query1 = "SELECT Структрура.Спонсор AS Спонсор, Структура.Дистрибьютор AS Дистрибьютор " _
& "From Структура INNER JOIN " & str & j & " ON Структура.Спонсор = " & str & j & ".Дистрибьютор; "
j = j + 1
Set qr1 = CurrentDb.CreateQueryDef(str & j, query1)
i = i + 1
Loop
iout = j
MsgBox (iout)
qr1.Close
FormCount = FormCount + 1

End Sub


Sub deletequeries()
Dim str As String
str = "ServiceQR"
Dim j As Long
j = 1
Do While j <= iout

CurrentDb.QueryDefs.Delete str & j
j = j + 1
Loop
FormCount = FormCount - 1
End Sub

http://www.sql.ru/forum/1080131/prodolzhenie-raboty-formy-posle-oshibki


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку