Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

BASE ACCESS GÉRÉE TRÈS SIMPLEMENT


Information sur la source

Catégorie :Base de Donnees Niveau : Débutant Date de création : 28/02/2005 Date de mise à jour : 04/03/2005 07:12:33 Vu / téléchargé: 15 233 / 3 031

Note :
7,14 / 10 - par 7 personnes
7,14 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

  • '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
'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
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

04 mars 2005 07:12:34 :

Commentaires et avis

signaler à un administrateur
Commentaire de juvamine le 01/03/2005 10:08:45

Ben...on est en 2005, la DAO c'est dépassé, ça a beau être simple je pense que ce n'est pas un très bon exemple a suivre !
Fais nous le même en ADO, et la je te dirais: plutot bien pour débuter

cordialement
juvamine

signaler à un administrateur
Commentaire de jipef le 01/03/2005 21:24:21

pas d'accord avec juvamine
si tu as des progs qui tournent en clientele avec DAO mieux vaut y rester 2005 ou pas En effet le passage vers ADO change beaucoup de chose dans le code ne serais ce que AbsolutePosition qui est disparu !!!! sans équivalence
Je trouve le code de GizMo trés clair et trés simple à assimiler.
Un petit conseil  au lieu de
  If Rs.EOF Then
            GoTo suite
    End If
    
il vaut mieux
If Rs.Bof=false  Then


else
            GoTo suite
End If
    

signaler à un administrateur
Commentaire de jipef le 01/03/2005 21:28:13

suite ........
il vaut mieux
If Rs.Bof=false  Then
    rs.movelast
     rs.movefirst
else
      GoTo suite
End If
car rs.recordcount sera correctement renseigné sinon cela peut etre quelconque !!

signaler à un administrateur
Commentaire de juvamine le 01/03/2005 21:58:23

vi mais ca c pour débuter, alors kelkun ki veu débuter il fo kil le fasse en ADO pas en DAO !

signaler à un administrateur
Commentaire de ITALIA le 02/03/2005 13:33:55

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.

signaler à un administrateur
Commentaire de NISANDSYSTEMS le 03/03/2005 13:27:19

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

signaler à un administrateur
Commentaire de ph35 le 07/03/2005 09:58:27

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.

signaler à un administrateur
Commentaire de mouhanadoo le 20/03/2007 17:24:44

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

signaler à un administrateur
Commentaire de moutonjr le 08/12/2007 12:57:21 8/10

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

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.