powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
10 сообщений из 10, страница 1 из 1
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
    #36838819
AlterK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот код:
Код: 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.
Option Explicit
Dim WithEvents cn As ADODB.Connection

Private Sub Command1_Click()
    Dim sCommandText
    Dim Cmd As New ADODB.Command
    Dim ConStr As String
        
    Set cn = New ADODB.Connection
    ConStr = "Provider=SQLOLEDB.1;Data Source=<YourServerName>;user id=<YourUserID>;Password=<YourPassword>;Initial Catalog=Pubs;"
    cn.Open ConStr
    
    With Cmd
        Set .ActiveConnection = cn
        .CommandType = adCmdText
        .CommandText = sCommandText
        .Execute , , adAsyncExecute
    End With
    
End Sub

Private Sub cn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
    
    'check for errors during the asynchronous operation
    If (adStatus = adStatusErrorsOccurred) Then
        MsgBox "Error # " & pError.Number & vbCrLf & pError.Description
    End If
    
End Sub

Проблема в том, что если sCommandText = "Select 1/0", то сообщение об ошибке деления на ноль выводится, если sCommandText = "Select 1 Select 1/0" - нет. А я бы хотел получить сообщение об ошибке, даже если она возникнет после нескольких селектов, апдейтов, удалений (в реальной программе вызывается хранимая процедура, и нужно, чтобы было сообщение об ошибке, если вдруг что-то пойдет не так). Есть идеи, как этого добиться?
...
Рейтинг: 0 / 0
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
    #36838839
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlterK,

Спасибо, соскучились тут по вменяемо сформулированным вопросам...

Смотрите сюда:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub cn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
    
    'check for errors during the asynchronous operation
    If (adStatus = adStatusErrorsOccurred) Then
        MsgBox "Error # " & pError.Number & vbCrLf & pError.Description
        
    Else
      Set pRecordset = pRecordset.NextRecordset 'и вот тут возникает рантайм еррор для второго рекордсета
      
    End If
    
End Sub
...
Рейтинг: 0 / 0
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
    #36839052
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlterKпосле нескольких .... апдейтов, удалений
а вы, кстати, в курсе, что "set nocount on" в начале процедуры позволяет избавиться от множественных рекордсетов, формируемых апдейтами и удалениями, и если в процедуре будет единственный селект - он первым и вернется.
...
Рейтинг: 0 / 0
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
    #36839397
AlterK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, большущее спасибо, ваш ответ решил проблему! Буду ходить по NextRecordset-ам, пока они не закончатся :)
Set nocount on и set nocount off использую, но в данном случае они почему-то не помогли.
...
Рейтинг: 0 / 0
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
    #36841034
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с чего это вдруг nocount должен был помогать?
Эта опция (которую вообще-то трогать не нужно) всего-лишь влияет на системные сообщения. На явно запрошеные резалтсеты она ни как не влияет.
...
Рейтинг: 0 / 0
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
    #36841096
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА с чего это вдруг nocount должен был помогать?
Эта опция (которую вообще-то трогать не нужно) всего-лишь влияет на системные сообщения. На явно запрошеные резалтсеты она ни как не влияет.

Есил set nocount on не стоит в процедуре и перед результирущим селестом есть update или delete или еще некоторые функции, то результат селекта в ADO-шном возврате будет не первым рекордсетом и придется прокручивать с помощью NextRecordset на клиенте, а зачем?
...
Рейтинг: 0 / 0
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
    #36841137
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProWhite OwlА с чего это вдруг nocount должен был помогать?
Эта опция (которую вообще-то трогать не нужно) всего-лишь влияет на системные сообщения. На явно запрошеные резалтсеты она ни как не влияет.

Есил set nocount on не стоит в процедуре и перед результирущим селестом есть update или delete или еще некоторые функции, то результат селекта в ADO-шном возврате будет не первым рекордсетом и придется прокручивать с помощью NextRecordset на клиенте, а зачем?А затем что он может быть полезен. Хотя бы для контроля за этой самой процедурой сколько она там записей обновила перед выдачей результата.
Cделать в клиенте прокрутку резалтсетов до появления рекордсета совсем не сложно. Намного проще чем убедить DB-ориентированных людей "исправить" хранимую процедуру.
...
Рейтинг: 0 / 0
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
    #36841146
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА затем что он может быть полезен.
МОЖЕТ БЫТЬ
но это не значит, что БУДЕТ
нагляднее собрать эти данные в самой процедуре и унифицированно вернуть, если это так уж нужно.
...
Рейтинг: 0 / 0
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
    #36841154
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProWhite OwlА затем что он может быть полезен.
МОЖЕТ БЫТЬ
но это не значит, что БУДЕТ
нагляднее собрать эти данные в самой процедуре и унифицированно вернуть, если это так уж нужно.Хочешь надеятся - надейся. Я предпочитаю надежность и никогда не меняю опции коннекта внутри процедуры.
...
Рейтинг: 0 / 0
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
    #36843160
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: White Owl
> Хочешь надеятся - надейся. Я предпочитаю надежность и никогда не меняю опции коннекта внутри процедуры.

+100000
Я, у себя, походу работ переделываю все процедуры, работающие с БД(не ХР, а именно процедуры среднего слоя трёх-звенки)
на возврат клиенту максимальной информации о произошедшей ошибке.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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