Toutes les bases sur les bases de donnes et le sql

Contenu du snippet

ATTENTION NOUVELLE VERSION PRESQUE TERMINEE
(Le 16/01/2003) JE LA POSTERAI DANS QUELQUES JOURS
NOUVELLE VERSION EN HTML (Comme un site complet) QUI SERA DISPONIBLE DANS UN ZIP. MAIS CETTE VERSION RESTERA QUAND MÊME DISPONIBLE

'***********************************************************
' UTILISER LES BASES DE DONNES EN VB SANS SOUCIS
' GRACE AUX REQUETES SQL
'***********************************************************

'ETAPE 0 > MISE EN GARDE ET PREREQUIS
'ETAPE 1 > CREER LA BASE ACCESS
'ETAPE 2 > AJOUTER LA REFERENCE SQL A VISUAL BASIC
'ETAPE 3 > CONNECTION A LA BASE DE DONNES
'ETAPE 4 > AJOUTER DANS LA BASE DE DONNES
'ETAPE 5 > CREER LA FONCTION REINDEX
'ETAPE 6 > EDITER UN ENREGISTREMENT
'ETAPE 7 > SUPPRIMER UN ENREGISTREMENT
'ETAPE 8 > AFFICHER UN SEUL ENREGISTREMENT CHOISI
'ETAPE 9 > AFFICHER TOUS LES ENREGISTREMENTS DANS UN LISTE
'ETAPE 10> AFFICHER LES ENREGISTREMENTS DANS LA LISTE SUIVANT UN CRITERE
'ETAPE 11> CREER UNE NOUVELLE TABLE
'ETAPE 12> SUPPRIMER UNE TABLE
'ETAPE 13> AJOUTER UN CHAMP
'ETAPE 14> SUPPRIMER UN CHAMP
'ETAPE 15> FERMER LA CONNECTION A LA BASE
'ETAPE 16> AVANTAGES SQL / Composant DATA
'ETAPE 17> CE TUTORIAL...

'NOTE : Ce document est destiné tant aux utilisateurs novices que confirmés
'donc, il est probable que vous sachiez déja manier certaines fonctions
'expliqués ici, mais c'est pour que tout le monde puisse suivre. d'autre part
'je suis pas un dictionnaire ni un précis de grammaire, alors, désolé. Si vous
'avez des plaintes à faire, faites les a Microsoft pour qu'il mettent
'un correcteur d'ORTHOGRAPHE DANS NOTEPAD (Pour info, je connais Word, mais c'est
'chiant pour le texte sur VBfrance :-) )

'PREREQUIS :
'Pour pouvoir effectuer les opérations qui suivent, il vous faut:

'-Microsoft Access 97 ou 2000
'ou
'-Microsoft SQL Server 6 ou 7
'ou
'-Un logiciel compatible pour les bases de donnés
'et
'-Microsoft Visual Basic (STANDARD ou ENTREPRISE)

'AVANT DE CONTINUER :
'--------------------
'Recherchez le fichier le plus récent de MDAC_TYP.exe ou MDAC_TYPfr.exe
',soit sur le CD-ROM de Visual Basic ou sur le site Web de microsoft à l'adresse
'www.microsoft.fr/vbasic et installez-le, ces composants vont nous servir.
'(LE PACKAGE QUE VOUS INSTALLEZ DOIT ETRE LIVRE AUX CLIENTS AVEC L'APPLICATION)

'ATTENTION : Microsoft Access 2000 :
'-----------------------------------
'Visual Basic 5 et 6 ne digerent pas le format ACCESS 2000 pour les requetes SQL, donc
'pour plus de facilité, on utilisera le format 97

'POUR EFFECTUER LA CONVERSION 2000>97, enregistrez la base aux format 2000
'(GARDEZ LE POUR POUVOIR MODIFIER LES TABLES, LES CHAMPS,...)
'Le format 97 une fois exporté n'est plus modifiable en ACCESS 2000.

'Menu : Outils/Utilitaires de base de donnés/Convertir la base de donnés/à la version précédent de la base Access.

'!!!!!!!!!!!!!!!!!!!!
'QUAND VOUS OUVREZ LA BASE AU FORMAT 97 DANS ACCESS 2000,
'CHOISISSEZ IMPERATIVEMENT "VALIDER UNE BASE DE DONNEE" dans la
'question qui vous est posé.
'Vous ne pourrez pas modifier la structure (Tables, ...) Mais pourrez toujours ajouter ou
'supprimer des enregistrements.
'!!!!!!!!!!!!!!!!!!!!

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 1
' CREER LA BASE ACCESS
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'1-Lancez MS Access (97 ou 2000) et créez une nouvelle base
'2-Nommez la base "DB2000" ce qui forme le fichier DB2000.mdb
'3-Créez une nouvelle TABLE "En mode création"
'4-Creez les champs suivant:

