powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ассинхронные запросы и InfoMessage в ADO
10 сообщений из 10, страница 1 из 1
Ассинхронные запросы и InfoMessage в ADO
    #32201831
Работаю с SQL Server 2000, Access XP и ADO

Необходимо отлавливать сообщения, которые может посылать хранимая процедура (RAISERROR, PRINT).

Знаю, что они должны ловиться в событии InfoMessage объекта Connection, но у меня это событие никогда не срабатывает:-(

Код такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim WithEvents rs As ADODB.Recordset
Dim WithEvents conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim prm As ADODB.Parameter

Private Sub cmdMonth_Click()
Set conn = CurrentProject.Connection
Set rs = New ADODB.Recordset
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandText =  "sp_GosKomStat" 
cmd.CommandType = adCmdStoredProc
cmd.CommandTimeout =  600 
Set prm = New ADODB.Parameter
prm.Type = adInteger
prm.Value =  200301 
cmd.Parameters.Append prm
rs.Open cmd, , adOpenStatic, adLockReadOnly, adAsyncExecute + adAsyncFetch
End Sub

Private Sub conn_InfoMessage(ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pConnection As ADODB.Connection)
MsgBox pError.Description
End Sub


Кто-нибудь такое делал, расскажите как? Пробовал как на VB6, так и на Access. Все последние сервис-паки установлены! Поиском обпользовался, форумов обчитался:-(
...
Рейтинг: 0 / 0
Ассинхронные запросы и InfoMessage в ADO
    #32202096
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Гетц во 2 томе сказано что print поймать нельзя.
здесь пытались отловить для индикации выполнения ХП но по-моему без результатно.
...
Рейтинг: 0 / 0
Ассинхронные запросы и InfoMessage в ADO
    #32202252
Хорошо, фиг с ним с print'ом, а RAISERROR можно? Как?
...
Рейтинг: 0 / 0
Ассинхронные запросы и InfoMessage в ADO
    #32202319
VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот Пример из нелпа-поиграйся
Код: 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.
37.
38.
39.
40.
41.
Public Sub DescriptionX()

   Dim cnn1 As ADODB.Connection
   Dim errLoop As ADODB.Error
   Dim strError As String

   On Error GoTo ErrorHandler
   
   ' Intentionally trigger an error.
   Set cnn1 = New ADODB.Connection
   cnn1.Open "nothing"
   
   Exit Sub

ErrorHandler:

   ' Enumerate Errors collection and display 
   ' properties of each Error object.
   For Each errLoop In cnn1.Errors
      strError =  "Error #"  & errLoop.Number & vbCr & _
          "   "  & errLoop.Description & vbCr & _
          "   (Source: "  & errLoop.Source &  ")"  & vbCr & _
          "   (SQL State: "  & errLoop.SQLState &  ")"  & vbCr & _
          "   (NativeError: "  & errLoop.NativeError &  ")"  & vbCr
      If errLoop.HelpFile =  "" Then
         strError = strError & _
            "    No Help file available " & _
            vbCr & vbCr
      Else
         strError = strError & _
            "    (HelpFile:  " & errLoop.HelpFile & " ) " & vbCr & _
            "    (HelpContext:  " & errLoop.HelpContext & " )" & _
            vbCr & vbCr
      End If
         

   Debug.Print strError
   Next

   Resume Next

End Sub
...
Рейтинг: 0 / 0
Ассинхронные запросы и InfoMessage в ADO
    #32202368
К сожалению, в коллекции ADODB.Errors ничего нет, было бы вынул. Асинхронные запросы вообще на VB ничего туда не пишут - коллекция всегда пуста при любых ошибках. Единственный вариант отлавливать их в событиях объекта Connection.
ExecuteComplete отлавливает ошибки или RAISERROR > 10, но мне хочется генерить ошибки, чтобы иметь представлении о ходе выполнения процедуры.
...
Рейтинг: 0 / 0
Ассинхронные запросы и InfoMessage в ADO
    #32202468
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обсуждалось здесь
...
Рейтинг: 0 / 0
Ассинхронные запросы и InfoMessage в ADO
    #32202494
Читал я это!
Но проблемму там не решили, сколько ни спрашивал автор темы:-(
...
Рейтинг: 0 / 0
Ассинхронные запросы и InfoMessage в ADO
    #32202500
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит нужно идти в обход.
...
Рейтинг: 0 / 0
Ассинхронные запросы и InfoMessage в ADO
    #32202524
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Значит нужно идти в обход.

Второй набор (рекодсет)?
OutPut-параметры?
...
Рейтинг: 0 / 0
Ассинхронные запросы и InfoMessage в ADO
    #32202777
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Senin Viktor
В обход - значит устранить причины проблемы, а не бороться с последствиями.

Проблема: процедура выполняется слишком медленно, необходимо показывать пользователю процесс ее выполнения, чтобы он не подумал, что компьютер завис.
Варианты решений (предлагались в указанной выше ссылке):
- оптимизировать код процедуры
- вынести выполнение процедуры в задания на сервере
- показывать юзеру мультики
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ассинхронные запросы и InfoMessage в ADO
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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