VBA est un langage de programmation commun à tous les produits Microsoft
Moyen rapide de développer
Permet d'interagir avec l'environnement Windows
Programmation événementielle
Souris: Déplacement, clique du bouton droit, glisser, déplacer, etc. Clavier: saisie, touche relâchée, etc.
Gestion des fenêtres
Exécution des commandes systèmes
Capable de gérer les erreurs
VBA VB Access
Complètement lié à un des Basic produits Microsoft office
Permet de créer des Ne pourra en aucun cas applications indépendantes s'exécuter de manière autonome.
Version 1 et
Il existe cependant une version "Run time" d'Access,
nommée "Kit Office Développement Environnement 2 d'Access
(Kit ODE)", qui permet de distribuer une application développée sous Access sans avoir à installer Access sur les postes destinés à faire fonctionner cette application.
Espions
Points d’arrêt
Environnement de développement IDE
Exécution d’une procédure
Access comporte deux composants :
Microsoft Jet
Contrôle le stockage des données
Définit les objets de la BD
Le moteur de l’application
Contrôle la programmation
Contrôle l’interface
Comment ça fonctionne ?
Quand vous ouvrez une BD, le moteur de l’application utilise Microsoft Jet pour déterminer les noms des tables, des requêtes, etc.
Il possède les caractéristiques suivantes :
Moteur à 32 bits
Support Unicode
Jeux de caractères à deux octets par caractère
Types de données compatibles avec SQL Server
SQL 92
Verrouillage amélioré des données
Byte
entiers positifs compris entre 0 et 255,
Boolean
True et False,
Integer ou %
entiers entre -32 768 et 32 767,
Currency ou @
valeurs entre -922 337 203 685 477,5808 et 922 337 203 685 477,5807 String ou $
Entre 0 et environ 63 Ko de caractères
Long ou &
entier -2 147 483 648 et 2 147 483 647
Decimal
Single ou !
Double ou #
Date
pour stocker les dates (1/01/100 – 31/12/9999) et les heures
Object
Tous types d'objets,
Variant (Par défaut)
Type de données particulier pouvant contenir des données numériques,
des chaînes ou des dates, des types définis par l'utilisateur ainsi que les valeurs spéciales Empty et Null
Des variables (DIM)
DIM entier as INTEGER
DIM type as Variant
DIM x(10, 25) as Single
REDIM x(10, 40) as INTEGER Des constantes (CONST)
Const PI As Single = 3.14
Des structures de données définies par l’utilisateur
Type Adresse
Numero as Integer
NomRue as String * 30
Ville as String * 50
CodePostal as INTEGER
End TYPE
…..
DIM Adresse_client as Adresse
Function NoteAleatoire() As Single
Dim ValeurAlea As Single
ValeurAlea = Rnd() * 20
NoteAleatoire = Format(ValeurAlea, "0.0")
End Function
Permet de définir des variables privées
Une procédure privée englobe des variables privées
Permet de définir des variables publiques
Permet de (re)définir des variables dont le contenu est non modifiable
Mathématiques
+, -, *, /, ^
<, <, =, <=, >=, <>
AND, OR, NOT, EQV
Instruction IF
IF (a=5) Then
…
Else
…
ENDIF
Instruction IIf(condition, truepart, falsepart)
Instruction GOTO
GoTO Fin
…..
:FIN
Instruction FOR…NEXT
For i=1 to 10
---
Next i Instruction While
While i<=10
---
Wend
Instruction
Do [{While | Until} condition]
[statements]
Loop
Vous pouvez également utiliser la syntaxe suivante :
Do
[statements]
Loop [{While | Until} condition]
Instruction Select Case
Select CASE valeur
Case 0 to 2 ….
Case 3 to 5
…
Case 6
Case ELSE
END SELECT
L’instruction CALL
Transfère le contrôle à une procédure ou à une Fonction (interne ou externe) Call MyProc(0)
Plusieurs méthodes :
NomCollection![Nom de l’Objet]
Ex: Forms![Clients]
NomCollection("Nom de l’Objet")
Ex: Forms("Clients")
NomCollection(Numéro de l’Objet)
Ex: Forms(0) et Forms(Forms.Count-1)
Pour accéder à un sous-object ou à une méthode, on utilise aussi le .
Ex: DBEngine.Workspaces(0).CurrentDB()
On error … ? Génération d'une constante Err
Resume NEXT
Le programme continue sans abandonner
ERL
Renvoie le numéro de la ligne où l’erreur s’est produite
Err.Number
Contient le code de l’erreur
Error$(Err) ou Err.Description
Donne les détails de ERR
Sur les chaînes
Left (chaîne, taille), Right, Replace, etc.
Arithmétiques
ABS, LOG, EXP, etc.
Commandes
CHDIR, CHDRIVE, DIR£, MKDIR, RMDIR, etc.
Heure/date
Date$, Now, etc.
Affichage
MSGBOX, INPUTBOX$, etc.
Les librairies proposées dans très variées Pour les intégrer dans un module:
Dans l'IDE de Visual Basic
Outils/références
Intégrer seulement les librairies concernées, sinon
Plusieurs librairies sont proposées. Mais Principalement
:
DAO (Data Access Objects)
Interface permettant l'accès aux données qui communique avec Microsoft Jet et des sources de données compatibles ODBC pour se connecter à, récupérer, manipuler et mettre à jour des données et la structure de base de données.
ADO (ActiveX Data Objects)
Interface d'accès aux données qui communique avec des sources de données compatibles OLE DB pour la connexion, la récupération, la manipulation et la mise à jour de données
(Via le Web par exemple ;)
Oracle, SQL server, Access, Sybase, Paradox, etc.
Conçu pour des applications client/serveur Dépend d'un groupe international (et pas de Microsoft ?)
Suppression (de la table Etudiants)
Déclaration (d'une variable qui représente la table Etudiants)
Déclaration (de la requête Clients lyonnais)
Accéder aux enregistrement d'une table
Plusieurs moyens, mais principalement :
Applicable sur les tables et les requêtes
Trois éléments sont essentiels
Propose plusieurs méthodes :
De positionnement
MoveFirst | MoveNext | MoveLast | MovePrevious | Move n
BOF, EOF
De recherche
FindFirst | FindLast | FindNext | FindPrevious
De manipulation
Delete
Update
Edit
Addnew
Field
Requery (mise-à-jour)
Diverses
Bookmark
RecordCount
Positionnement sur un enregistrement
Propriété Bookmark
Indique l’enregistrement courant
Cette propriété mise à jour à chaque déplacement dans le recordset
Exemple
Dim db As Database
Dim tb_clients As Recordset
Dim enregistrement As Variant
'2- Affectation
Set db = CurrentDb()
Set tb_client = db.OpenRecordset("Clients", dbOpenDynaset) tb_client.FindFirst "[Code Client] = 'ANTON'" enregistrement = tb_client.Bookmark
' on se déplace dans les enregistrements … donc le bookmark change
' Pour se repositionner à l'enregistrement ANTON tb_client.Bookmark = enregistrement
Méthodes FindFirst | FindLast | FindNext | FindPrevious
Permet de trouver un enregistrement selon un critère donné utilisation des opérateurs de comparaison, logique, et/ou de l’opérateur LIKE
Exemple
On veut savoir si on a des clients dont le code commence par A
Comment accéder à un champ ?
• En utilisant
Fields :
stocke les différents champs d ’un enregistrement. Chaque champ est représenté par un objet instance de la classe Field
Le nombre de Fields est déterminé par la méthode Count
Remarque : la classe field permet de représenter un champ. On y trouve principalement les propriétés name et value qui renvoie respectivement le nom et la valeur du champ.
Exemple
Dim rs As Recordset rs.Fields("nom_produit") 'valeur du champ nom_produit rs ("nom_produit") 'valeur du champ nom_produit rs.[nom_produit] 'valeur du champ nom_produit rs![nom_produit] 'valeur du champ nom_produit rs.Fields(1) 'valeur du premier champ rs(1) 'valeur du premier champ
Comment afficher la liste des champs de la table "Etudiants" ainsi que le contenu de chaque champ ?
Elle se fait en respectant les étapes suivantes :
1. Utiliser la méthode AddNew du Recordset pour créer un nouvel enregistrement vide et s’y positionner
2. Donner une valeur aux champs (Fields) du Recordset
On peut également passer ces valeurs comme paramètres de la méthode AddNew
3. Utiliser la méthode Update du Recordset pour enregistrer le nouvel enregistrement dans la base
On peut utiliser la méthode CancelUpdate pour annuler la création
Modification d ’enregistrements
1. Se positionner sur l ’enregistrement à modifier
2. Utiliser la méthode Edit
3. Modifier la valeur des champs
4. Utiliser la méthode update
Exemple
1. Se positionner sur l ’enregistrement à supprimer
2. Utiliser la méthode delete
Remarque : l ’enregistrement courant n ’est plus valide … pensez donc à le déplacer (avec MoveNext ou autres)
Supprimer le client dont le Code est ANTON
Tri de données
1. Ouvrir la table ou la requête avec RecordSet
2. Utiliser la méthode Sort
3. Copier le résultat dans une autre RecordSet
Exemple
Trier les clients par ordre décroissant
Dim db As Database
Dim enregistrement, enregistrement_trie As Recordset
Set db = CurrentDb()
Set enregistrement = db.OpenRecordset("select * FROM Clients")
' ou Set enregistrement = db.OpenRecordset("Clients", dbOpenDynaset)
' Attention
' Set enregistrement = db.OpenRecordset("Clients") ne marche pas = "Nom DESC"
Set enregistrement_trie = enregistrement.OpenRecordset(dbOpenDynaset)
Filtre de données
1. Ouvrir la table ou la requête avec RecordSet
2. Utiliser la méthode Filtre
3. Copier le résultat dans une autre RecordSet
Exemple
Trouver les clients dont le nom est IQ2 ou le code postal commence par 21
Dim db As Database
Dim enregistrement, enregistrement_filtre As Recordset
Set db = CurrentDb()
Set enregistrement = db.OpenRecordset("Clients"), dbOpenDynaset) enregistrement.Filter = "[Nom] = 'IQ2' Or [Code Postal] like '21*'" Set enregistrement_filtre = enregistrement.OpenRecordset(dbOpenDynaset)
Jet OLE DB 4.0
Pour les BD Access
SQL Server
Oracle
ODBC Drivers
Pour les sources de données ODBC
OLAP Services
Pour le serveur OLAP Microsoft (Exchange Server)
Simple Provider
Pour les fichiers de texte simples
Microsoft Directory Services
Pour Active Directory sous Windows 2000
Internet Publishing
Pour l'accès aux serveurs Web
DTS packages
Pour les services de conversion de données SQL server
Caractéristiques de OLE DB et ADO
BD, systèmes de messagerie, service d'annuaires, serveurs Web, etc.
Jeux d'enregistrements déconnectés, meilleure gestion des utilisateurs, etc.
Dépend complètement de Microsoft ?
Exécuter Source
Dim nom_variable As [New] ADODB.nom_classe
Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
Permet la connexion à une source de données.
Requête de mise à jour, d'insertion, de suppression, etc.
Exécute une requête et récupère le résultat dans un RecordSet
Dim rs1, rs2 As New ADODB.Recordset
Set rs1 = cn.execute("select [nom Client] from Clients") Closecn.Execute("insert into ma_table values (5, ‘abc’, …)")
Ferme une connexion
cn.close
Set cn = nothing
Souvent avec des paramètres
.CommandText : stocke le texte de la commande
Ex : objet_cmd.CommandText = "select * from Clients" .ActiveConnection : permet de choisir la connexion (donc la base) sur laquelle s’exécutera la
commande
Ex : set objet_cmd.ActiveConnection = cn
La classeCommand
Execute : permet d ’exécuter la commande
Sans paramètre (stockée dans la propriété
CommandText)
– Ex : objet_command.Execute
Avec paramètre – Ex : objet_command.Execute("select * from produits")
Stocke le résultat de l’exécution d’une commande sous forme d’un ensemble de lignes
Seule la ligne courante est visible (Notion de curseur)
Trois possibilités d'instanciation via la méthode Execute de Connection
Dim rs As New ADODB.recordset
setExecute de rs = cn.executeCommand("select [nom Client] from Clients")
Dim cmd As New ADODB.Command cmd.CommandText = "select * from Produits" set cmd.ActiveConnection = cn
Dim rs As New ADODB.recordset
Open de set rsRecordset= cmd.Execute
Dim rs As New ADODB.recordset "select * from Clients", "Base_Clients"
Création d’unRecordset
une_instruction connection_active lock_type
requête sql, nom d’une table, …
une chaîne contenant le DSN
ou une référence à un objet de la classe connection
Une constante qui prend une des valeurs suivantes :
• adLockReadOnly les données ne peuvent pas être modifiées
• adLockPessimisticles enregistrements sont verrouillés dès le début
• adLockOptimisticles enregistrements ne sont verrouillés qu’au moment de l’appel de la méthode update
Optimiser votre application
Réduire la consommation de mémoire
Utilisez le bon type de données
Regroupez les procédures dans les modules
Ne chargez pas les bibliothèques inutiles
Augmenter la vitesse d'exécution
Réduire les portions code
Utilisez les constantes
Accroître la vitesse perçue
Pré-charger et masquer des formulaires
Stocker localement les données dans un cache
Compacter la base
Commentez votre code
VBA est un langage de programmation commun à tous les produits Microsoft
Moyen rapide de développer
Permet d'interagir avec l'environnement Windows
Programmation événementielle
Souris: Déplacement, clique du bouton droit, glisser, déplacer, etc. Clavier: saisie, touche relâchée, etc.
Gestion des fenêtres
Exécution des commandes systèmes
Capable de gérer les erreurs
VBA VB Access
Complètement lié à un des Basic produits Microsoft office
Permet de créer des Ne pourra en aucun cas applications indépendantes s'exécuter de manière autonome.
Version 1 et
Il existe cependant une version "Run time" d'Access,
nommée "Kit Office Développement Environnement 2 d'Access
(Kit ODE)", qui permet de distribuer une application développée sous Access sans avoir à installer Access sur les postes destinés à faire fonctionner cette application.
Espions
Points d’arrêt
Environnement de développement IDE
Exécution d’une procédure
Access comporte deux composants :
Microsoft Jet
Contrôle le stockage des données
Définit les objets de la BD
Le moteur de l’application
Contrôle la programmation
Contrôle l’interface
Comment ça fonctionne ?
Quand vous ouvrez une BD, le moteur de l’application utilise Microsoft Jet pour déterminer les noms des tables, des requêtes, etc.
Il possède les caractéristiques suivantes :
Moteur à 32 bits
Support Unicode
Jeux de caractères à deux octets par caractère
Types de données compatibles avec SQL Server
SQL 92
Verrouillage amélioré des données
Byte
entiers positifs compris entre 0 et 255,
Boolean
True et False,
Integer ou %
entiers entre -32 768 et 32 767,
Currency ou @
valeurs entre -922 337 203 685 477,5808 et 922 337 203 685 477,5807 String ou $
Entre 0 et environ 63 Ko de caractères
Long ou &
entier -2 147 483 648 et 2 147 483 647
Decimal
Single ou !
Double ou #
Date
pour stocker les dates (1/01/100 – 31/12/9999) et les heures
Object
Tous types d'objets,
Variant (Par défaut)
Type de données particulier pouvant contenir des données numériques,
des chaînes ou des dates, des types définis par l'utilisateur ainsi que les valeurs spéciales Empty et Null
Des variables (DIM)
DIM entier as INTEGER
DIM type as Variant
DIM x(10, 25) as Single
REDIM x(10, 40) as INTEGER Des constantes (CONST)
Const PI As Single = 3.14
Des structures de données définies par l’utilisateur
Type Adresse
Numero as Integer
NomRue as String * 30
Ville as String * 50
CodePostal as INTEGER
End TYPE
…..
DIM Adresse_client as Adresse
Function NoteAleatoire() As Single
Dim ValeurAlea As Single
ValeurAlea = Rnd() * 20
NoteAleatoire = Format(ValeurAlea, "0.0")
End Function
Permet de définir des variables privées
Une procédure privée englobe des variables privées
Permet de définir des variables publiques
Permet de (re)définir des variables dont le contenu est non modifiable
Mathématiques
+, -, *, /, ^
<, <, =, <=, >=, <>
AND, OR, NOT, EQV
Instruction IF
IF (a=5) Then
…
Else
…
ENDIF
Instruction IIf(condition, truepart, falsepart)
Instruction GOTO
GoTO Fin
…..
:FIN
Instruction FOR…NEXT
For i=1 to 10
---
Next i Instruction While
While i<=10
---
Wend
Instruction
Do [{While | Until} condition]
[statements]
Loop
Vous pouvez également utiliser la syntaxe suivante :
Do
[statements]
Loop [{While | Until} condition]
Instruction Select Case
Select CASE valeur
Case 0 to 2 ….
Case 3 to 5
…
Case 6
Case ELSE
END SELECT
L’instruction CALL
Transfère le contrôle à une procédure ou à une Fonction (interne ou externe) Call MyProc(0)
Plusieurs méthodes :
NomCollection![Nom de l’Objet]
Ex: Forms![Clients]
NomCollection("Nom de l’Objet")
Ex: Forms("Clients")
NomCollection(Numéro de l’Objet)
Ex: Forms(0) et Forms(Forms.Count-1)
Pour accéder à un sous-object ou à une méthode, on utilise aussi le .
Ex: DBEngine.Workspaces(0).CurrentDB()
On error … ? Génération d'une constante Err
Resume NEXT
Le programme continue sans abandonner
ERL
Err.Number
Contient le code de l’erreur
Error$(Err) ou Err.Description
Donne les détails de ERR
Sur les chaînes
Left (chaîne, taille), Right, Replace, etc.
Arithmétiques
ABS, LOG, EXP, etc.
Commandes
CHDIR, CHDRIVE, DIR£, MKDIR, RMDIR, etc.
Heure/date
Date$, Now, etc.
Affichage
MSGBOX, INPUTBOX$, etc.
Les librairies proposées dans très variées Pour les intégrer dans un module:
Dans l'IDE de Visual Basic
Outils/références
Intégrer seulement les librairies concernées, sinon
Plusieurs librairies sont proposées. Mais Principalement
:
DAO (Data Access Objects)
Interface permettant l'accès aux données qui communique avec Microsoft Jet et des sources de données compatibles ODBC pour se connecter à, récupérer, manipuler et mettre à jour des données et la structure de base de données.
ADO (ActiveX Data Objects)
Interface d'accès aux données qui communique avec des sources de données compatibles OLE DB pour la connexion, la récupération, la manipulation et la mise à jour de données
(Via le Web par exemple ;)
Oracle, SQL server, Access, Sybase, Paradox, etc.
Conçu pour des applications client/serveur Dépend d'un groupe international (et pas de Microsoft ?)
Suppression (de la table Etudiants)
Déclaration (d'une variable qui représente la table Etudiants)
Déclaration (de la requête Clients lyonnais)
Accéder aux enregistrement d'une table
Applicable sur les tables et les requêtes
Trois éléments sont essentiels
Propose plusieurs méthodes :
De positionnement
MoveFirst | MoveNext | MoveLast | MovePrevious | Move n
BOF, EOF
De recherche
FindFirst | FindLast | FindNext | FindPrevious
De manipulation
Delete
Update
Edit
Addnew
Field
Requery (mise-à-jour)
Diverses
Bookmark
RecordCount
Positionnement sur un enregistrement
Propriété Bookmark
Indique l’enregistrement courant
Cette propriété mise à jour à chaque déplacement dans le recordset
Exemple
Dim db As Database
Dim tb_clients As Recordset
Dim enregistrement As Variant
'2- Affectation
Set db = CurrentDb()
Set tb_client = db.OpenRecordset("Clients", dbOpenDynaset) tb_client.FindFirst "[Code Client] = 'ANTON'" enregistrement = tb_client.Bookmark
' on se déplace dans les enregistrements … donc le bookmark change
' Pour se repositionner à l'enregistrement ANTON tb_client.Bookmark = enregistrement
Méthodes FindFirst | FindLast | FindNext | FindPrevious
Permet de trouver un enregistrement selon un critère donné utilisation des opérateurs de comparaison, logique, et/ou de l’opérateur LIKE
Exemple
On veut savoir si on a des clients dont le code commence par A
Comment accéder à un champ ?
• En utilisant
Fields :
stocke les différents champs d ’un enregistrement. Chaque champ est représenté par un objet instance de la classe Field
Le nombre de Fields est déterminé par la méthode Count
Remarque : la classe field permet de représenter un champ. On y trouve principalement les propriétés name et value qui renvoie respectivement le nom et la valeur du champ.
Dim rs As Recordset rs.Fields("nom_produit") 'valeur du champ nom_produit rs ("nom_produit") 'valeur du champ nom_produit rs.[nom_produit] 'valeur du champ nom_produit rs![nom_produit] 'valeur du champ nom_produit rs.Fields(1) 'valeur du premier champ rs(1) 'valeur du premier champ
Comment afficher la liste des champs de la table "Etudiants" ainsi que le contenu de chaque champ ?
Elle se fait en respectant les étapes suivantes :
1. Utiliser la méthode AddNew du Recordset pour créer un nouvel enregistrement vide et s’y positionner
2. Donner une valeur aux champs (Fields) du Recordset
On peut également passer ces valeurs comme paramètres de la méthode AddNew
3. Utiliser la méthode Update du Recordset pour enregistrer le nouvel enregistrement dans la base
On peut utiliser la méthode CancelUpdate pour annuler la création
Modification d ’enregistrements
1. Se positionner sur l ’enregistrement à modifier
2. Utiliser la méthode Edit
3. Modifier la valeur des champs
4. Utiliser la méthode update
Exemple
1. Se positionner sur l ’enregistrement à supprimer
2. Utiliser la méthode delete
Remarque : l ’enregistrement courant n ’est plus valide … pensez donc à le déplacer (avec MoveNext ou autres)
Supprimer le client dont le Code est ANTON
Tri de données
1. Ouvrir la table ou la requête avec RecordSet
2. Utiliser la méthode Sort
3. Copier le résultat dans une autre RecordSet
Exemple
Trier les clients par ordre décroissant
Dim enregistrement, enregistrement_trie As Recordset
Set db = CurrentDb()
Set enregistrement = db.OpenRecordset("select * FROM Clients")
' ou Set enregistrement = db.OpenRecordset("Clients", dbOpenDynaset)
' Attention
' Set enregistrement = db.OpenRecordset("Clients") ne marche pas = "Nom DESC"
Set enregistrement_trie = enregistrement.OpenRecordset(dbOpenDynaset)
Filtre de données
1. Ouvrir la table ou la requête avec RecordSet
2. Utiliser la méthode Filtre
3. Copier le résultat dans une autre RecordSet
Exemple
Trouver les clients dont le nom est IQ2 ou le code postal commence par 21
Dim db As Database
Dim enregistrement, enregistrement_filtre As Recordset
Set db = CurrentDb()
Set enregistrement = db.OpenRecordset("Clients"), dbOpenDynaset) enregistrement.Filter = "[Nom] = 'IQ2' Or [Code Postal] like '21*'" Set enregistrement_filtre = enregistrement.OpenRecordset(dbOpenDynaset)
Jet OLE DB 4.0
Pour les BD Access
SQL Server
Oracle
ODBC Drivers
Pour les sources de données ODBC
OLAP Services
Pour le serveur OLAP Microsoft (Exchange Server)
Simple Provider
Pour les fichiers de texte simples
Microsoft Directory Services
Pour Active Directory sous Windows 2000
Internet Publishing
DTS packages
Pour les services de conversion de données SQL server
Caractéristiques de OLE DB et ADO
BD, systèmes de messagerie, service d'annuaires, serveurs Web, etc.
Jeux d'enregistrements déconnectés, meilleure gestion des utilisateurs, etc.
Dépend complètement de Microsoft ?
Exécuter Source
Dim nom_variable As [New] ADODB.nom_classe
Dim cn As New ADODB.Connection Dim cmd As New ADODB.Command
Dim rst As New ADODB.Recordset
Permet la connexion à une source de données.
Requête de mise à jour, d'insertion, de suppression, etc.
Exécute une requête et récupère le résultat dans un RecordSet
Dim rs1, rs2 As New ADODB.Recordset
Set rs1 = cn.execute("select [nom Client] from Clients") Closecn.Execute("insert into ma_table values (5, ‘abc’, …)")
Ferme une connexion
cn.close
Set cn = nothing
Souvent avec des paramètres
.CommandText : stocke le texte de la commande
Ex : objet_cmd.CommandText = "select * from Clients" .ActiveConnection : permet de choisir la connexion (donc la base) sur laquelle s’exécutera la
commande
Ex : set objet_cmd.ActiveConnection = cn
La classeCommand
Sans paramètre (stockée dans la propriété
CommandText)
– Ex : objet_command.Execute
Avec paramètre – Ex : objet_command.Execute("select * from produits")
Stocke le résultat de l’exécution d’une commande sous forme d’un ensemble de lignes
Seule la ligne courante est visible (Notion de curseur)
Trois possibilités d'instanciation via la méthode Execute de Connection
Dim rs As New ADODB.recordset
setExecute de rs = cn.executeCommand("select [nom Client] from Clients")
Dim cmd As New ADODB.Command cmd.CommandText = "select * from Produits" set cmd.ActiveConnection = cn
Dim rs As New ADODB.recordset
Open de set rsRecordset= cmd.Execute
Dim rs As New ADODB.recordset "select * from Clients", "Base_Clients"
Création d’unRecordset
une_instruction connection_active lock_type
requête sql, nom d’une table, …
une chaîne contenant le DSN
ou une référence à un objet de la classe connection
Une constante qui prend une des valeurs suivantes :
• adLockReadOnly les données ne peuvent pas être modifiées
• adLockPessimisticles enregistrements sont verrouillés dès le début
• adLockOptimisticles enregistrements ne sont verrouillés qu’au moment de l’appel de la méthode update
Optimiser votre application
Réduire la consommation de mémoire
Utilisez le bon type de données
Regroupez les procédures dans les modules
Ne chargez pas les bibliothèques inutiles
Augmenter la vitesse d'exécution
Réduire les portions code
Utilisez les constantes
Pré-charger et masquer des formulaires
Stocker localement les données dans un cache
Compacter la base
Commentez votre code