Vb et connexion access2003
ahmed
-
Polux31 Messages postés 7219 Statut Membre -
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)
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
-
Bonjour
essaiesDim 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 -
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. -
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 -
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+