powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / получение сообщений MS SQL в коде VBA
8 сообщений из 8, страница 1 из 1
получение сообщений MS SQL в коде VBA
    #39158537
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получение серверных сообщений в коде VBA
Пытаюсь воспроизвести элементарную обработку сообщений сервера по мотивам
http://stackoverflow.com/questions/3013447/how-to-retrieve-all-errors-and-messages-from-a-query-using-ado

Код: vbnet
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.
Sub Test2()
  Dim conn As ADODB.Connection
 
  Set conn = New ADODB.Connection
  conn.Provider = CurrentProject.Connection.Provider
  conn.ConnectionString = CurrentProject.Connection.ConnectionString
  conn.Open

  Dim rs As ADODB.Recordset
  Set rs = conn.Execute("print 'Foo'" & vbCrLf & "print 'Bar'" & vbCrLf & "raiserror ('xyz', 10, 127)")

  Dim error As ADODB.error

  For Each error In conn.Errors
       MsgBox error.Description
   Next

  While Not (rs Is Nothing)
    For Each error In conn.Errors
        MsgBox error.Description
    Next
    Set rs = rs.NextRecordset
  Wend
  
End Sub



НО! Я ничего не получаю. Хотя, вроде, по утверждениям MS сообщения и ошибки все должны быть в Errors.

Выполнение запроса
print 'Foo'
print 'Bar'
raiserror ('xyz', 10, 127)
в MSSMS возвращает
Foo
Bar
xyz

Если
raiserror ('xyz', 10, 127) поменять на raiserror ('xyz', 16, 127) - ошибка в колекции появляется.
...
Рейтинг: 0 / 0
получение сообщений MS SQL в коде VBA
    #39158754
Eugene_p1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks2,

У меня работает такой код:

Код: vbnet
1.
2.
3.
4.
Dim i As Integer
    For i = 0 To objConn.Errors.Count - 1
        tbLog.Value = tbLog.Value & vbCrLf & objConn.Errors(i).Description
    Next



Если что,
Код: vbnet
1.
Dim objConn As New ADODB.Connection




Попробуйте такую итерацию!
...
Рейтинг: 0 / 0
получение сообщений MS SQL в коде VBA
    #39158757
Eugene_p1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, я, кажется, знаю в чем у вас беда.

aleks2
Код: vbnet
1.
  Dim error As ADODB.error



Вот в этом.
Напишите так:
Код: vbnet
1.
  Dim err As ADODB.error
...
Рейтинг: 0 / 0
получение сообщений MS SQL в коде VBA
    #39158772
2732
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks2,

adp шоле ?
Акс использует сервисный провайдер, вот он, видимо, и "глушит".
та сделай
Код: vbnet
1.
conn.ConnectionString = "Provider=SQLOLEDB;Server=...
...
Рейтинг: 0 / 0
получение сообщений MS SQL в коде VBA
    #39159099
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene_p1Напишите так:
Код: vbnet
1.
  Dim err As ADODB.error



Err - тоже имя системного объекта, такие имена лучше не давать
...
Рейтинг: 0 / 0
получение сообщений MS SQL в коде VBA
    #39159107
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2732aleks2,

adp шоле ?
Акс использует сервисный провайдер, вот он, видимо, и "глушит".
та сделай
Код: vbnet
1.
conn.ConnectionString = "Provider=SQLOLEDB;Server=...



Итак, БИНГО!

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub Test2()
  Dim conn As ADODB.Connection
 
  Set conn = New ADODB.Connection
  conn.ConnectionString = CurrentProject.BaseConnectionString
  conn.Open

  Dim rs As ADODB.Recordset
  Set rs = conn.Execute("print 'Foo'" & vbCrLf & "print 'Bar'" & vbCrLf & "raiserror ('xyz', 10, 127)")

  Dim error As ADODB.error

  While Not (rs Is Nothing)
    For Each error In conn.Errors
        MsgBox error.Description
    Next
    Set rs = rs.NextRecordset
  Wend
  
End Sub
...
Рейтинг: 0 / 0
получение сообщений MS SQL в коде VBA
    #39159137
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако счастие не полно.
Работать на отдельном соединении внутри ADP можно, но геморройно.

Может кто знает как и где можно получить сообщения сервера на основном соединении .ADP?
...
Рейтинг: 0 / 0
получение сообщений MS SQL в коде VBA
    #39160483
Eugene_p1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShinEugene_p1Напишите так:
Код: vbnet
1.
  Dim err As ADODB.error



Err - тоже имя системного объекта, такие имена лучше не давать
Чорт! :)
Спасибо! Я в общем-то про это и хотел сказать.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / получение сообщений MS SQL в коде VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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