powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как побороть ошибку "Класс не зарегестрирован"
3 сообщений из 3, страница 1 из 1
Как побороть ошибку "Класс не зарегестрирован"
    #32086537
SV2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SV2
Гость
Привет пиплы!

Опишу как можно сокращенне свою проблемму. Итак Проект adp A2000+MSSQL. Есть несколько форм, которые заполняются данными из ХП сервера. Форм несолько, но все имеют одинаковые выводимые поля разница только в параметрах ХП. Имя процедуры и параметры передавал через свойства формы. Когда все так, все работает и по F9 делается обновление.

Но хочется сделать проще и красивее, а именно, хочется чтобы была одна форма, а ей через VBA подставлять имя процедры и параметры в зависимости от выбранных выше кнопок и операторов case. Все стало красивее вместо 5 форм стала одна, но по нажатию F9 - обновление опят-таки происходит, но поом сразу выскакивает ошибка "Класс не зарегистрирован!". Нажимаю ОК! и все продолжает работать далее, до следующего F9. (Почему именно F9, да народ привык, раньше у них был A'97 и вот теперь хоть убей, хотят обновления)

Привожу код в котором передаю ХП и параметры, если вопрос ясен и есть совет, буду признателен. Сеня весь день ищу решение в инете, но пока зиро.

Это функция в главном модуле, в неё передаю параметры имя ХП, код для case, цифровой параметр для ХП если она того требует)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Public Function NaProhojdenie(StorProcName As String, StorProcParamType As Byte, StorProcParamValue As Integer)

Dim cmd As New ADODB.Command, rst As New ADODB.Recordset, WhereParam As Parameter

cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdStoredProc
cmd.CommandText = StorProcName

Select Case StorProcParamType
Case  1 
    Set WhereParam = cmd.CreateParameter( "@ВхНомер" , adBigInt, adParamInput, , Forms![АРМ_Контроль]![ВхНомер])
Case  2 
    Set WhereParam = cmd.CreateParameter( "Where" , adSmallInt, adParamInput, , StorProcParamValue)
End Select

cmd.Parameters.Append WhereParam

'----------------------------------------------
'1
Set rst = cmd.Execute


'2
'rst.Open cmd, , adOpenKeyset, adLockOptimistic, adCmdStoredProc
' ----------------------------------------------
 
    DoCmd.OpenForm  "СписокПрохождения" , acFormDS
    Set Forms( "СписокПрохождения" ).Recordset = rst
    
rst.Close
Set WhereParam = Nothing
Set rst = Nothing
Set cmd = Nothing

End Function



Вызов в первой форме происходит так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub Кнопка11_Click() 'КНОПКА Все контракты
On Error GoTo Err_Кнопка11_Click

Call NaProhojdenie( "dbo.ДляПрохождения_аппарат" ,  2 ,  0 )
    
Exit_Кнопка11_Click:
    Exit Sub
Err_Кнопка11_Click:
    MsgBox Err.Description
    Resume Exit_Кнопка11_Click
End Sub


Чет как-то не получилось сокращенно, ну вроде вопрос выдал! ;-)

Спасибо за внимание!!!
...
Рейтинг: 0 / 0
Как побороть ошибку "Класс не зарегестрирован"
    #32086583
Фотография Pavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Set Forms( "СписокПрохождения" ).Recordset = rst
rst.Close


Не стоит так делать.

Ну и попробуй повесить на F9 собственный обработчик. Кроме того, попробуй ради эксперемента открывать rst не используя cmd. Или не прибивай до закрытия формы cmd и WhereParam.
...
Рейтинг: 0 / 0
Как побороть ошибку "Класс не зарегестрирован"
    #32086807
SV2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SV2
Гость
Pavel спасибище за ответ.

Хотя случилось так, что я не смог с утра выйти в инет и походу уже реализовал свой обработчик на нажатие F9 (а вернее Shift+F9, ну прям как в А'97).
И серавно спасибо, во-первых ты подтвердил меня в пральности решения, а во-вторых я ведь мог сам и не доперить.

А ведь до этого так долго ниче не выходило и не придымувалось.

А вот
------
Кроме того, попробуй ради эксперемента открывать rst не используя cmd. Или не прибивай до закрытия формы cmd и WhereParam.
------
скорее ничего не даст, ведь после присваивания rst к рекордсету формы он уже и нафиг не нужен!!! IMHO
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как побороть ошибку "Класс не зарегестрирован"
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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