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 04/07/2011, 16h53   #1
Membre du Club
 
beauchat symba
Inscription : janvier 2010
Messages : 95
Détails du profil
Informations personnelles :
Nom : beauchat symba

Informations forums :
Inscription : janvier 2010
Messages : 95
Points : 50
Points : 50
Par défaut Total Lignes s/s Formulaire Affichage qui disparait

Bonjour à tous
J'ai
1) une Table Devis où je stocke le champHTDevis Réel Double
2) une Table LignesDevis
Un Formulaire: Devis et un s/s Formulaire Continu: LignesDevis
la relation qui lie les 2 tables :K_N°Devis

J'ai un champTotalLignes dans le pieds du s/s formulaire qui me donne le Total des Lignes du s/s formulaire
Je récupère ce champTotalLignes pour le stocké dans la Table Devis
champHTDevis=champTotalLignes
Tout beigne nickel jusque là...
Mes tests sont Tip Top

Puis...pour voir
Je fais un test sur 55 lignes avec la valeur 1
Mon champTotalLignes affiche bien 55 dans le pied du s/s formulaire
Mes 55 lignes sont bien présentes dans la Table des Lignes
Mais j'ai plus rien dans ma table Devis: le champHTDevis est à 0
Alors je fais une msgbox pour me renvoyer le champTotalLignes et bizarre j'ai rien dans la msgbox

Quelqu'un a t-il déjà eu ce genre de truc ?
symbabeauchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2011, 22h10   #2
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
hello
c'est vraisemblablement un problème de timing: quand le champ champHTDevis est affiché, le champTotalLignes n'est pas encore calculé

ensuite ta formule ne stocke pas le total dans la table des entêtes mais ne fais qu'afficher la case du pied de sousformulaire

pour faire ta récupération, je te conseille:
- dans l'entête, utiliser champHTDevis comme source
- sur un évènement (bouton j'ai fini ou champTotalLignes_sortie) ta petite formule en VB champHTDevis=champTotalLignes
qui à ce moment là, est une affectation
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 00h00   #3
Membre du Club
 
beauchat symba
Inscription : janvier 2010
Messages : 95
Détails du profil
Informations personnelles :
Nom : beauchat symba

Informations forums :
Inscription : janvier 2010
Messages : 95
Points : 50
Points : 50
Par défaut Problème de Timing ?

Merci Simplifi
mais je ne crois pas à un pb de Timing car mon champ calculé champTotalHT
m'affiche bien 55 dans le pied du s/s formulaire
Donc la calcul se fait bien

Mais quand je veux afficher ce calcul dans une msgbox piège (qui me renvoie bien d'habitude le calcul champTotalHT) j'ai rien,nada
Conclusion :
j'ai 55 lignes avec pour valeur 1 à chaque ligne
un champ calculé qui m'affiche bien la somme :55
Une msgbox qui me est supposée me renvoyer ce champTotlHT :55
et qui me renvoie rien
(pourtant, ça marche avec des valeur bien supérieures)
Je suis à cours d'idées
symbabeauchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 08h21   #4
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello
as tu essayé avec Me.LignesDevis.champTotalLignes ?
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h39   #5
Membre du Club
 
beauchat symba
Inscription : janvier 2010
Messages : 95
Détails du profil
Informations personnelles :
Nom : beauchat symba

Informations forums :
Inscription : janvier 2010
Messages : 95
Points : 50
Points : 50
Par défaut Impossible d'afficher le Total pied de sous formulaire dans une msgbox

Merci SimplifI
Je rame depuis ce matin
Je veux afficher dans une Msgbox un Total (champ calculé dans le pied d'un sous-formulaire)
Je précise que ce Total est bien visible dans le pied de sous-formulaire
Si il y a 6 enregistrements dans le sous-formulaire la Msgbox m'affiche bien le Total avec 13 chiffres après la virgule
Si il y a 7 enregistrements la MsgBox n'affiche plus rien
symbabeauchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/07/2011, 17h54   #6
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
hello
vu comme ça, à distance je ne sais pas t'en dire plus. essaye de poster un extrait de ta base (en zip)
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 11h48   #7
Membre du Club
 
beauchat symba
Inscription : janvier 2010
Messages : 95
Détails du profil
Informations personnelles :
Nom : beauchat symba

Informations forums :
Inscription : janvier 2010
Messages : 95
Points : 50
Points : 50
Par défaut finalement peut être un pb de Timing

Bonjour Simplifi et à la communauté
Bon j'ai créer une base toute simple pour reproduire la mécanique de mon PB:

T_Devis
K_NumDevis(compteur)
Nom
DateDevis
HTDevis (réel double)

T_DevisLignes
K_DevisLignes(Compteur)
K_NumDevis(EntierLong)Liaison
Description
Qté (réel double)
Pu (réel double)

R_Devis (Requête sur T_Devis)
R_DevisLignes (Requête sur R_Devis & T_DevisLignes)

F_Devis Alimenté par R_Devis

F_sousFormulaire
Alimenté par R_DevisLignes
qui me fait le calcul sousTotalLigne:[Qté]*[Pu]
et un dans le pied TotalLignes =Somme(sousTotalLigne)

J'incruste le sous formulaire dans le Formulaire
Champs père&Fils K_NumDevis

Dans le pied du Formulaire je pose :
1) champ zdtTotalLignes =[F_sousFormulaire].[Formulaire]![TotalLignes]
(j'écris bien la propriété .[Formulaire] comme ceci.Form mais Access la corrige sans me demander mon avis )
2) le champ HTDevis
3) un bouton d'assignation
HTDevis=zdtTotalLignes
symbabeauchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 12h11   #8
Membre du Club
 
beauchat symba
Inscription : janvier 2010
Messages : 95
Détails du profil
Informations personnelles :
Nom : beauchat symba

Informations forums :
Inscription : janvier 2010
Messages : 95
Points : 50
Points : 50
Par défaut suite

Bonjour Simplifi et à la communauté
Bon j'ai créer une base toute simple pour reproduire la mécanique de mon PB:

T_Devis
K_NumDevis(compteur)
Nom
DateDevis
HTDevis (réel double)

T_DevisLignes
K_DevisLignes(Compteur)
K_NumDevis(EntierLong)Liaison
Description
Qté (réel double)
Pu (réel double)

R_Devis (Requête sur T_Devis)
R_DevisLignes (Requête sur R_Devis & T_DevisLignes)

F_Devis Alimenté par R_Devis

F_sousFormulaire

Alimenté par R_DevisLignes
qui me fait le calcul sousTotalLigne:[Qté]*[Pu]
et un dans le pied TotalLignes =Somme(sousTotalLigne)


J'incruste le sous formulaire dans le Formulaire
Champs père&Fils K_NumDevis

Dans le pied du Formulaire je pose :
1) champ zdtTotalLignes =[F_sousFormulaire].[Formulaire]![TotalLignes]
(j'écris bien la propriété .[Formulaire] comme ceci.Form mais Access la corrige sans me demander mon avis )
2) le champ HTDevis
3) un bouton d'assignation
Me.Recalc
Me.HTDevis=Me.zdtTotalLignes


