2015-01-06 5 views
1

У меня есть 32-разрядный разъем ODBC под названием IPEOPLE Я пытаюсь подключиться с помощью VB. Если я открываю Access и использую диск ODBC IPEOPLE, он работает нормально, и я могу видеть данные под одним и тем же пользователем.Подключение ODBC: «Соединение отключено»

В VB, я получаю такую ​​ошибку:

A first chance exception of type 'System.InvalidOperationException' occurred in System.Data.dll System.Transactions Critical: 0 : http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled Unhandled exceptionNMIALERTS.vshost.exeSystem.InvalidOperationException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089The connection has been disabled. at System.Data.Odbc.OdbcConnection.ConnectionIsAlive(Exception innerException) at System.Data.Odbc.OdbcConnection.HandleErrorNoThrow(OdbcHandle hrHandle, RetCode retcode)

Ниже этой ошибки:

ERROR [42000] [IPeople][Meditech ODBC Driver (5.0.0.36)][IPD 3.41] No fields in select --- End of inner exception stack trace ---

При запуске SQL в Access, она работает просто отлично. Запрос в порядке. Очень четко выбирается поле (LIVE.NMISAA.QueueMessages.MessageID).

И я не совсем уверен, почему. Это не отключено. Его можно использовать просто через Access. В Windows ODBC Data Source Administrator отсутствует индикатор «disabled». «NMIALERTS2» - это Пользовательский DSN на моей машине.

Код:

Dim myConnection As OdbcConnection = New OdbcConnection() 
    myConnection.ConnectionString = "DSN=NMIALERTS2" 

    Dim strQueryErxE1 As String = "SELECT LIVE.NMISAA.QueueMessages.MessageID FROM LIVE.NMISAA.QueueMessages " & _ 
     "WHERE LIVE.NMISAA.QueueMessages.QueueConnection = 'ERX_E_XO' and LIVE.NMISAA.QueueMessages.MessageID > '" & strPrevMsgID_ERX_E_XO & "'" 

     Dim command1 As OdbcCommand 
     Dim command2 As OdbcCommand 

     If Active_ERX_E_XO = True Then 
      command1 = New OdbcCommand(strQueryErxE1, connection) 'errors here 
      command2 = New OdbcCommand(strQueryErxE2, connection) 
     End If 

Любые мысли?

EDIT: Я перестроил код с нуля от 4000 строк до минимальных 30 строк, чтобы проверить только ODBC, и возникает одна и та же проблема. Вот весь мой код:

Public Class Form1 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

     Dim myConnection As System.Data.Odbc.OdbcConnection = New System.Data.Odbc.OdbcConnection() 
     myConnection.ConnectionString = "DSN=NMIALERTS2" 

     Dim strQueryErxE1 As String = "SELECT LIVE.NMISAA.QueueMessages.MessageID FROM LIVE.NMISAA.QueueMessages " & _ 
    "WHERE LIVE.NMISAA.QueueMessages.QueueConnection = 'ERX_E_XO' and LIVE.NMISAA.QueueMessages.MessageID > '3000'" 

     Dim command1 As System.Data.Odbc.OdbcCommand 
     Dim strIIRADT1 As String = "" 

     Using connection As New System.Data.Odbc.OdbcConnection(myConnection.ConnectionString) 

      command1 = New System.Data.Odbc.OdbcCommand(strQueryErxE1, connection) 'error here 

      connection.Open() 

      Dim reader1 As System.Data.Odbc.OdbcDataReader 

      reader1 = command1.ExecuteReader() 

      If reader1.HasRows Then 
       While reader1.Read 
        strIIRADT1 = reader1(0).ToString 
       End While 
      End If 

     End Using 

    End Sub 
End Class 
+0

Вы должны задокументировать внутреннее исключение. Уведомление об исключении из первого шанса не обязательно указывает на проблему. –

+0

@HansPassant Я добавил его к моему вопросу. Это меня смущает, но запрос просто прекрасен (работает в Access) – JBurace

+0

@LarsTech Nope. Буквально все элементы данных в IPEOPLE являются Text. Я не спрашиваю, почему ... – JBurace

ответ

0

После рыть обратно в ошибку 136 линии, я нашел это погребена

Database 'xyz' was not found in catalog 'LIVE' or your user does not have rights to the database or the database was not included in the DSN

Поэтому в основном я настроен ODBC неправильно. VB был в порядке. Это решило проблему после изменения типа ODBC в этом настраиваемом драйвере.

+0

Как вы «изменили тип odbc на пользовательский драйвер»? –

Смежные вопросы