powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка 29068
9 сообщений из 9, страница 1 из 1
Ошибка 29068
    #39526468
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникла следующая проблема.
Задача. Берётся исходная база данных, правится содержимое таблиц по определённым правилам. Вставляются формы, макрос autoexec и получается база под конкретного заказчика. Всё работало нормально. Но пришлось несколько усложнить задачу по формированию базы. Повесить дополнительный код. И программа стала вылетать по ошибке 29068 (смотри приложение)

Ошибка возникает в следующем фрагменте кода
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    strPath = DLookup("Path", "tblPath", "NikName='RabPath'")  'CurrentProject.Path
    DestinationDatabase = fnBuildPath(strPath, "ONS_T.mdb")
    
    NewName = "frmAlarm"
    SourceObjectName = "frmAlarm"
    DoCmd.CopyObject DestinationDatabase, NewName, acForm, SourceObjectName


    NewName = "autoexec"
    SourceObjectName = "autoexec_"
    DoCmd.CopyObject DestinationDatabase, NewName, acMacro, SourceObjectName

Ошибка возникает после второго оператора DoCmd.CopyObject Иногда она не возникает (особенно после сжатия базы). Если проходишь под отладчиком, то никогда не случается. Возможно предыдущий оператор не всегда успевает отработать. Что делать? Пробовал ставить Sleep , не помогло.


-------------------------------------------------------------
А ты вложил уже свой кровный рубль в 50-ти миллиардное состояние Билла Гейтса?
...
Рейтинг: 0 / 0
Ошибка 29068
    #39526508
doevents
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DoEvents ?
...
Рейтинг: 0 / 0
Ошибка 29068
    #39526518
Joss, а если сначала макрос, а затем форму?
...
Рейтинг: 0 / 0
Ошибка 29068
    #39526520
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossОшибка возникает после второго оператора DoCmd.CopyObject ПРИ его выполнении или ПОСЛЕ его выполнения, на следующем операторе?

JossИногда она не возникает (особенно после сжатия базы)Сжатия какой именно базы - в которой код (наиболее вероятно), или в которую выполняется копирование?

Вообще я бы вставил перед вторым блоком копирования небольшую (100-200 мс) задержку.
...
Рейтинг: 0 / 0
Ошибка 29068
    #39526567
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое, DoEvents ставил - не помогло.
Задержку ставил - не помогло (sleep 1000)
Местами копирование формы и макроса не менял.

Пока сделал следующее
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Public Sub sbCopyFormAlarm()

    On Error GoTo sbCopyFormAlarm_Error
    ...
    ...

Exit_sbCopyFormAlarm:

    On Error GoTo 0
    Exit Sub

sbCopyFormAlarm_Error:
    If Err = 29068 Then
     DoEvents
     Resume
    Else
     MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure sbCopyFormAlarm of Module Module1"
     Resume Exit_sbCopyFormAlarm
    End If
End Sub

Пока ошибки не выдавало. Я просто зациклил обработку этой ошибки. Пока не выполнится - будет пытаться.
...
Рейтинг: 0 / 0
Ошибка 29068
    #39526581
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossЯ просто зациклил обработку этой ошибки. Пока не выполнится - будет пытаться.Так - плохо.

1) Введи переменную-счётчик, и ограничь максимальное количество "витков" цикла;
2) Обработчик включай непосредственно перед оператором, и выключай сразу после него.
...
Рейтинг: 0 / 0
Ошибка 29068
    #39526594
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaJossЯ просто зациклил обработку этой ошибки. Пока не выполнится - будет пытаться.Так - плохо.

1) Введи переменную-счётчик, и ограничь максимальное количество "витков" цикла;
2) Обработчик включай непосредственно перед оператором, и выключай сразу после него. Имеет смысл. Только вместо счетчика циклов лучше наверное контролировать время - 5-10 сек Хотя тут не угадаешь, что лучше.
...
Рейтинг: 0 / 0
Ошибка 29068
    #39526604
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jossвместо счетчика циклов лучше наверное контролировать время
Ничто не мешает контролировать и то, и это:

Код: vbnet
1.
2.
3.
4.
counter = 10
start = timer
On Error GoTo sbCopyFormAlarm_Error
DoCmd.CopyObject



Код: vbnet
1.
2.
3.
4.
5.
6.
sbCopyFormAlarm_Error:
    If Err = 29068 Then
        counter = counter - 1
        if counter = 0 or timer - start > 10 then Resume Exit_sbCopyFormAlarm
        DoEvents
        Resume
...
Рейтинг: 0 / 0
Ошибка 29068
    #39526880
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaНичто не мешает контролировать и то, и это Так и сделаю
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ошибка 29068
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]