VBRemarqueGlobale

Variables systèmes

StDBName() Renvoie le chemin et le nom de la base de données en cours
Maintenant()

Now()

Date()

Renvoie la date-système
=[Nom] Champ nom de l'objet en cours (Etat ou formulaire)

Dans le cas ou on voudrait le champ Nom d'une table, il faudrait écrire =![Nom]

=Utilisateur()

CurrentUser()

Utilisateur en cours (Admin par exemple)

Opérateurs mathématiques et logiques

EQV

Renvoie Vrai si les 2 opérateurs sont identiques

Exemple :

X = (3>4) EQV (5>14)

renvoie Vrai

0 0 Vrai
0 1 Faux
1 0 Faux
1 1 Vrai

Empêcher la visualisation de l'exécution du code

Pour empêcher les différents affichages lors de l'exécution d'un module, il faut mettre au début du module

DoCmd Echo False, "Veuillez patienter"

et à la fin :

DoCmd Echo True

ATTENTION : Si dans le module, il y a des interactions prévues par l'utilisateur, ça peut planter la machine.

Forcer la déclaration des variables

Option Explicit

Doit être placé dans la section Déclaration du Module

Exécution de code dans un module

Il est possible d'exécuter du code de module (module à part, pas dans un formulaire) sans avoir besoin de l'assigner à un événement quelconque . Il suffit de presser F5

Création de ses propres collections

Une collection personnalisée remplace avantageusement un tableau. Attention : Contrairement aux collections prédéfinies dont le premier indice est 0, dans le cas de collections personnalisées, le premier Indice est 1.

Exemple

Dim x

Déclaration de la nouvelle collection personnalisée :

Dim Col As New Collection

Remplissage de la collection avec 3 éléments :

Col.Add "Dieu"

Col.Add "GrandMaitre"

Col.Add "Homme"

Remplissage du dernier élément que l'on voudrait placer en 3ème position (après le 2ème), et qui va donc repousser le dernier (on aurait pu utiliser la méthode Before):

Col.Add "Maitre", After:=2

Affichage de tous les éléments de la collection grâce à la méthode Count :

For x = 1 To Col.Count

MsgBox Col(x)

Next

Chaque élément doit être représenté par son indice. La ligne suivante renvoie une erreur :

MsgBox Col("Dieu")

Et maintenant on retire chaque élément grâce à la méthode Remove :

For x = 1 To Col.Count

Col.Remove (1)

Next

Cette dernière ligne renvoie donc un message d'erreur, car la collection est vide :

MsgBox Col(1)

Exécuter quelque chose dans un menu

Utiliser DoCmd.RunCommand

Assistant de saisie semi-automatique

Les deux écritutes suivantes renvoient le même résultat, mais dans le cas de la première écriture, l'assistant de saisie semi-automatique ne se met pas en marche, et il faut deviner que la propriété ControlType est disponible.

MsgBox Me("IDPersonne").ControlType

MsgBox Me.IDPersonne.ControlType

Comparaison Case-Sensitive ou pas

Pour que les éléments de ce module puissent comparer des chaînes de texte en différenciant les majuscules des minuscules, il faut mettre dans la section des déclarations :

Option Compare Binary

Le trait de soulignement

Access 95

Lors d'une longue ligne de commande, il est possible de la couper en ajoutant un trait de soulignement à la fin de chaque ligne coupée

Arrêts du code

Il existe plusieurs méthode de mettre fin à un processus :

End

DoCmd.Quit

Sort carrément d'Access
Exit Sub Sort de la routine en cours
Stop Arrête la procédure comme s'il y avait eu une erreur

Mettre des guillemets entre guillemets

Pour installer des guillemets à afficher dans une chaîne de caractères, il faut les tripler (et Access Basic va les quadrupler de lui-même, comme ceci :

MsgBox """ & "Message" & """

Emettre un bip sonore

Emet un bip

MsgBox et InputBox

MsgBox

Il est possible de décomposer le message d'un MsgBox avec le @, comme ceci

MsgBox "Un@Deux@Trois@Quatre"

Un Titre, en gras
Deux Normal, 2 lignes plus bas
Trois Dernière partie, normal, encore 2 lignes plus bas
Quatre Message non imprimé

InputBox

permet d'afficher une boîte de dialogue avec :

Exemple :

Retour = Chr(13) & Chr(10)

Invite = "Texte d'invitation" & Retour & "Bonjour"

Resultat = InputBox(Invite, "Texte du titre", "Texte par défaut", DistanceBordGauche, DistanceBordHaut)

MsgBox Resultat

Comptage et somme d'enregistrements

Fonctions qui permettent de compter les enregistrements (DCOUNT) ou de faire la somme de certains champs de certains enregistrements. Un exemple est donnée dans la base

Exemple :

Me![TXTSomme] = DSum("[Age]", "T_Client", "[Age] > 1 and [Age] < 100")

Me![TXTCompte] = DCount("[IDClient]", "T_Client", "[Age] > 1 and [Age] < 100")

Paramètre 1 : Champ qui va être inspecté dans ...

Paramètre 2 : cette table ou requête avec...

Paramètre 3 : ces critères facultatifs.

ATTENTION : J'ai essayé d'utiliser une date dans un critère de DCount, je n'y arrive pas simplement. Il est nécessaire de séparer le jour du mois de l'année par des tirets au lieu de points, comme ceci :

DCount("[IDClient]", "T_ClientAbonnement", "[IDClient] = " & Me![IDClient] & " And [DateAbonnementFin] > " & Day(Date) & "-" & Month(Date) & "-" & Year(Date))

Division

Afin d'obtenir un nombre systématiquement entier comme résultat d'une division, Il suffit de remplacer le / par \

Assignation de variables objets

Permet d'assigner un alias à un nom de contrôle : SET NomContrôle = Personnalisé. Avant de l'utiliser, il faut la déclarer comme ceci : Dim NomContrôle As Control

Exemple :

Dim truc As Control

Set truc = Me![NomArticle]

truc.backcolor = 255

Connaître le type des données

VARIANT : Il est possible de connaître le type d'une donnée variant grâce à la fonction VARTYPE. Le résultat de cette fonction est :

0 Vide V_EMPTY
1 Null V_NULL
2 Integer V_INTEGER
3 Long V_LONG
4 Single V_SINGLE
5 Double V_DOUBLE
6 Currency V_CURRENCY
7 Date V_DATE
8 String V_STRING