'NOM TYPE TAILLE
'---------------------------------------------------------------
'AUTO NumeroAuto /
'INDEX Texte 4
'NOM Texte 50
'PRENOM Texte 50
'VILLE Texte 50
'TELEPHONE Texte 50
'---------------------------------------------------------------
'5-Effectuez un clic droit sur la case grise de la ligne "AUTO"
' Dans le menu qui apparait, cliquez sur Clé Primaire
'6-Fermez la table à l'aide de la croix (X) et enregistrez la sous le nom
' CLIENTS
'7-Allez dans le menu
' Outils/Utilitaires de base de donnés/Convertir la base de donnés/à la version précédent de la base Access.
'8-Nommez la base 97 avec le nom "DB97" et fermez ACCESS

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 2
' AJOUTER LA REFERENCE SQL A VISUAL BASIC
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'Avant de pouvoir utiliser les requêtes SQL, il faut ajouter la référence à
'Visual basic.

'1-Lancez Visual Basic et créez un nouveau projet (EXE STANDARD OU ENTREPRISE)
'2-Cliquez sur Projet puis sur Références...
'3-Dans la fenêtre, cherchez la ligne "Microsoft DAO 2.5/3.5 COMPATIBILITY LIBRARY"
'4-Cochez la et cliquez sur OK

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 3
' CONNECTION A LA BASE DE DONNES
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'Quand on utilise une connection SQL, il faut se connecter à la base
'de donnés :

'On va créer des variables publiques qui contiendrons le chemin et la table

'Pour le chemin de la base

Public db As Database

'Pour les tables à lire dans la base

Public rs As Recordset

'Pour les chaines sql

Public sql As String

'Ensuite, sur un bouton connection ou dans le FORM_LOAD

Set db = OpenDatabase(App.Path & "\DB97.mdb")

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 4
' AJOUTER DANS LA BASE DE DONNES
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'On va créer 4 Boites de texte (avec un nom au-dessus (LABEL))
'1° = NOM
'2° = PRENOM
'3° = VILLE
'4° = TELEPHONE
'Et aussi un bouton AJOUTER

'Dans le code du bouton, on met :

'sql = "select * from CLIENTS" ' On séléctionne tous les champs de la table CLIENTS
'Set rs = db.OpenRecordset(sql, dbOpenDynaset) ' ici on est bien en mode écriture dbOpenDynaset

'rs.AddNew ' on va ajouter un enregistrement à notre recordset
'rs.Fields("nom") = nom.Text ' Le champ nom = le contrôle Text1
'rs.Fields("prenom") = prenom.Text
'rs.Fields("ville") = ville.Text
'rs.Fields("telephone") = telephone.text

'rs.Update 'Une fois les valeurs définies, on met à jour notre Recordset
'rs.Close

'???????????????????
'LE CHAMP "INDEX" QUE L'ON A CREE SERT A TENIR A JOUR LE NOMBRE D'ENREGISTREMENTS
'CAR AUTO NUMEROTE 1,2,3,4,5,6; mais si on supprime le 5, cela donne 1,2,3,4,6. Le
'champ INDEX sera réactualisé à chaque opération par une fonction ReIndex, qui va
'renuméroter tous les enregistrements de 1 à X enregistrements. (C'est utilisé pour supprimer ou modifier
'les enregistrements plus facilement que par AUTO)
'???????????????????

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 5
' CREER LA FONCTION ReINDEX
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'???????????????????
'LE CHAMP "INDEX" QUE L'ON A CREE SERT A TENIR A JOUR LE NOMBRE D'ENREGISTREMENTS
'CAR AUTO NUMEROTE 1,2,3,4,5,6; mais si on supprime le 5, cela donne 1,2,3,4,6. Le
'champ INDEX sera réactualisé à chaque opération par une fonction ReIndex, qui va
'renuméroter tous les enregistrements de 1 à X enregistrements. (C'est utilisé pour supprimer ou modifier
'les enregistrements plus facilement que par AUTO)
'???????????????????

'Faites un nouveau SUB (Public ou Private) nommé ReINDEX
'et mettez y ceci :

Private sub ReINDEX()