Si j'ai quelques Enregistrements ça marche bien
Si j'en ai disons une douzaine c'est un 0 qui est envoyer à HTDevis et seulement aprés le calcul s'affiche bien dans zdtTotalLignes
Conclusion: c'est bien un Pb de Timing
mais comment le résoudre ???????
Eh oui Simplifi tu avais vu juste dés le début !
symbabeauchat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/07/2011, 23h45   #9
Membre Expert
 
Homme Jacques Petiot
Indépendant développeur et formateur
Inscription : octobre 2007
Messages : 891
Détails du profil
Informations personnelles :
Nom : Homme Jacques Petiot
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Indépendant développeur et formateur
Secteur : Conseil

Informations forums :
Inscription : octobre 2007
Messages : 891
Points : 1 333
Points : 1 333
Hello
je fais la même chose que toi en bas de mes devis, commande BL, Factures avec un bouton qui s'appelle j'ai fini (je veux faire la somme dont voici le VB
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DoCmd.GoToRecord , , acNewRec
If Forms!Factures!Montant_HT > 0 Then
    'on ne fait rien, il y a déja quelquechose dans la case
Else
    Forms!Factures!Montant_HT = DSum("prix_ligne_ht", "Détail_facture", "N°Fact=forms!factures!N°facture")
    Forms!Factures!Montant_TVA = DSum("Val_TVA", "Détail_facture", "N°Fact=forms!factures!N°facture")
    Forms!Factures!Montant_TTC = DSum("prix_ligne_TTC ", "Détail_facture", "N°Fact=forms!factures!N°facture")
    taux_premier = DFirst("Tx_TVA", "Détail_facture", "N°Fact=forms!factures!N°facture")
    taux_moyen = DAvg("Tx_TVA", "Détail_facture", "N°Fact=forms!factures!N°facture")
    If Abs(taux_premier - taux_moyen) < 0.000001 Then
        Forms!Factures!Taux_TVA = taux_moyen
        Forms!Factures!TVA_biz = ""
    Else
        Forms!Factures!Taux_TVA = ""
    End If
End If
Forms!Factures!Montant_HT.SetFocus
End Sub
la base complète est librement accessible sur http://dl.free.fr/bD0fJMf7f
__________________
-------------------Simplifi----------comme si tout était simple--------
Simplifi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2011, 10h56   #10
Membre du Club
 
beauchat symba
Inscription : janvier 2010
Messages : 95
Détails du profil
Informations personnelles :
Nom : beauchat symba

Informations forums :
Inscription : janvier 2010
Messages : 95
Points : 50
Points : 50
Par défaut Ma solution

Merci Simplifi pour ton ton code !
Entre temps voici ce que j'ai trouvé
J'avais bien dés le début appliqué un Recalc surChangement pour les champs Qté et Pu mais mon curseur était renvoyé à chaque fois en haut de mon sousFormulaire (ce qui n'est pas normal car Recalc ne doit pas faire ça)
et puis pas du tout convivial d'avoir à se replacer à chaque changement !

En fait c'est parce-que je j'ouvrais mon FormulairePrincipal à partir d'une liste de Devis avec un Bouton doter d'un linkcriteria (clause where).

J'ai donc supprimer la clause where et utiliser un OpenArgs pour l'ouverture de mon FormulairePrincipal (j'ai transformer la requête qui alimente mon Devis en Requête Param,-en critères sur K_NumDevis j'ai placer le code :[Forms]![FormulairePrincipal].[OpenArgs])

Et voilà mon curseur ne saute plus
L'assignation sur Unload du FormulairePrincipal: HTDevis=TotalHT des Lignes du devis se fait TipTop

L'opérateur peut même fermer le Formulaire sans avoir valider le petit crayon
de la Ligne Devis le changement est quand même pris en compte

Ouf!
symbabeauchat 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 23h19.


 
 
 
 
Partenaires

Hébergement Web