2011-03-16 1 views
0

Je crée un fichier .MDB qui inclut une base de données d'accès ms et un formulaire créé avec vb 6. J'utilise ms access 2000, et j'ai besoin de me connecter à ma base de données locale dans la MDB et une base de données MS SQL 2005 distante.Problème de connexion et d'interrogation dans ADO

Dans le code ci-dessous, je peux utiliser un msgbox pour afficher la valeur de retour du jeu de résultats, mais quand essayer de le sortir dans un textBox, par exemple: txtStatus.Value = txtStatus.Value & rstRecordSet.Fields(1) & vbCrLf, il se bloque simplement. Et la méthode show dans l'exemple original du tutoriel a obtenu une méthode de Debug.Print quelque chose, mais il s'avère que je n'ai rien fait que je puisse voir. Je veux dire, VB n'a pas de panneau de console, où ira la déclaration d'impression?

Le code avec erreur obtenu:

Function Testing() 
On Error GoTo Error_Handling 
    Dim conConnection As New ADODB.Connection 
    Dim cmdCommand As New ADODB.Command 
    Dim rstRecordSet As New ADODB.Recordset 

    conConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ 
    App.Path & "\" & CurrentDb.Name & ";" 
    conConnection.CursorLocation = adUseClient 

    With cmdCommand 
    .ActiveConnection = conConnection 
    .CommandText = "SELECT * FROM Opt_In_Customer_Record;" 
    .CommandType = adCmdText 
    End With 

    With rstRecordSet 
    .CursorType = adOpenStatic 
    .CursorLocation = adUseClient 
    .LockType = adLockOptimistic 
    .Open cmdCommand 
    End With 

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

    conConnection.Close 
    Set conConnection = Nothing 
    Set cmdCommand = Nothing 
    Set rstRecordSet = Nothing 

    Exit Function 

Error_Handling: 
MsgBox "Error during function Testing!" 
Exit Function 

End Function 
+1

Pouvez-vous énumérer l'erreur et quelle ligne il produit? – JeffO

Répondre

1

Je pensais que c'était une blague au début ;-) Quoi qu'il en soit, je suppose que vous parlez ADO, comme dans votre titre.

Hereyoucan trouver des choses. Ce site vous aidera avec les chaînes de connexion pour différentes bases de données.
La différence entre l'accès et le serveur SQL utilisant ADO est exactement la chaîne de connexion. Je vous suggère d'éviter les contrôles de données à distance qui vous simplifient la vie au début, mais vous devez ensuite vous battre avec eux parce qu'ils ne fonctionnent pas correctement.

Ceci est un exemple de connexion quérir des données:

Dim cnn As New ADODB.Connection 
Dim cmd As New ADODB.Command 
Dim strSql As String 

cnn.ConnectionString = _ 
    "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
    "Data Source=m:\testdbSource\testSource.mdb;" & _ 
    "User Id=admin;Password=;" 
cnn.Open 

cmd.ActiveConnection = cnn 
cmd.CommandType = adCmdText 
cmd.CommandText = "select * from tblSource" 
cmd.Execute 

Set cmd = Nothing 
cnn.Close 
Set cnn = Nothing 

Cet exemple fonctionne pour moi:

Function Testing() 

    On Error GoTo Error_Handling 

    Dim MyDb As String 
    Dim conConnection As New ADODB.Connection 
    Dim cmdCommand As New ADODB.Command 
    Dim rstRecordSet As New ADODB.Recordset 

    MyDb = "db1.mdb" 

    With conConnection 
     .Provider = "Microsoft.Jet.OLEDB.4.0" 
     .ConnectionString = App.Path & "\" & MyDb 
     .Open 
    End With 


    With cmdCommand 
     .ActiveConnection = conConnection 
     .CommandText = "SELECT * FROM Opt_In_Customer_Record;" 
     .CommandType = adCmdText 
    End With 

    With rstRecordSet 
    .CursorType = adOpenStatic 
    .CursorLocation = adUseClient 
    .LockType = adLockOptimistic 
    .Open cmdCommand 
    End With 

    Do While Not rstRecordSet.EOF 
     MsgBox "Record " & rstRecordSet.AbsolutePosition & " " & _ 
      rstRecordSet.Fields(0).Name & "=" & rstRecordSet.Fields(0) & " " & _ 
      rstRecordSet.Fields(1).Name & "=" & rstRecordSet.Fields(1) 
      rstRecordSet.MoveNext 
    Loop 

    conConnection.Close 
    Set conConnection = Nothing 
    Set cmdCommand = Nothing 
    Set rstRecordSet = Nothing 

    Exit Function 

Error_Handling: 
    MsgBox "Error during function Testing!" 
    MsgBox Err.Description 

End Function 
+0

Comment rechercher une erreur? Je sais qu'il y a une erreur car elle saute à ma partie de gestion des erreurs et dit erreur, mais je ne sais pas ce que c'est. – lamwaiman1988

+0

J'ai posté mon code dans ma question. J'ai essayé de me connecter à ma base de données dans mon fichier MDB, et faire une requête, mais d'une manière ou d'une autre elle a échoué. S'il vous plaît aider. – lamwaiman1988

+0

Avez-vous référé "Objets de données Activex 2.x" ?? – LeftyX