vb6 вызов процедуры ADODB TSQL завершился после переноса базы данных - PullRequest
0 голосов
/ 04 июня 2010

Этот код когда-то работал на SQL Server 2005. Теперь он изолирован в подпрограмме Visual Basic 6, используя ADODB для подключения к базе данных SQL Server 2008, и выдает ошибку:

"Ошибка входа пользователя 'admin'"

С тех пор я проверил, что строка подключения работает, если я заменяю тело этого подпрограммы альтернативным кодом под этим подпрограммой. Когда я запускаю небольшую программу с кнопкой, она останавливается там, где она отмечена под линией звездочки. Есть идеи? заранее спасибо.

Private Sub Command1_Click()

Dim cSQLConn As New ADODB.Connection
Dim cmdGetInvoices As New ADODB.Command
Dim myRs As New ADODB.Recordset
Dim dStartDateIn As Date
dStartDateIn = "2010/05/01"


cSQLConn.ConnectionString = "Provider=sqloledb;" _
         & "SERVER=NET-BRAIN;" _
         & "Database=DB_app;" _
         & "User Id=admin;" _
         & "Password=mudslinger;"

cSQLConn.Open

 cmdGetInvoices.CommandTimeout = 0


    sProc = "GetUnconvertedInvoices"
    'On Error GoTo GetUnconvertedInvoices_Err

    With cmdGetInvoices
        .CommandType = adCmdStoredProc
        .CommandText = "_sp_cwm5_GetUnCvtdInv"
        .Name = "_sp_cwm5_GetUnCvtdInv"
        Set oParm1 = .CreateParameter("@StartDate", adDate, adParamInput)
        .Parameters.Append oParm1
        oParm1.Value = dStartDateIn
        .ActiveConnection = cSQLConn

    End With

    With myRs
        .CursorLocation = adUseClient
        .LockType = adLockBatchOptimistic
        .CursorType = adOpenKeyset
        '.CursorType = adOpenStatic
        .CacheSize = 5000
        '***************************Debug stops here
        .Open cmdGetInvoices

    End With


    If myRs.State = adStateOpen Then
            Set GetUnconvertedInvoices = myRs
    Else
            Set GetUnconvertedInvoices = Nothing
    End If

End Sub

Вот код, который проверяет, работает ли строка подключения.

Dim cSQLConn As New ADODB.Connection
Dim cmdGetInvoices As New ADODB.Command
Dim myRs As New ADODB.Recordset

    cSQLConn.ConnectionString = "Provider=sqloledb;" _
             & "SERVER=NET-BRAIN;" _
             & "Database=DB_app;" _
             & "User Id=admin;" _
             & "Password=mudslinger;"
cSQLConn.Open

 cmdGetInvoices.CommandTimeout = 0


    sProc = "GetUnconvertedInvoices"


    With cmdGetInvoices
    .ActiveConnection = cSQLConn
    .CommandText = "SELECT top 5 * FROM tarInvoice;"
    .CommandType = adCmdText
    End With

    With myRs
        .CursorLocation = adUseClient
        .LockType = adLockBatchOptimistic
        '.CursorType = adOpenKeyset
        .CursorType = adOpenStatic
        '.CacheSize = 5000
        .Open cmdGetInvoices
    End With

    If myRs.EOF = False Then
        myRs.MoveFirst
        Do
            MsgBox "Record " & myRs.AbsolutePosition & " " & _
          myRs.Fields(0).Name & "=" & myRs.Fields(0) & " " & _
          myRs.Fields(1).Name & "=" & myRs.Fields(1)
          myRs.MoveNext
        Loop Until myRs.EOF = True
    End If

Ответы [ 2 ]

0 голосов
/ 08 июня 2010

Оказывается, это была ошибка разрешений связанной базы данных в SQL Server 2008. Мне пришлось удалить ссылку и воссоздать ее с логином / паролем.

0 голосов
/ 04 июня 2010

Это, вероятно, не должно вызывать ошибку, которую вы видите, но согласно http://msdn.microsoft.com/en-us/library/ms677593(VS.85).aspx:

"Поддерживается только настройка adOpenStatic, если для свойства CursorLocation установлено значение adUseClient. Если задано неподдерживаемое значение, ошибки не будет; вместо этого будет использоваться ближайший поддерживаемый CursorType."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...