Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вызов глобальной процедуры
 
 автор: П.Полиграфович   (11.11.2008 в 22:19)   личное сообщение
 
 

По таймеру вызываю паблик процедуру, указав имя модуля.имя процедуры, получаю критич. ошибку access закрывается, экспериментировал на 3-х машинах Предварительное открытие данного модуля через Docmd.Open решает проблему - всё отлично работает.
В чём тут дело не могу понять, все остальные пабл. процедуры, ф-ции вызываются без всякого открытия, их содержащего модуля
Повесил на кнопку вызов той же пабл. процедуры без открытия модуля - работает!??

  Ответить  
 
 автор: Lukas   (11.11.2008 в 22:49)   личное сообщение
 
 

Вызываю публичную процедуру по событию таймера без открытия модуля, все работает.

Private Sub Form_Timer()
Test
End Sub

Public Sub Test()
Debug.Print Time()
End Sub

  Ответить  
 
 автор: П.Полиграфович   (11.11.2008 в 22:52)   личное сообщение
 
 

Нет не БАГ! Вот результат эксперимента: Форма, в которой срабатывает таймер (и происходит вызов), загружается при запуске приложения, только после такого старта формы, вызов процедуры вызывает ошибку. Если же я при старте закрываю форму, открываю снова - то не сбоит !! Здесь дело в чём-то другом, вот в чём только..???

  Ответить  
 
 автор: Lukas   (11.11.2008 в 23:07)   личное сообщение
 
 

Для начала, импортом всего в новый файл.

  Ответить  
 
 автор: П.Полиграфович   (11.11.2008 в 23:36)   личное сообщение
 
 

Дальше - больше. Импорт ругается при импорте форм: "Имя совпадает с именем существующего модуля, проекта или библиотеки объектов", хотя ничто не совпадает! В этой новой базе теперь даже при обычном (т.е. не при старте приложения) открытии формы, access закрывается...? И обратно же если в этой новой базе, делаю предварительное открытие модуля с процедурой, то все ОК.???

  Ответить  
 
 автор: Lukas   (11.11.2008 в 23:47)   личное сообщение
 
 

Делаем копию основной.
Пробуем импортировать поштучно.
На каких формах будет ругаться, копируем текст модуля в блокнот. Модуль из формы удаляем (Устанавливаем свойство - Наличие модуля в Нет). Компилируем проект. Импортирум форму без модуля. В новой базе создаем модуль этой формы. Копируем из блокнота код модуля. Проверяем соответствие событий коду. Компилируем проект.

В статьях форума есть две статьи:
1. Очистка кода от мусора.
2. Сохранение форм в текстовом файле и создание из файла.
Точных названий не помню, но где-то "сверху".
Можно попытаться воспользоваться этими методиками.

  Ответить  
 
 автор: П.Полиграфович   (13.11.2008 в 13:42)   личное сообщение
 
 

Поставил SP3, импорт в новую базу прошел без ошибок, все модули, таблицы и т.д. Компилируется тож без вопросов. Программка для чистки БД Doctor For DA Access тоже не помогает, т.е. чистит, пишет, что такие-то модули почищены, но без эффекта. Запускаю и вижу тот же сбой в работе access!
Пробую вызвать с того же события таймера, любую другую паблик процедуру, и нет никаких сбоев
Не базу же с нуля писать?!

  Ответить  
 
 автор: час   (14.11.2008 в 18:57)   личное сообщение
 
 

А Вы непробовали поменять слово тест на другое TESTIK например.
У вас база тоже тест называется - нет?

  Ответить  
 
 автор: П.Полиграфович   (14.11.2008 в 22:23)   личное сообщение
 
 

Да это вообще Лукас написал?! Я уже, что только не пробовал...
Товарищи программисты, скажите что-нить по поводу базы моей, жуть как не охота переписывать, тем более, что гарантии "незаглючивания" снова, нет! ???
В пошаговом всё работает. Ничего не могу понять? Уже копирил все модули в текст, назад в базу, безрезультатно! NEED ASSISTANCE!!!

  Ответить  
 
 автор: Lukas   (14.11.2008 в 22:28)   личное сообщение
 
 


...Пробую вызвать с того же события таймера, любую другую паблик процедуру, и нет никаких сбоев...

Так может вопрос в самой процедуре. Покажите текст.

  Ответить  
 
 автор: П.Полиграфович   (14.11.2008 в 23:26)   личное сообщение
 
 

Вот. Процедура более чем незамысловатая. Я пробовал вместо тела ставить Msgbox просто, работает, иначе сбоит!

Option Compare Database
Option Explicit
Public Sub WRITEOFF()
Dim RST As DAO.Recordset, strSQL As String, DELstr As String
  Set RST = CurrentDb.OpenRecordset("SELECT Round([Сумма]/[Кол-во дней]) AS INKASSO, " & _
  "Заказы.ClientID, [Заказы-detail].VisitDate, Группы.Группа FROM Группы INNER JOIN " & _
  "(Заказы INNER JOIN [Заказы-detail] ON Заказы.Код_Заказы = [Заказы-detail].OrderCode)" & _
  " ON Группы.Код = Заказы.Группа WHERE ((([Заказы-detail].VisitDate) = Date()))" & _
  "ORDER BY Round([Сумма]/[Кол-во дней])")
     If RST.RecordCount <> 0 Then
     With RST
       Do While Not .EOF
      DELstr = "DELETE FROM [Счета] WHERE Клиент = " & .Fields(1) & " AND " & _
      "Дата = " & Format(.Fields(2), "\#mm\/dd\/yyyy\#") & " AND Инкассо = " & .Fields(0) & " " & _
      " AND Описание = '" & "Списание" & .Fields(3) & "';"
        CurrentProject.Connection.Execute DELstr
      strSQL = "INSERT INTO [Счета]([Клиент],[Дата],[Инкассо], " & _
         "[Описание]) VALUES (" & .Fields(1) & ", " & _
         "" & Format(.Fields(2), "\#mm\/dd\/yyyy\#") & ", " & .Fields(0) & ", " & _
         "'" & "Списание" & .Fields(3) & "');"
                  CurrentProject.Connection.Execute strSQL
          Debug.Print , .Fields(0), .Fields(1), .Fields(2), .Fields(3)
       .MoveNext
     Loop
     End With
     End If
   End Sub

