Vb et connexion access2003

ahmed -  
Polux31 Messages postés 7219 Statut Membre -
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)

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. Polux31 Messages postés 7219 Statut Membre 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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Tiens à propos comme tu instancies par
      new.
      .. , ne faudrait il pas terminer la procédure par
      maconnection=nothing ?
      0
  4. Polux31 Messages postés 7219 Statut Membre 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