IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

jimbolion

Gérer autrement les variables publiques

Noter ce billet
par , 09/01/2016 à 17h11 (1071 Affichages)
Je vais traiter dans cette partie ma façon de gérer une table Paramètres afin de conserver les valeurs au gré du déroulement d'un applicatif.
Vous aurez compris, l'intérêt d'une table Paramètres permet de conserver les valeurs acquises même lorsqu'une erreur est levée par l'applicatif (en effet le contenu des variables globales est alors effacé). Un autre intérêt est de pouvoir visualiser rapidement le contenu de ces dites variables, rien de plus frustrant que de chercher dans le code la valeur d'une variable et l'endroit ou son contenu a été modifié.

Nous allons dans ce post en mode pas à pas apprendre à construire nos premiers outils d'aide au développement.

1. Construction de la table :

Cette entité est composé de deux champs nommés description et valeur. Description défini donc le type de variable alors que valeur décrit son contenu.

Nom : Capture.JPG
Affichages : 105
Taille : 59,9 Ko

2. La partie VBA :

Afin d'utiliser cette table et la nourrir de nos précieuses informations il va nous falloir créer quelques fonctions :

  1. L'insertion des valeurs
  2. La récupération des valeurs
  3. La suppression des valeurs


a) L'insertion des valeurs :

Cette fonction nous permet d'insérer des valeurs dans notre table, ainsi l'insertion d'un ID, d'une clé ou toute autre information nécessitant un archivage pour une utilisation ultérieure. Cette fonction doit également contrôler l'existence d'une clé déjà présente, dans ce cas le type de requête exécutée sera Update et non Insert. Afin de contrôler l'existence d'une clé nous utiliserons la fonction Dcount ici détaillée : https://support.office.com/fr-fr/art...a-11a64acbf3d3

Le code permet d'utiliser cette fonction :

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Function InsertUpdate_Parametre(p_Description As String, p_Valeur As String) As Boolean
'
' Fonction permettant de Mettre à jour un Parametre dans la table T_Parametres
' la fonction détecte la présence de la clé dans ce cas update sinon Insert
' Retourne True si la fonction s'est correctement déroulée
 
On Error GoTo err_InsertUpdate_Parametre
'
' Inserer une nouvelle valeur dans les parametres
'
Dim R_Sql As String
If DCount("Valeur", "T_Parametres", "Description='" & p_Description & "'") = 0 Then
    R_Sql = "INSERT INTO [T_Parametres] " & _
        "(Description, Valeur) " & _
        " VALUES (" & _
        "'" & Nz(p_Description, "") & "', " & _
        "'" & Protected_Quote(Nz(p_Valeur, "")) & "'" & _
        ")"
Else
    '
    ' Modifier le contenu de la variable
    '
    R_Sql = "UPDATE T_Parametres SET T_Parametres.Valeur = '" & Protected_Quote(Nz(p_Valeur, "")) & "' WHERE (((T_Parametres.Description)='" & Nz(p_Description, "") & "'));"
End If
'
CurrentDb.Execute R_Sql, dbFailOnError
InsertUpdate_Parametre = True
Exit Function
err_InsertUpdate_Parametre:
    MsgBox Err.Description & Err.Number
    Exit Function
End Function

Cette fonction exige deux arguments à savoir la clé de description et sa valeur ainsi l'utilisation de cette fonction pourrait s'opérer de la manière suivante :

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
InsertUpdate_Parametre "TVA_Normale",20.6

et l'alimentation dans la table T_Parametres nous fournirait ceci :

Nom : Capture2.JPG
Affichages : 116
Taille : 19,9 Ko

Il est à noter que la fonction retourne True si l'opération s'est correctement déroulée, l'utilisation du retour permettant d'anticiper certaines actions ou avertir l'utilisateur. La fonction Protected_Quote utilisée gère la présence de quotes dans la chaîne de caractère entraînant les erreurs d'interprétation de la requête.

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Function Protected_Quote(ChaineProtect As String) As String
'
' Fonction de protection visant à protéger les simple quotes et doublequotes dans les requetes SQL
'
Protected_Quote = Replace(ChaineProtect, "'", "''")
Protected_Quote = Replace(Protected_Quote, Chr(34), Chr(34) & Chr(34))
End Function

b) Récupérer une valeur :

Lorsque les clés ont été enregistrées dans la base, une fonction permet de récupérer sa valeur ainsi le code suivant répond à cette problématique :

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Function Get_Parametre(p_Description As String) As String
    '
    ' Fonction permettant de retourner un Parametre depuis la table T_Parametres
    ' Retourne une chaine vide si aucune occurence détectée
    '
    Get_Parametre = Nz(DLookup("Valeur", "T_Parametres", "Description='" & p_Description & "'"), "")
End Function

Nous avons ici utilisé une fonction de domaine et principalement Dlookup. Je vous conseille la lecture de ce tutoriel afin de vous familiariser avec ces fonctions :

Les fonctions de domaines dans Access

A noter que si aucun valeur n'est trouvée dans la table, la fonction renvoie une chaîne vide.

un exemple d'utilisation :

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
msgbox "Le taux de TVA est : " & Get_Parametre("TVA_Normale")

c) La suppression d'une valeur :

Il peut être utile de supprimer une clé dans la table, voire éventuellement la totalité des entrées. L'implémentation de ce code répond donc à cette situation :

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Function Del_Parametre(Optional p_Description As String) As Boolean
    '
    ' Fonction permettant de supprimer un Parametre dans la table T_Parametres
    ' Retourne True si la fonction s'est correctement déroulée
    '
    Dim R_Sql As String
    On Error GoTo err_Del_Parametre
    Select Case Nz(p_Description, "")
    Case ""
 
        R_Sql = "DELETE T_Parametres.Description FROM T_Parametres;"
    Case Else
        R_Sql = "DELETE T_Parametres.Description FROM T_Parametres WHERE (((T_Parametres.Description)='" & p_Description & "'));"
    End Select
    CurrentDb.Execute R_Sql, dbFailOnError
    Del_Parametre = True
    Exit Function
err_Del_Parametre:
    MsgBox Err.Description & Err.Number
    Exit Function
End Function

Il est à noter que le retour de la fonction renvoie True si elle s'est correctement déroulée. Nous remarquerons que l'argument Optional n'implique pas nécessairement la présence d'une valeur dans l'appel de la fonction. Si aucun argument n'est renseigné, cela nous permettra de vider le contenu complet de la table. Quelques exemples d'appel ci-dessous :

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Del_Parametre "TVA_Normale" ' efface l'entrée Taux de tva
Del_Parametre               ' Efface toutes les entrées de la table



JimBolion

Envoyer le billet « Gérer autrement les variables publiques » dans le blog Viadeo Envoyer le billet « Gérer autrement les variables publiques » dans le blog Twitter Envoyer le billet « Gérer autrement les variables publiques » dans le blog Google Envoyer le billet « Gérer autrement les variables publiques » dans le blog Facebook Envoyer le billet « Gérer autrement les variables publiques » dans le blog Digg Envoyer le billet « Gérer autrement les variables publiques » dans le blog Delicious Envoyer le billet « Gérer autrement les variables publiques » dans le blog MySpace Envoyer le billet « Gérer autrement les variables publiques » dans le blog Yahoo

Mis à jour 24/04/2016 à 20h51 par LittleWhite (Coloration code)

Catégories
Sans catégorie

Commentaires