Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса / 10 сообщений из 10, страница 1 из 1
09.09.2010, 19:37
    #36838819
AlterK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
Вот код:
Код: 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
09.09.2010, 19:52
    #36838839
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
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
09.09.2010, 23:29
    #36839052
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
AlterKпосле нескольких .... апдейтов, удалений
а вы, кстати, в курсе, что "set nocount on" в начале процедуры позволяет избавиться от множественных рекордсетов, формируемых апдейтами и удалениями, и если в процедуре будет единственный селект - он первым и вернется.
...
Рейтинг: 0 / 0
10.09.2010, 09:13
    #36839397
AlterK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
Shocker.Pro, большущее спасибо, ваш ответ решил проблему! Буду ходить по NextRecordset-ам, пока они не закончатся :)
Set nocount on и set nocount off использую, но в данном случае они почему-то не помогли.
...
Рейтинг: 0 / 0
10.09.2010, 18:06
    #36841034
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
А с чего это вдруг nocount должен был помогать?
Эта опция (которую вообще-то трогать не нужно) всего-лишь влияет на системные сообщения. На явно запрошеные резалтсеты она ни как не влияет.
...
Рейтинг: 0 / 0
10.09.2010, 18:45
    #36841096
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не выводится сообщение об ошибке при асинхронном выполнении sql-запроса
White OwlА с чего это вдруг nocount должен был помогать?
Эта опция (которую вообще-то трогать не нужно) всего-лишь влияет на системные сообщения. На явно запрошеные резалтсеты она ни как не влияет.

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

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

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

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


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