Dim i As Integer
i = 0
sql = "select * from CLIENTS"
Set rs = db.OpenRecordset(sql, dbOpenDynaset)

While Not rs.EOF
rs.Edit
i = i + 1
rs.Fields("INDEX") = i
rs.Update
rs.MoveNext

Wend
rs.Close

End sub

'!!!!!!!!!!!
'VOUS DEVEZ UTILISER ReINDEX après toute OPERATION DANS LA BASE (Suppression, Edition,...)
'CELA PERMET DE MODIFIER OU SUPPRIMER UN ENREGISTREMENT PLUS VITE, VOYEZ PLUTOT
'!!!!!!!!!!!

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 6
' EDITER UN ENREGISTREMENT
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'Imaginez que vous voulez editer l'enregistrement dont le numéro est donne par
'l'utilisateur à l'aide d'une boite de texte nommé "NUMERO":

'Sur un bouton:

sql = "select * from CLIENTS Where INDEX = " & NUMERO.text
Set rs = db.OpenRecordset(sql, dbOpenDynaset)

While Not rs.EOF
rs.Edit
rs.Fields("Nom") = Text1.text
rs.Fields("Prenom") = Text2.text
rs.Fields("Ville") = Text3.text
rs.Fields("Telephone") = Text4.text
rs.Update
rs.MoveNext

Wend
rs.Close

'!!!!!!!!!!!!!!
'ATTENTION = TOUS LES CHAMPS AYANT L'INDEX CONTENU DANS NUMERO SERONT EDITE, VEILLEZ TOUJOURS
'A REINDEX LA BASE AVANT DE MODIFIER LES ENREGISTREMENTS
'!!!!!!!!!!!!!!

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 7
' SUPPRIMER UN ENREGISTREMENT
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

sql = "DELETE * FROM Employes WHERE Auto='" & Valeur.text & "'"
db.Execute sql

'!!!!!!!!!!!!!!
'ATTENTION = TOUS LES CHAMPS AYANT L'INDEX CONTENU DANS NUMERO SERONT SUPPRIMES, VEILLEZ TOUJOURS
'A REINDEX LA BASE AVANT DE SUPPIMER DES ENREGISTREMENTS
'!!!!!!!!!!!!!!

'IMPORTANT = QUAND ON UTILISE "WHERE %Champ%=" il faut mettre ' (apostrophe) entre la valeur
'-->WHERE %Champ% = 'Jean'

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 8
' AFFICHER UN SEUL ENREGISTREMENT
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

sql = "select * from Employes where auto='" & Valeur.text & "'"

Set rs = db.OpenRecordset(sql, dbOpenSnapshot)
Text1.Text = rs.Fields("NOM")
Text2.Text = rs.Fields("FONCTION")
Text3.Text = rs.Fields("VILLE")

'IMPORTANT = QUAND ON UTILISE "WHERE %Champ%=" il faut mettre ' (apostrophe) entre la valeur
'-->WHERE %Champ% = 'Jean'

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 9
' AFFICHER TOUS LES ENREGISTREMENTS DANS UN LISTE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'On va faire une liste COMBO appelée COMBO1 et on va lister tous les enregistrements

sql = "select * from Employes"

Set rs = db.OpenRecordset(sql, dbOpenSnapshot)

Combo1.Clear ' Vide le combo

While Not rs.EOF 'BOUCLE Tant Que"

Combo1.AddItem rs.Fields("Nom") & rs.Fields("VILLE")

rs.MoveNext 'ensuite on passe à l'enregistrement suivant qui se trouve dans notre Recordset

Wend ' Fin de la boucle Tant que
' On sortira de cette boucle lorsque tous les enregistrement de notre Recordset aurront été lu.

rs.Close ' Prenez l'habitude de fermer votre Recordset pour libérer de l'espace mémoire

Combo1.ListIndex = -1 'Pour afficher un combo vide.

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 10
' AFFICHER LES ENREGISTREMENTS DANS LA LISTE SUIVANT UN CRITERE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'On va faire une liste COMBO appelée COMBO1 et on va lister tous les enregistrements

sql = "select * from Employes where NOM ='" & Nom.Text & "'"

Set rs = db.OpenRecordset(sql, dbOpenSnapshot)

Combo1.Clear ' Vide le combo

While Not rs.EOF 'BOUCLE Tant Que"

Combo1.AddItem rs.Fields("Nom") & " " & rs.Fields("VILLE")

rs.MoveNext 'ensuite on passe à l'enregistrement suivant qui se trouve dans notre Recordset

