Base access gérée très simplement

Soyez le premier à donner votre avis sur cette source.

Vue 18 777 fois - Téléchargée 3 550 fois

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

Ajouter un commentaire Commentaires
moutonjr
Messages postés
65
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
5 juin 2012

8 déc. 2007 à 12:57
Parfait! Pour l'instant je cherche mais il n'y a aucune source qui traite aussi bien que la tienne de ADO, mais j'ai efin comppris les appels à une BD access! merci
mouhanadoo
Messages postés
2
Date d'inscription
dimanche 8 février 2004
Statut
Membre
Dernière intervention
16 avril 2007

20 mars 2007 à 17:24
faut laisser [..].OpenDatabase(nomBase) , et comme l'a dit Gizmo :

'A stocker dans un module :

' Contient le chemin et le nom de la base
Public nomBase As String

Sinon nikel cette source :)
peace
cs_ph35
Messages postés
27
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 février 2006

7 mars 2005 à 09:58
Merci pour cette source mais chez moi elle ne marche pas pour un insert.ça plante sur cette ligne:
Set db = DBEngine.Workspaces(0).OpenDatabase(bd1.mdb)
Siquelqu'un peut m'aider je l'en remercie d'avance.
cs_NISANDSYSTEMS
Messages postés
178
Date d'inscription
vendredi 1 novembre 2002
Statut
Membre
Dernière intervention
9 janvier 2010

3 mars 2005 à 13:27
Tres bon exemple et continu.
Les avantages DAO sont enormes et ADO n'est que pour l'instant une nouveauté qui evolue doucement.

Pour voir que DAO est beaucoup plus sur que ADO, voici
qlqs petits indices.

Creation d1 solution bureautique=DAO
Securité,groupes,utilisateurs=DAO
Microsoft Access reste en DAO pour ceux qui ne le savent peut-etre pas.

DAO est un controle intrinseque qui est conçu avec le language VB


ADO plus puissant,plus simple a programmer
Reellement, utiliser ADO pour un deploiement sur internet ou utilisation d'une source de donnée autre que Access ou conception autre que le moteur Jet alors
oui utiliser ADO.

Sinon DAO est toujours prometteur sinon a quoi bon avoir fait la version 3.51 ????

Nisand-Systems
cs_ITALIA
Messages postés
2169
Date d'inscription
vendredi 20 avril 2001
Statut
Membre
Dernière intervention
30 juin 2009
9
2 mars 2005 à 13:33
Perso je pense que le Principal c'est pas le choix entre l'ADO ou DAO..mais avoir un Résultat satisfaisant du point de vue de la Vitesse de traitement et/ou des Fonctions.

Je travail enormément en DAO et je n'ai pas à me plaindre.
Afficher les 9 commentaires

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.