optimiser code sql access par boucle sur tous les chkbox
Bonjour à tous,
je cherche à rendre plus clair un code que j'ai rélisé mais qui devient difficile à maintenir compte tenu du nombre de chkbox qui me permettent de contruire ma requête sql.
J'ai deux catégories de chkbox, l'une préfixée chk_rg, l'autre chk_st.
Les premières servent à sélectionnés mes champs en select et group by, les secondes servent à réaliser des statistiques, sont donc en select et sont des champs calculés.
Chacun de ces champs est donc une formule de calcul qui lui est propre.
Le code que je cherche à réaliser est (plus qu') inspiré d'une FAQ access prise sur le site et donne quelques chose comme ceci :
Code:
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
|
Dim ctl as control
Dim nbChoixRgpt as integer
for each ctl in Me.controls
select case left (ctl.name,6)
case "chk_rg"
if ctl.name.value =1 then
nbChoixRgpt = nbChoirRgpt +1
if nbChoixRgpt > 1 then
strChamps = StrChamps & ", "
strGroup = strGroup & ", "
End if
strchamps = strChamps & "Formule propre à mon ctl.name"
strGroup = strGroup & "Autre formule propre à mon même ctl.name"
End if
Case "chk_st"
traitement approximativement similaire
End Select
Next ctl |
Je viens de taper ceci à main levée et n'ai encore rien testé sous access mais déjà deux questions me posent problème :
Est-ce que je peux programmer un ctl.name.value ?
Comment faire en sorte de paramétrer et récupérer des formules propres à chacun de mes chkbox ?
Si quelqu'un pouvait me donner la main...
Merci par avance
TF
Erreur 94, utilisation de la valeur Null
Salut DMBoup et merci bcp pour ton aide.
Ce qui se conçoit bien s'énonce clairement et c'est vrai qu'une fois, dis, cela paraît tellement évident !!!
J'ai donc créé une table tbl_formula en bdd avec trois champs control_name, strFormula_rg et strFormula_st.
J'utilise en code la formule Dlookup pour récupérer mes formules en table selon le ctl.Name de la chkbox concernée.
Mais là, j'ai un msg d'erreur 94 pour utilisation incorrecte de la valeur Null.
J'ai essayé d'y remédier par le Nz mais sans succès.
Est-ce que tu verrais ce qui cloche dans mon code stp ?
Code:
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 33 34 35 36 37 38
| For Each ctl In Me.Controls
Select Case Left(ctl.Name, 6)
Case "chk_rg"
If ctl.Value = -1 Then
nbChoixRgpt = nbChoixRgpt + 1
If nbChoixRgpt > 1 Then
strChamps = strChamps & ", "
strGroup = strGroup & ", "
End If
strCtlName = ctl.Name
strFormularg = DLookup("[strFormula_rg]", "[tbl_formula]", "[tbl_formula]![control_name] = 'strCtlName'")
strFormulast = DLookup("[strFormula_st]", "[tbl_formula]", "[tbl_formula]![control_name] = 'strCtlName'")
strChamps = strChamps & strFormularg
strGroup = strGroup & strFormulast
End If
Case "chk_st"
If ctl.Value = -1 Then
nbChoixStat = nbChoixStat + 1
If nbChoixStat > 0 Then
strChamps = strChamps & ", "
End If
strCtlName = ctl.Name
strFormulast = DLookup("[strFormula_st]", "[tbl_formula]", "[tbl_formula]![control_name] = 'strCtlName'")
strChamps = strChamps & strFormulast
End If
End Select
Next ctl |
Merci de ton aide
TF