Ce petit bout de code est juste quelques explications pour de se connecter et exécuter des requetes SQL sur une base Access vraiment simplement en utilisant DAO.
Ce n'est pas le premier du genre, mais je l'ai adapté pour qu'il soit vraiment le plus simple possible.
En fait, je cherchais à utiliser ma base Access un peu comme si j'étais en PHP avec une base MySQL, ce que je trouve beaucoup plus compréhensible... (personne n'est parfait :D)
Il faut ajouter la référence "Microsoft DAO 3.6 Object Librairy" ou "Microsoft DAO 3.51 Object Librairy".
Source / Exemple :
'A stocker dans un module :
' Contient le chemin et le nom de la base
Public nomBase As String
'Dans les forms :
' Contient la base
Dim db As Database
' Contient le jeu d'enregistrement
Dim Rs As Recordset
' Contient la requete
Dim sql As String
' Variable de cumul pour obtenir le nombre d'enregistrements
Dim nbrClients as Integer
' Lancement du programme
Private Sub Form_Load()
' On renseigne la variable nomBase
nomBase = App.Path + "\Base.mdb"
End Sub
'Pour un SELECT (dans le cas où la requete renvoie plusieurs lignes) :
' Connection à la base
Set db = DBEngine.Workspaces(0).OpenDatabase(nomBase)
' Assignation de la requète
sql = "SELECT NomClient FROM Client"
' Exécution de la requète et récupération du jeu d'enregistrement
Set Rs = db.OpenRecordset(sql)
' Initialisation du cumul
nbrClients = 0
' Si il n'y a pas d'enregistrements, on saute le traitement
If Rs.EOF Then
GoTo suite
End If
' On se place au premier enregistrement concerné
Rs.MoveFirst
' Affichage dans un listbox
' Tant qu'on a pas atteint le dernier enregistrement :
Do While Rs.EOF = False
' Ajout de l'enregistrement dans le listbox
lstClients.AddItem Rs!NomClient
' Incrémentation du cumul
nbrClients = nbrClients + 1
' On se place a l'enregistrement suivant
Rs.MoveNext
Loop
suite:
' Fermeture du jeu d'enregistrement
Rs.Close
' Fermeture de la base
db.Close
'Pour un SELECT (dans le cas où la requete renvoie une seule ligne) :
' Connection à la base
Set db = DBEngine.Workspaces(0).OpenDatabase(nomBase)
' Assignation de la requète
sql = "SELECT NomClient FROM Client WHERE NumClient=1"
' Exécution de la requète et récupération du jeu d'enregistrement
Set Rs = db.OpenRecordset(sql)
' Si il n'y a pas d'enregistrements, on saute le traitement
If Rs.EOF Then
GoTo suite
End If
' On se place au premier enregistrement concerné
Rs.MoveFirst
' Affichage dans un textbox
txtClient.Text = Rs!NomClient
suite:
' Fermeture du jeu d'enregistrement
Rs.Close
' Fermeture de la base
db.Close
'Pour un INSERT :
' Connection à la base
Set db = DBEngine.Workspaces(0).OpenDatabase(nomBase)
' Assignation de la requète
sql = "INSERT INTO Client VALUES (2,'Client2')"
' Exécution de la requète
db.Execute sql
' Fermeture de la base
db.Close
'Pour un DELETE :
' Connection à la base
Set db = DBEngine.Workspaces(0).OpenDatabase(nomBase)
' Assignation de la requète
sql = "DELETE FROM Client WHERE NumClient=2"
' Exécution de la requète
db.Execute sql
' Fermeture de la base
db.Close
'Pour un UPDATE :
' Connection à la base
Set db = DBEngine.Workspaces(0).OpenDatabase(nomBase)
' Assignation de la requète
sql = "UPDATE Client SET NumClient=2,NomClient='Client2'"
' Exécution de la requète
db.Execute sql
' Fermeture de la base
db.Close
Conclusion :
Le Zip contient un programme qui reprend les exemples.
Laissez vos commentaires :)
GiZ
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.