Bonjour,
Loin d'être un expert en VBA et SQL, je viens chercher de l'aide pour simplifier mon code au sein d'un formulaire de traitement statistique. L'objectif de celui-ci est de fournir des agrégats en fonction de certains critères. Mon problème est qu'il y a environ 50 agrégats dans mon formulaire.
Pour l'instant, chacun est calculé de façon indépendante (une fonction par agrégat). La fonction en question ressemble à ça :
Code : 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 Public Function CompteSA() As Long Dim R_Cpt As String R_Cpt = "SELECT COUNT (T_IdentiteStructure.IDS) as Result " R_Cpt = R_Cpt & " FROM T_IdentiteStructure,T_CategorieJuridique,T_GrpCJ,T_LienCJ,T_Membre" R_Cpt = R_Cpt & " WHERE T_IdentiteStructure.CodeCJ = T_CategorieJuridique.CodeCJ" R_Cpt = R_Cpt & " AND T_CategorieJuridique.CodeCJ = T_LienCJ.CodeCJ" R_Cpt = R_Cpt & " AND T_LienCJ.CodeGrpCJ = T_GrpCJ.CodeGrpCJ" R_Cpt = R_Cpt & " AND T_GrpCJ.LibGrpCJ = 'SA'" R_Cpt = R_Cpt & " AND T_IdentiteStructure.Membre = T_Membre.CodeM" If cboMembre.Value <> "" Then R_Cpt = R_Cpt & " AND T_IdentiteStructure.Membre=" & cboMembre.Value & "" End If 'Lancement de la requête Dim db As dao.Database: Set db = CurrentDb Dim r As dao.Recordset: Set r = db.OpenRecordset(R_Cpt) If r.RecordCount <> 0 Then result = r![result] Else result = 0 End If r.Close: Set r = Nothing Set db = Nothing 'Affectation du résultat de la requête CompteCJ = result End Function
Ma question :
est-il possible de mettre des variables dans la partie SQL ? par exemple, dans la ligne suivante, est -il possible de changer 'SA' par une variable:
Pour avoir une ligne de type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part R_Cpt = R_Cpt & " AND T_GrpCJ.LibGrpCJ = 'SA'"
Avec dans mon événement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part R_Cpt = R_Cpt & " AND T_GrpCJ.LibGrpCJ = VARIABLE "
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Public VARIABLE AS String Private Sub txtCompteSA_AfterUpdate() VARIABLE = 'SA' Call MAJ_SF End Sub
Partager