В пошаговом работает. Работает без сбоев также в случае если модуль открыт.

  Ответить  
 
 автор: Lukas   (16.11.2008 в 22:55)   личное сообщение
36 Кб.
 
 

Не знаю Ваш ли случай, но попробовать можно:

  Ответить  
 
 автор: П.Полиграфович   (17.11.2008 в 14:16)   личное сообщение
98 Кб.
 
 

DoEvents не помогает. Прикрепил базу, плз посмотрите, протестируйте. Я уже неделю с этим глюком расправиться не могу

  Ответить  
 
 автор: V.Kim   (17.11.2008 в 14:33)   личное сообщение
 
 

Запустил, .... - все работает и по таймеру через 5 с и через кнопку


Глюка не наблюдаю

  Ответить  
 
 автор: П.Полиграфович   (17.11.2008 в 15:45)   личное сообщение
 
 

А в таблице счета, что-нить появляется??? Я на 4-х машинах уже испробовал - одна и та же ошибка и Access закрывается!!!
PS. Товарищ OSMOR добавьте стреляющийся из пистола смайлик, плз !!!!!!! Мне так его не хватает O_o

  Ответить  
 
 автор: час   (17.11.2008 в 16:43)   личное сообщение
 
 

В таблице счета - одна запись
Ингарова Ольга Дмитриевна

  Ответить  
 
 автор: час   (17.11.2008 в 16:46)   личное сообщение
 
 

"ВСЁ НОРМАЛЬНО!"
пишет.........

А пробовали постепенно снижаясь по коду делать точки останова...
Всё ниже и ниже - где зависнет - в какой строке начнёт глючить........

  Ответить  
 
 автор: П.Полиграфович   (17.11.2008 в 17:14)   личное сообщение
 
 

ЧАС: ДА нигде не виснет, если хоть 1 точку ставлю или просто VBE открываю и тут же закрыаю. Я вообще в полном непонимании причины!!?? ПОЧЕМУ на тех машинах, где тестил не работает?

  Ответить  
 
 автор: П.Полиграфович   (18.11.2008 в 17:49)   личное сообщение
 
 

V.Kim, ЧАС?: А Access какой у вас установлен??

  Ответить  
 
 автор: ГлазастыйМышь   (17.11.2008 в 17:35)   личное сообщение
 
 

я делал обертку DoEvents

Public Function WaitEndProces()
' ждать ответ системы
Dim i As Long
On Error GoTo Err_Debug
    
    For i = 0 To 10
        DoEvents
    Next i

Exit_Here:
    Exit Function
Err_Debug:
    Resume Exit_Here
End Function

  Ответить  
 
 автор: П.Полиграфович   (17.11.2008 в 19:48)   личное сообщение
 
 

Проэкспериментировал, сделал такую же оберку - безрезультатно!?
Я думал сначала на свой офис, потом начал "подозревать" систему, но после теста на 4-х машинах....???

  Ответить  
 
 автор: час   (17.11.2008 в 09:05)   личное сообщение
 
 

Что за ХР такая.......
Сжать и восстановить , перебросить в чистуб новую базу - тоже пробовали наверное........

Вот ведь странность какая.
Я весь выходной модуль писал в базе - всё путём - закончил, а он в очередное открытие - пропал без следа........... ЧУДЕСА ...........
Всё на смарку - весь день коту под Х. ост.

А пробовали постепенно снижаясь по коду делать точки останова...
Всё ниже и ниже - где зависнет в какой строке начнёт глючить
.......

может попробовать на время убрать Option Explicit
хотя вряд ли.

Можно на время закомментировать
'CurrentProject.Connection.Execute

Поочереди.
...............

  Ответить  
 
 автор: П.Полиграфович   (18.11.2008 в 01:55)   личное сообщение
0 Кб.
 
 

Вот еще на одной машине протестировал, Vista, приложение закрываясь "объяснило", что:

Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: MSACCESS.EXE
Версия приложения: 11.0.8166.0
Штамп времени приложения: 46437912
Имя модуля с ошибкой: VBE6.DLL
Версия модуля с ошибкой: 6.5.10.24
Штамп времени модуля с ошибкой: 464105f1
Код исключения: c0000005
Смещение исключения: 001a5c2a
Версия ОС: 6.0.6000.2.0.0.768.3
Код языка: 1049

Дополнительные сведения об этой проблеме:
LCID: 1049
Brand: Office11Crash
skulcid: 1049

Может проблема в DLL?? но тогда на 5 компах имеем одинаковую проблему с DLL?? Прикрепил файл с отчетом об ошибке, может подскажите что...

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList