Vb et connexion access2003

ahmed -  
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je développe une application VB6 sur la plate forme d'un Windows XP SP3 et je n'arrive pas à me connecter à la base que j'ai créée dans Access 2003. Il me dit qu'il ne reconnaît pas le format de la base. J'ai essayé avec d'autres codes mais rien à faire. Pouvez-vous m'aider ?
Je vous envoie les codes que j'ai utilisés :

Code 1:
Private Sub Form_Load()
Dim dbs As Database
Set dbs = OpenDatabase("C:\;yDB.mdb")
If dbs.Connect <> 0 Then
MsgBox "parfait"
Else
MsgBox "error"
End If
End Sub
Affiche l'erreur suivante:
Erreur d'exécution '3343':
Format de base de données ('C:\myDB.mdb') non reconnu.

Code 2:
Private Sub Form_Load()
Dim dbs As ADODB.Connection
Set dbs= New ADODB.Connection
cnx.Provider = "Microsoft.Jet.Oledb.4.0"
cnx.ConnectionString = "C:\myDB.mdb"
dbs.Open
End Sub

Affiche l'erreur suivante:
Erreur de compilation
Type défini par l'utilisateur non défini (ADODB.Connection)



A voir également:

4 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

essaies
Dim dbs As Object 
Set dbs = CreateObject("ADODB.Connection") 
fichier = "C:\myDB.mdb" 
dbs.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & _ 
                "data source=" & fichier & ";"


basé sur du VBA, donc... en VBA si tu utilises ta syntaxe "new ado...", il faut cocher la bibiothèque "Microsoft ActiveX Data Object ...." dans outils- références, je ne sais pas si équivalent en Vb
Michel
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Bonjour,

Oui Michel, il faut référencé Microsoft ActiveX Data Library x.xx même en VB6.

Voilà un exemple de module qui permet de se connecter à une base Access, de passer une requête à la base et de parcourir un recordset.

Option Explicit

Private AdoCnx As ADODB.Connection
Private rs As Recordset
Private CmdSql As ADODB.Command

'Chemin de la base de donnée à mettre ci dessous
Private Const BDD = "C:\bd\maBase.mdb"

Public Function ConnectBdd()
Dim CnxString As String

On Error Resume Next

Set AdoCnx = New ADODB.Connection

If AdoCnx.State = adStateOpen Then
    MsgBox "La connection est déjà ouverte"
    Exit Function
End If

        '======== Ouverture Access ============'
        
CnxString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=" & BDD & ";" & _
                   "Persist Security Info=False"

AdoCnx.Open CnxString
AdoCnx.CursorLocation = adUseClient

    'Gestion de l'exception
    If Err <> 0 Or AdoCnx.State = adStateClosed Then
        MsgBox "Connection impossible avec la base"
        Exit Function
    End If

End Function

'Passage d'une requete par un recordset. Le recordset est passé en référence dans les paramètres de la fonction
Public Function OuvrirRecordset(ByVal Requete As String, ByRef rs As ADODB.Recordset) As Boolean
    
On Error Resume Next

  
    On Error Resume Next
    rs.Open Requete, ModBdd.AdoCnx, , , adCmdText
    
    If Err > 0 Then
        OuvrirRecordset = False
        Exit Function
    End If
    
    rs.MoveFirst
    OuvrirRecordset = True
    
End Function


'Fonctions permettant de parcourir un recordset passé en paramètre.
Public Function RSLireSuivant(ByRef rs As ADODB.Recordset) As Boolean

    On Error Resume Next
    rs.MoveNext
    If rs.EOF Then
        RSLireSuivant = False
        Exit Function
    End If
    
    If Err <> 0 Then
        RSLireSuivant = False
        Exit Function
    End If
    
    RSLireSuivant = True
    
End Function

Public Function RSLirePrecedent(ByRef rs As ADODB.Recordset) As Boolean

    On Error Resume Next
    rs.MovePrevious
    If rs.BOF Then
        RSLirePrecedent = False
        Exit Function
    End If
    
    If Err <> 0 Then
        RSLirePrecedent = False
        Exit Function
    End If
    
    RSLirePrecedent = True
    
End Function

Public Function RSLirePremier(ByRef rs As ADODB.Recordset) As Boolean

    On Error Resume Next
    rs.MoveFirst
    If Err <> 0 Then
        RSLirePremier = False
        Exit Function
    End If
    
    RSLirePremier = True
    
End Function

Public Function RSLireDernier(ByRef rs As ADODB.Recordset) As Boolean

    On Error Resume Next
    rs.MoveLast
    If Err <> 0 Then
        RSLireDernier = False
        Exit Function
    End If
    
    RSLireDernier = True
    
End Function


Bonne continuation.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Merci, Polux

Pour ma part j'utilise au maxi les createobject car, à mon sens, l'appli est beaucoup plus portable (changement d'ordi)

1 de des 4, je vais réinstaller Vb6... :o)
Bonne fin de WE ensoleillée
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Tiens à propos comme tu instancies par
new.
.. , ne faudrait il pas terminer la procédure par
maconnection=nothing ?
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
C'est une question d'habitude et pour ma part je n'aime pas mélanger le code.

Je ne code jamais derrière un UF. Je préfère faire un module à part pour gérer l'UF aussi bien dans l'affichage que dans les évènements. Tout comme je vais faire un module pour chaque fonctionnalité demandée.

Si je dois me connecter à une base, je vais faire un module pour gérer les accès à la base.

Si on doit modifier ou refaire l'IHM, je n'ai pas à tout reprendre et j'ai très peu de modification à opérer.

Je pratique cette méthode avec tous les langages que je suis amené à utiliser.

Je te souhaite également une bonne fin de WE qui n'est pas aussi ensoleillé que ça pour moi.

A+
0