Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2010, 23h00   #1
Invité de passage
 
Eric
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : Eric

Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 3
Points : 3
Par défaut Accès à un contrôle dans un formulaire continu

Bonjour,

je suis novice dans l'utilisation d'accès et ma question va peut-être paraître bête ... mais je cherche depuis un moment sur ce site sans trouver.

Je cherche à afficher une somme dans un formulaire continu.
La version formulaire simple fonctionne parfaitement. J'effectue le calcul en VBA avec une requête SQL puis j'affecte le résultat à un contrôle indépendant.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  Dim oDb As DAO.Database
    Dim oRst As DAO.Recordset
    Dim ma_var As String
    Dim mon_sql As String
 
    Set oDb = CurrentDb
    Set oRst = Nothing
 
    ' récupération de la somme des paiements
    ' construction de la requête
    mon_sql = "SELECT Sum(Paiement.Montant) FROM Paiement" & " WHERE (([Paiement]![N° abonnement]=" & Me.N°.Value & "));"
    ' excéution de la requête
    Set oRst = oDb.OpenRecordset(mon_sql, dbOpenSnapshot)
    ' affectation des résultats
    ma_var = oRst.Fields(0)
    Me.Texte30.ControlSource = "=" & ma_var
 
    'Nous fermons les connexions
    oRst.Close
    oDb.Close
    Set oDb = Nothing
    Set oRst = Nothing
Lorsque je passe en fomulaire continu, évidemment, il me met à jour tous mes contrôles "Texte30" car ils ne sont pas liés à un enregistrement ... je ne sais pas comment accéder à l'instance x de ce contrôle; je ne sais même pas si c'est possible.

Si c'est possible : il doit y avoir une syntaxe qui m'échappe
Si c'est impossible : doit-on passer directement par un champ calculé dans la table source ?

Merci de votre aide

Eric.
efilippi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 09h25   #2
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 936
Points : 7 936
bjr,

pour un formulaire continu il faut rendre la textbox dépendante en utilisant une fonction dans la source du contrôle (avec un champ en paramètre)
c'est le retour de cette fonction qui donne la valeur du contrôle

fonction dans le code du formulaire :
Code :
1
2
3
public function CalculSomme(pId as long) as long
   CalculSomme = xxxxxx
end function
source du contrôle :
ou alors mettre directement un calcul dans la source du contrôle avec une fonction intégrée si l'une d'entre elles convient (bouton droit dans Source contrôle=> créer => fonctions intégrées => regroupement de domaine)

source du contrôle (à peu près, pas testé) :
Code :
=SomDom("Montant";"Paiement";"N° abonnement=" & [])
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/12/2010, 13h39   #3
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 204
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 204
Points : 5 255
Points : 5 255
Bonjour,

Je comprends mieux, quand tu parles d'instances de contrôles c'est en fait, une instance par ligne (ou par enregistrement) dans 1 formulaire continu ?

Edit: J'ai supprimé mon ancien message qui n'avait pas trop de rapport
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 10h26   #4
Invité de passage
 
Eric
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : Eric

Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 3
Points : 3
Citation:
Envoyé par User Voir le message
Bonjour,
Je comprends mieux, quand tu parles d'instances de contrôles c'est en fait, une instance par ligne (ou par enregistrement) dans 1 formulaire continu ?
Bonjour,

Merci pour vos réponses.

oui c'est bien ça, il s'agit d'afficher une instance du calcul par ligne (ou par enrgegistrement).
Je viens de tester en mettant à jour un champ appartenant à la table source avec le résultat de mon calcul, et ça a l'air de fonctionner : chaque ligne du formulaire continu affiche bien le résultat du calcul pour l'enregistrement correspondant.

Mais je ne trouve pas ça très pratique car ça oblige à créer un champ de plus dans la table pour chaque calcul alors que je n'ai pas besoin d'en stocker le résultat.

Pour l'instant cette solution me convient, mais je pense qu'il doit y avoir une solution plus "propre" qui m'échappe encore.
efilippi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 16h43   #5
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,
Citation:
Mais je ne trouve pas ça très pratique car ça oblige à créer un champ de plus dans la table pour chaque calcul alors que je n'ai pas besoin d'en stocker le résultat.

Pour l'instant cette solution me convient, mais je pense qu'il doit y avoir une solution plus "propre" qui m'échappe encore.

Ne comprends-tu pas ce que Arkham46 t'explique ?
C'est "la" solution bien propre.
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources !
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/01/2011, 19h48   #6
Invité de passage
 
Eric
Inscription : décembre 2010
Messages : 9
Détails du profil
Informations personnelles :
Nom : Eric

Informations forums :
Inscription : décembre 2010
Messages : 9
Points : 3
Points : 3
Bonjour ClaudeLELOUP,

oui effectivement, j'avais mal interprété la réponse de "User".

La solution de Arkham46 marche parfaitement. MERCI ! C'est exactement ce qu'il me fallait.

efilippi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h18.


 
 
 
 
Partenaires

Hébergement Web