Wend ' Fin de la boucle Tant que
' On sortira de cette boucle lorsque tous les enregistrement de notre Recordset aurront été lu.

rs.Close ' Prenez l'habitude de fermer votre Recordset pour libérer de l'espace mémoire

Combo1.ListIndex = -1 'Pour afficher un combo vide.

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 11
' CREER UNE NOUVELLE TABLE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'On va créer une table nommée CLIENT dont les champs seront NOM, VILLE

sql = "CREATE TABLE Clients3 (Prenom TEXT (5), Ville TEXT (5))"
db.Execute sql

'(5)= Le nombre de caractère MAX dans le champ (Pour TEXT uniquement)

'TEXT = Le type de donnés

'La table CLIENTS3 Est crée

'LES POSSIBILITE DE TYPE:
'-------------------------
'NOM TAILLE VALEUR
'***********************************************
'BINARY 1 octet/caractère /
'BIT 1 octet YES/NO
'BYTE 1 octet Valeur entre 0 et 255
'COUNTER 4 octets NumeroAUTO
'CURRENCY 8 octets - 922 337 203 685 477,5808 et 922 337 203 685 477,5807.
'DATETIME 8 octets Date ou Heure entre 100 et 9999 (années)
'GUID 128 bits /
'SINGLE 4 octets Virgule flotante simple précision
'DOUBLE 8 octets double précision
'SHORT 2 octets -32 768 et 32 767
'LONG 4 octets - 2 147 483 648 et 2 147 483,647
'LONGTEXT 1 octet/caractère de 0 à 1,2 GO
'LONGBINARY Au besoin de 0 à 1,2 GO
'TEXT 1 octet par caractère de 0 à 255 caractères

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 12
' SUPPRIMER UNE TABLE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'On va supprimer la table CLIENTS

sql = "DROP TABLE Clients"
db.Execute sql

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 13
' AJOUTER UN CHAMP DANS UNE TABLE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'On va ajouter le champ Nom de type TEXT de longueur 10

sql = "ALTER TABLE Clients ADD COLUMNS Nom TEXT (10)"
db.Execute sql

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 14
' SUPPRIMER UN CHAMP DANS UNE TABLE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'On va supprimer le champ NOM

sql = "ALTER TABLE Clients DROP COLUMNS Nom"
db.Execute sql

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 15
' FERMER LA CONNECTION A LA BASE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'Quand on quitte le programme, on ferme la connection à la base

db.close

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 16
' AVANTAGES DE SQL / Composants DATA
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

-Rapidite
-Moins D'erreurs
-Plus Facile pour les grosses manipulations
-Ajouter/Supprimer une table
-Ajouter/Supprimer des champs
-Pas de gros composants à transporter

