Base access gérée très simplement

Description

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

Codes Sources

A voir également

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.