OVH Cloud OVH Cloud

calcul sur données d'un sous-formulaire

3 réponses
Avatar
Jérôme W.
Bonjour,

je n'arrive pas à utiliser les valeurs d'un sous-formulaire(ici "frm")
autrement qu'en passant par un bouton de commande supplémentaire, puis en
gérant l'évenement on_click() .

exemple :
'------------------------------------
Sub calcul_difference()
On Error GoTo gestErr
lbl.Caption = CStr(([frm]![txt_1]) - ([frm]![txt_2]))
Exit Sub
gestErr:
lbl.Caption = "--"
End Sub
'------------------------------------
Private Sub affiche_resultat()
[ ...traitements...]
frm.Form.RecordSource = sSQL
frm.Requery

calcul_difference
End Sub
'------------------------------------
Private Sub cmd_calcul_diff_Click()
calcul_difference
End Sub
'------------------------------------

==> l'appel de la procédure "calcul_difference" par la procédure
"affiche_resultat" ne change rien. La valeur du label n'est pas modifiée...
==> l'appel de la procédure "calcul_difference" aprés le click sur
"cmd_calcul_diff" fonctionne : mon label affiche la différence entre deux
valeurs du sous formulaire...

Je trouve ce comportement abérrant. Avez vous déjà rencontré ce problème ?
Y a t'il une solution pour effectuer le traitement sans passer par un
"click" ?

Merci de votre aide
Jérôme

3 réponses

Avatar
Raymond [mvp]
Bonjour.

Je trouve ce comportement abérrant.
pas plus abérrant que de faire des calculs et de poser le résultat dans le

label d'une étiquette. Il y a des champs texte plus performant pour ça.

ceci dit, l'appel de contrôles de sous-formulaires dépend de l'endroit d'où
on le demande. il faut trouver un moyen pour appeler tes contrôles avec
toujours la même méthode et être sûr d'être bien positionné.
tu trouveras des conseils sur :
http://access.seneque.free.fr/sous_formulaires.htm
il faudra que tu nous indiques où se trouvent tes fonctions, sur le form
principal ou le sous-formulaire ?


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jérôme W." a écrit dans le message
de news:ul$
Bonjour,

je n'arrive pas à utiliser les valeurs d'un sous-formulaire(ici "frm")
autrement qu'en passant par un bouton de commande supplémentaire, puis en
gérant l'évenement on_click() .

exemple :
'------------------------------------
Sub calcul_difference()
On Error GoTo gestErr
lbl.Caption = CStr(([frm]![txt_1]) - ([frm]![txt_2]))
Exit Sub
gestErr:
lbl.Caption = "--"
End Sub
'------------------------------------
Private Sub affiche_resultat()
[ ...traitements...]
frm.Form.RecordSource = sSQL
frm.Requery

calcul_difference
End Sub
'------------------------------------
Private Sub cmd_calcul_diff_Click()
calcul_difference
End Sub
'------------------------------------

==> l'appel de la procédure "calcul_difference" par la procédure
"affiche_resultat" ne change rien. La valeur du label n'est pas
modifiée...

==> l'appel de la procédure "calcul_difference" aprés le click sur
"cmd_calcul_diff" fonctionne : mon label affiche la différence entre deux
valeurs du sous formulaire...

Je trouve ce comportement abérrant. Avez vous déjà rencontré ce problème ?
Y a t'il une solution pour effectuer le traitement sans passer par un
"click" ?

Merci de votre aide
Jérôme





Avatar
Toutes les fonctions se trouvent sur le formulaire
principal...

Nouveauté :
Le problème ne se produit pas sur winXP + access XP, mais
sur NT4 + Access2000


Jérôme


-----Message d'origine-----
Bonjour.

Je trouve ce comportement abérrant.
pas plus abérrant que de faire des calculs et de poser le

résultat dans le

label d'une étiquette. Il y a des champs texte plus
performant pour ça.


!!
Le résultat est un calcul qui n'a pas à être modifié.
Pourquoi un label serait il inaproprié ?


ceci dit, l'appel de contrôles de sous-formulaires dépend
de l'endroit d'où

on le demande. il faut trouver un moyen pour appeler tes
contrôles avec

toujours la même méthode et être sûr d'être bien
positionné.

tu trouveras des conseils sur :
http://access.seneque.free.fr/sous_formulaires.htm
il faudra que tu nous indiques où se trouvent tes
fonctions, sur le form

principal ou le sous-formulaire ?


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jérôme W." a
écrit dans le message

de news:ul$
Bonjour,

je n'arrive pas à utiliser les valeurs d'un sous-
formulaire(ici "frm")


autrement qu'en passant par un bouton de commande
supplémentaire, puis en


gérant l'évenement on_click() .

exemple :
'------------------------------------
Sub calcul_difference()
On Error GoTo gestErr
lbl.Caption = CStr(([frm]![txt_1]) - ([frm]!
[txt_2]))


Exit Sub
gestErr:
lbl.Caption = "--"
End Sub
'------------------------------------
Private Sub affiche_resultat()
[ ...traitements...]
frm.Form.RecordSource = sSQL
frm.Requery

calcul_difference
End Sub
'------------------------------------
Private Sub cmd_calcul_diff_Click()
calcul_difference
End Sub
'------------------------------------

==> l'appel de la procédure "calcul_difference" par la
procédure


"affiche_resultat" ne change rien. La valeur du label
n'est pas


modifiée...
==> l'appel de la procédure "calcul_difference" aprés
le click sur


"cmd_calcul_diff" fonctionne : mon label affiche la
différence entre deux


valeurs du sous formulaire...

Je trouve ce comportement abérrant. Avez vous déjà
rencontré ce problème ?


Y a t'il une solution pour effectuer le traitement sans
passer par un


"click" ?

Merci de votre aide
Jérôme






.




Avatar
Raymond [mvp]
Je n'ai aucun moyen de controle ni d'investigation sur NT4 et Acc2000.
J'espère que certains autres visiteurs du groupe auront les moyens à leur
disposition.
désoléé.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


a écrit dans le message de
news:b32001c4376a$ee4b9b90$
Toutes les fonctions se trouvent sur le formulaire
principal...

Nouveauté :
Le problème ne se produit pas sur winXP + access XP, mais
sur NT4 + Access2000


Jérôme