!!!!!!!
NOTE : Utiliser MySQL ou Microsoft SQL Server pour faire de meilleurs
bases de donnés (Jusqu'a 1 TERA-OCTET) contrer 2 GO pour la base access
en plus, les bases sont plus propres.

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
' ETAPE 17
' CE TUTORIAL...
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'CE TUTORIAL PEUT ÊTRE DISTRIBUE GRATUITEMENT SANS AVOIR SUBI DES MODIFICATIONS
'CE n'EST QUE l'ABC DE SQL, y'a moyen de faire beaucoup plus.

'Si vous avez des remarques ou des modifications à apporter, faites les moi parvenir
'à magidev@hotmail.com (SUJET: TUTORIAL SQL - %VOTRE TITRE%)
'N'oubliez pas votre mail si vous voulez une réponse

'Tutorial Crée avec NOTEPAD pour VBfrance.com (UTILE TANT aux VBéistes qu' aux C++iens
'ou ASPéiens.)

'MERCI A TOUS -MERCI A NIX POUR VBfrance

'!!!!!!!!!!!
'NOTE : J'AI REALISE UN TUTORIAL SUR LE COMPOSANT DATA DE VB, pour ceux qui
'veulent. Il se trouve sur VBfrance.com rubrique Base de donnés, Page 6 (Si vous ne le trouvez pas, maillez-moi)

'Magidev
'www.magidev.be.tf
'magidev@hotmail.com
'www.stardusts.be.tf (pour les mordus d'astronomie, de ciel et d'espace)

'VIVE VBfrance
'VIVE Nix et son EQUIPE
'Vive SQL
'VIVE VB
'VIVE %Votre Nom%
'VIVE LA COMMUNAUTE CodeS-SourceS.com
'VIVE LE FORUM

Source / Exemple :


'***********************************************************
'	UTILISER LES BASES DE DONNES EN VB SANS SOUCIS
'                   GRACE AUX REQUETES SQL
'***********************************************************

'ETAPE 0 > MISE EN GARDE ET PREREQUIS
'ETAPE 1 > CREER LA BASE ACCESS
'ETAPE 2 > AJOUTER LA REFERENCE SQL A VISUAL BASIC
'ETAPE 3 > CONNECTION A LA BASE DE DONNES
'ETAPE 4 > AJOUTER DANS LA BASE DE DONNES
'ETAPE 5 > CREER LA FONCTION REINDEX
'ETAPE 6 > EDITER UN ENREGISTREMENT
'ETAPE 7 > SUPPRIMER UN ENREGISTREMENT
'ETAPE 8 > AFFICHER UN SEUL ENREGISTREMENT CHOISI
'ETAPE 9 > AFFICHER TOUS LES ENREGISTREMENTS DANS UN LISTE
'ETAPE 10> AFFICHER LES ENREGISTREMENTS DANS LA LISTE SUIVANT UN CRITERE
'ETAPE 11> CREER UNE NOUVELLE TABLE
'ETAPE 12> SUPPRIMER UNE TABLE
'ETAPE 13> AJOUTER UN CHAMP
'ETAPE 14> SUPPRIMER UN CHAMP
'ETAPE 15> FERMER LA CONNECTION A LA BASE
'ETAPE 16> AVANTAGES SQL / Composant DATA
'ETAPE 17> CE TUTORIAL...

'NOTE : Ce document est destiné tant aux utilisateurs novices que confirmés
'donc, il est probable que vous sachiez déja manier certaines fonctions
'expliqués ici, mais c'est pour que tout le monde puisse suivre. d'autre part
'je suis pas un dictionnaire ni un précis de grammaire, alors, désolé. Si vous
'avez des plaintes à faire, faites les a Microsoft pour qu'il mettent
'un correcteur d'ORTHOGRAPHE DANS NOTEPAD (Pour info, je connais Word, mais c'est
'chiant pour le texte sur VBfrance :-) )

'PREREQUIS : 
'Pour pouvoir effectuer les opérations qui suivent, il vous faut:

'-Microsoft Access 97 ou 2000
'ou
'-Microsoft SQL Server 6 ou 7
'ou
'-Un logiciel compatible pour les bases de donnés
'et
'-Microsoft Visual Basic (STANDARD ou ENTREPRISE)

'AVANT DE CONTINUER : 
'--------------------
'Recherchez le fichier le plus récent de MDAC_TYP.exe ou MDAC_TYPfr.exe
',soit sur le CD-ROM de Visual Basic ou sur le site Web de microsoft à l'adresse
'www.microsoft.fr/vbasic et installez-le, ces composants vont nous servir.
'(LE PACKAGE QUE VOUS INSTALLEZ DOIT ETRE LIVRE AUX CLIENTS AVEC L'APPLICATION)

'ATTENTION : Microsoft Access 2000 :
'-----------------------------------
'Visual Basic 5 et 6 ne digerent pas le format ACCESS 2000 pour les requetes SQL, donc
'pour plus de facilité, on utilisera le format 97

'POUR EFFECTUER LA CONVERSION 2000>97, enregistrez la base aux format 2000 
'(GARDEZ LE POUR POUVOIR MODIFIER LES TABLES, LES CHAMPS,...) 
'Le format 97 une fois exporté n'est plus modifiable en ACCESS 2000.

'Menu : Outils/Utilitaires de base de donnés/Convertir la base de donnés/à la version précédent de la base Access.

'!!!!!!!!!!!!!!!!!!!!
'QUAND VOUS OUVREZ LA BASE AU FORMAT 97 DANS ACCESS 2000, 
'CHOISISSEZ IMPERATIVEMENT "VALIDER UNE BASE DE DONNEE" dans la 
'question qui vous est posé. 
'Vous ne pourrez pas modifier la structure (Tables, ...) Mais pourrez toujours ajouter ou 
'supprimer des enregistrements.
'!!!!!!!!!!!!!!!!!!!!

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 1
' 	  		CREER LA BASE ACCESS
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'1-Lancez MS Access (97 ou 2000) et créez une nouvelle base
'2-Nommez la base "DB2000" ce qui forme le fichier DB2000.mdb
'3-Créez une nouvelle TABLE "En mode création"
'4-Creez les champs suivant:

'NOM			TYPE			TAILLE
'---------------------------------------------------------------
'AUTO			NumeroAuto		/
'INDEX			Texte			4	
'NOM			Texte			50
'PRENOM			Texte			50
'VILLE			Texte			50
'TELEPHONE		Texte			50
'---------------------------------------------------------------
'5-Effectuez un clic droit sur la case grise de la ligne "AUTO"
'  Dans le menu qui apparait, cliquez sur Clé Primaire
'6-Fermez la table à l'aide de la croix (X) et enregistrez la sous le nom
'  CLIENTS
'7-Allez dans le menu 
'  Outils/Utilitaires de base de donnés/Convertir la base de donnés/à la version précédent de la base Access.
'8-Nommez la base 97 avec le nom "DB97" et fermez ACCESS

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 2
' 	  	AJOUTER LA REFERENCE SQL A VISUAL BASIC
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'Avant de pouvoir utiliser les requêtes SQL, il faut ajouter la référence à
'Visual basic.

'1-Lancez Visual Basic et créez un nouveau projet (EXE STANDARD OU ENTREPRISE)
'2-Cliquez sur Projet puis sur Références...
'3-Dans la fenêtre, cherchez la ligne "Microsoft DAO 2.5/3.5 COMPATIBILITY LIBRARY"
'4-Cochez la et cliquez sur OK

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 3
' 	  	     CONNECTION A LA BASE DE DONNES
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'Quand on utilise une connection SQL, il faut se connecter à la base
'de donnés :

'On va créer des variables publiques qui contiendrons le chemin et la table

'Pour le chemin de la base

  Public db As Database

'Pour les tables à lire dans la base

  Public rs As Recordset

'Pour les chaines sql 

  Public sql As String

'Ensuite, sur un bouton connection ou dans le FORM_LOAD

  Set db = OpenDatabase(App.Path & "\DB97.mdb")

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 4
' 	  	     AJOUTER DANS LA BASE DE DONNES
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'On va créer 4 Boites de texte (avec un nom au-dessus (LABEL))
'1° = NOM
'2° = PRENOM
'3° = VILLE
'4° = TELEPHONE
'Et aussi un bouton AJOUTER

'Dans le code du bouton, on met :

'sql = "select * from CLIENTS" ' On séléctionne tous les champs de la table CLIENTS
'Set rs = db.OpenRecordset(sql, dbOpenDynaset) ' ici on est bien en mode écriture dbOpenDynaset

'rs.AddNew ' on va ajouter un enregistrement à notre recordset
'rs.Fields("nom") = nom.Text ' Le champ nom = le contrôle Text1
'rs.Fields("prenom") = prenom.Text
'rs.Fields("ville") = ville.Text
'rs.Fields("telephone") = telephone.text

'rs.Update 'Une fois les valeurs définies, on met à jour notre Recordset
'rs.Close

'???????????????????
'LE CHAMP "INDEX" QUE L'ON A CREE SERT A TENIR A JOUR LE NOMBRE D'ENREGISTREMENTS
'CAR AUTO NUMEROTE 1,2,3,4,5,6; mais si on supprime le 5, cela donne 1,2,3,4,6. Le
'champ INDEX sera réactualisé à chaque opération par une fonction ReIndex, qui va
'renuméroter tous les enregistrements de 1 à X enregistrements. (C'est utilisé pour supprimer ou modifier
'les enregistrements plus facilement que par AUTO)
'???????????????????

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 5
' 	  	     CREER LA FONCTION ReINDEX
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'???????????????????
'LE CHAMP "INDEX" QUE L'ON A CREE SERT A TENIR A JOUR LE NOMBRE D'ENREGISTREMENTS
'CAR AUTO NUMEROTE 1,2,3,4,5,6; mais si on supprime le 5, cela donne 1,2,3,4,6. Le
'champ INDEX sera réactualisé à chaque opération par une fonction ReIndex, qui va
'renuméroter tous les enregistrements de 1 à X enregistrements. (C'est utilisé pour supprimer ou modifier
'les enregistrements plus facilement que par AUTO)
'???????????????????

'Faites un nouveau SUB (Public ou Private) nommé ReINDEX
'et mettez y ceci :

Private sub ReINDEX()

Dim i As Integer
i = 0
sql = "select * from CLIENTS"
Set rs = db.OpenRecordset(sql, dbOpenDynaset)

While Not rs.EOF
rs.Edit
i = i + 1
rs.Fields("INDEX") = i
rs.Update
rs.MoveNext

Wend
rs.Close

End sub

'!!!!!!!!!!!
'VOUS DEVEZ UTILISER ReINDEX après toute OPERATION DANS LA BASE (Suppression, Edition,...)
'CELA PERMET DE MODIFIER OU SUPPRIMER UN ENREGISTREMENT PLUS VITE, VOYEZ PLUTOT
'!!!!!!!!!!!

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 6
' 	  	        EDITER UN ENREGISTREMENT
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'Imaginez que vous voulez editer l'enregistrement dont le numéro est donne par 
'l'utilisateur à l'aide d'une boite de texte nommé "NUMERO":

'Sur un bouton:

sql = "select * from CLIENTS Where INDEX = " & NUMERO.text
Set rs = db.OpenRecordset(sql, dbOpenDynaset)

While Not rs.EOF
rs.Edit
rs.Fields("Nom") = Text1.text
rs.Fields("Prenom") = Text2.text
rs.Fields("Ville") = Text3.text
rs.Fields("Telephone") = Text4.text
rs.Update
rs.MoveNext

Wend
rs.Close

'!!!!!!!!!!!!!!
'ATTENTION = TOUS LES CHAMPS AYANT L'INDEX CONTENU DANS NUMERO SERONT EDITE, VEILLEZ TOUJOURS
'A REINDEX LA BASE AVANT DE MODIFIER LES ENREGISTREMENTS
'!!!!!!!!!!!!!!

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 7
' 	  	        SUPPRIMER UN ENREGISTREMENT
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

sql = "DELETE * FROM Employes WHERE Auto='" & Valeur.text & "'"
db.Execute sql

'!!!!!!!!!!!!!!
'ATTENTION = TOUS LES CHAMPS AYANT L'INDEX CONTENU DANS NUMERO SERONT SUPPRIMES, VEILLEZ TOUJOURS
'A REINDEX LA BASE AVANT DE SUPPIMER DES ENREGISTREMENTS
'!!!!!!!!!!!!!!

'IMPORTANT = QUAND ON UTILISE "WHERE %Champ%=" il faut mettre ' (apostrophe) entre la valeur
'-->WHERE %Champ% = 'Jean'

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 8
' 	  	       AFFICHER UN SEUL ENREGISTREMENT
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

sql = "select * from Employes where auto='" & Valeur.text &  "'" 

Set rs = db.OpenRecordset(sql, dbOpenSnapshot)
Text1.Text = rs.Fields("NOM")
Text2.Text = rs.Fields("FONCTION")
Text3.Text = rs.Fields("VILLE")

'IMPORTANT = QUAND ON UTILISE "WHERE %Champ%=" il faut mettre ' (apostrophe) entre la valeur
'-->WHERE %Champ% = 'Jean'

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 9
' 	  	AFFICHER TOUS LES ENREGISTREMENTS DANS UN LISTE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'On va faire une liste COMBO appelée COMBO1 et on va lister tous les enregistrements

sql = "select * from Employes" 

Set rs = db.OpenRecordset(sql, dbOpenSnapshot) 

Combo1.Clear ' Vide le combo

While Not rs.EOF 'BOUCLE Tant Que"

Combo1.AddItem rs.Fields("Nom") & rs.Fields("VILLE") 

rs.MoveNext 'ensuite on passe à l'enregistrement suivant qui se trouve dans notre Recordset

Wend ' Fin de la boucle Tant que
' On sortira de cette boucle lorsque tous les enregistrement de notre Recordset aurront été lu.

rs.Close ' Prenez l'habitude de fermer votre Recordset pour libérer de l'espace mémoire

Combo1.ListIndex = -1 'Pour afficher un combo vide.

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 10
' 	 AFFICHER LES ENREGISTREMENTS DANS LA LISTE SUIVANT UN CRITERE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'On va faire une liste COMBO appelée COMBO1 et on va lister tous les enregistrements

sql = "select * from Employes where NOM ='" & Nom.Text & "'" 

Set rs = db.OpenRecordset(sql, dbOpenSnapshot) 

Combo1.Clear ' Vide le combo

While Not rs.EOF 'BOUCLE Tant Que"

Combo1.AddItem rs.Fields("Nom") & " " & rs.Fields("VILLE") 

rs.MoveNext 'ensuite on passe à l'enregistrement suivant qui se trouve dans notre Recordset

Wend ' Fin de la boucle Tant que
' On sortira de cette boucle lorsque tous les enregistrement de notre Recordset aurront été lu.

rs.Close ' Prenez l'habitude de fermer votre Recordset pour libérer de l'espace mémoire

Combo1.ListIndex = -1 'Pour afficher un combo vide.

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 11
'                	 CREER UNE NOUVELLE TABLE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'On va créer une table nommée CLIENT dont les champs seront NOM, VILLE

sql = "CREATE TABLE Clients3 (Prenom TEXT (5), Ville TEXT (5))"
db.Execute sql

'(5)= Le nombre de caractère MAX dans le champ (Pour TEXT uniquement)

'TEXT = Le type de donnés

'La table CLIENTS3 Est crée

'LES POSSIBILITE DE TYPE:
'-------------------------
'NOM		TAILLE			VALEUR
'***********************************************
'BINARY		1 octet/caractère	/
'BIT		1 octet			YES/NO
'BYTE		1 octet			Valeur entre 0 et 255
'COUNTER	4 octets		NumeroAUTO
'CURRENCY	8 octets		- 922 337 203 685 477,5808 et 922 337 203 685 477,5807.
'DATETIME	8 octets		Date ou Heure entre 100 et 9999 (années)
'GUID		128 bits		/
'SINGLE		4 octets		Virgule flotante simple précision
'DOUBLE		8 octets				 double précision
'SHORT		2 octets		-32 768 et 32 767
'LONG		4 octets		- 2 147 483 648 et 2 147 483,647
'LONGTEXT	1 octet/caractère	de 0 à 1,2 GO
'LONGBINARY	Au besoin		de 0 à 1,2 GO
'TEXT		1 octet par caractère   de 0 à 255 caractères

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 12
' 			   SUPPRIMER UNE TABLE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'On va supprimer la table CLIENTS

sql = "DROP TABLE Clients"
db.Execute sql

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 13
'       		      AJOUTER UN CHAMP DANS UNE TABLE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'On va ajouter le champ Nom de type TEXT de longueur 10

sql = "ALTER TABLE Clients ADD COLUMNS Nom TEXT (10)"
db.Execute sql

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 14
'      		     SUPPRIMER UN CHAMP DANS UNE TABLE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'On va supprimer le champ NOM

sql = "ALTER TABLE Clients DROP COLUMNS Nom"
db.Execute sql

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 15
'      		     FERMER LA CONNECTION A LA BASE
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'Quand on quitte le programme, on ferme la connection à la base

db.close

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 16
'      		     AVANTAGES DE SQL / Composants DATA
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

-Rapidite
-Moins D'erreurs
-Plus Facile pour les grosses manipulations
-Ajouter/Supprimer une table
-Ajouter/Supprimer des champs
-Pas de gros composants à transporter

!!!!!!!
NOTE : Utiliser MySQL ou Microsoft SQL Server pour faire de meilleurs
bases de donnés (Jusqu'a 1 TERA-OCTET) contrer 2 GO pour la base access
en plus, les bases sont plus propres.

'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
'  				ETAPE 17
'      		              CE TUTORIAL...
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

'CE TUTORIAL PEUT ÊTRE DISTRIBUE GRATUITEMENT SANS AVOIR SUBI DES MODIFICATIONS
'CE n'EST QUE l'ABC DE SQL, y'a moyen de faire beaucoup plus.

'Si vous avez des remarques ou des modifications à apporter, faites les moi parvenir
'à magidev@hotmail.com (SUJET: TUTORIAL SQL - %VOTRE TITRE%)
'N'oubliez pas votre mail si vous voulez une réponse

'Tutorial Crée avec NOTEPAD pour VBfrance.com (UTILE TANT aux VBéistes qu' aux C++iens
'ou ASPéiens.)

'MERCI A TOUS -MERCI A NIX POUR VBfrance

'!!!!!!!!!!!
'NOTE : J'AI REALISE UN TUTORIAL SUR LE COMPOSANT DATA DE VB, pour ceux qui
'veulent. Il se trouve sur VBfrance.com rubrique Base de donnés, Page 6 (Si vous ne le trouvez pas, maillez-moi)

'Magidev
'www.magidev.be.tf
'magidev@hotmail.com
'www.stardusts.be.tf (pour les mordus d'astronomie, de ciel et d'espace)

'VIVE VBfrance
'VIVE Nix et son EQUIPE
'Vive SQL
'VIVE VB
'VIVE %Votre Nom%
'VIVE LA COMMUNAUTE CodeS-SourceS.com
'VIVE LE FORUM

Conclusion :


Et voila

SURVEILLEZ LES SOURCES MAGIDEV - IL VA Y AVOIR UNE NOUVELLE VERSION HTML REVUE ET CORRIGEE (16/01/2003) BEAUCOUPS PLUS COMPLETE ET PLUS FACILE A UTILISER AVEC LES LIENS HTML

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.