Calculs dans une table ou requête

alainmante -  
Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour, Bonjour, ACCESS 2003, J'ai beaucoup de calculs à effectuer à partir de contrôles numériques saisis sur un formulaire dans une table. Je peux les faire par des contrôiles calculés sur l'état de sortie ou même sur le formulaire. Mais comment faire pour que ces calculs soient conservés dans une table (ça me paraît impossible), dans une requête, de manière à ce que je n'ai pas chaque fois à poser tous mes contrôles numériques sur l'état, à les rendre invisibles, à effectuer de nouveau des contrôles calculés. Même chose si j'ai besoin de ces résultats de calculs pour inserer un graphique : on ne peut aller les chercher que dans une table ou une requête. Par exemple je saisis dans les contrôles numériques A, B, C, D, E, F, les valeurs a, b,c, d, e, f, qui vont s'enregistrer dans ma table. J'ai besoin du résultat x=a+b+c+d+e+f. Comment faire pour x soit en mémoire quelque part et puisse être rappelé ? Quelle solution ? Merci de votre aide.
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Il faut simplement que les champs contenant les valeurs calculées soient les champs contenus dans une table !
    0
    1. alainmante
       
      Bonjour Jean Pierre, comme vous pouvez le constater je continue sur mes bases ACCESS, et j'essaie au max de me débrouiller en embêtant le moins possible le volontaire que vous êtes. Mais là je coince : d'accord il faut que les champs termes des calcul arithmétiques que je fais soient dans une table, mais le résultat obtenu en faisant leur somme par exemple, je ne peux pas le mettre dans une table ni dans une requête, alors que ça se fait sur un contrôle ou un état sans problème ;
      J’aimerais bien pouvoir disposer des totaux effectués dans les champs calculés dans un champ d’une table ou d’une requête
      • pour les réutiliser ultérieurement pour d’autres calculs sans avoir à réécrire =[]+[] +[] +[] +[] … etc chaque fois puis à rendre les champs de départ invisibles,
      • pour des graphiques (dont les sources ne ses trouvent que dans une table ou une requête) par exemple.
      Merci si vous avez une solution, probablement évidente mais qui m’échappe pour l’instant. Cordialement.
      0
  2. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Mise au point pour :
    J’aimerais bien pouvoir disposer des totaux effectués dans les champs calculés dans un champ d’une table ou d’une requête
    La table contient les données.
    La requête sert à filtrer les données d’une ou plusieurs tables en relation et à réaliser divers calculs selon les besoins.
    Les résultats calculés dans une requête sont disponibles dans le formulaire ainsi que ceux calcules dans le formulaire lui-même.
    Suite.
    Ceci dit, si vous voulez enregistrer les totaux des champs calculés il faut créer les champs correspondant dans une table et les reprendre en plus dans le formulaire et dès que vous valider les données du formulaire c’est la macro qui contient les instructions pour renseigner les champs totaux : exemple d’instruction à mettre avant la commande de fermeture du formulaire (DoCmd.Close acForm, "NomFormulaire", acSaveYes)
    Me.Tot1=Me.Calcul1
    Me.Tot2=Me.Calcul2
    Me.Totx=Me.Calculx
    DoCmd.Close

    Ou via instruction SQL, entrer les données directement dans la table :
    DoCmd.RunSQL UPDATE Table1 SET Table1.Tot1 = Calcul1 WHERE (((Table1.[ID]) = Formulaires]![Nom]![ID]))
    0
    1. alainmante
       
      Bonjour Jean Pierre , j’ai fait ce que vous indiquiez , en introduisant le code ci-dessous sur votre modèle à partir des propriétés du formulaire : Sur fermeture /procédure événementielle, où FFonglets est le nom du formulaire, T1°, T2°, T3°, …les noms des champs dans la table, et Tniv1, Tniv2, Tniv3, …les noms des contrôles indépendanst où s’effectuent mes calculs totaux, mais ça me donne la fenêtre : « erreur d’exécution ‘2501’ L’action Close a été annulée, débogage
      Private Sub Form_Close()
      DoCmd.Close acForm, "FFonglets", acSaveYes
      Me.T1° = Me.Tniv1> en jaune
      Me.T2° = Me.Tniv2
      Me.T3° = Me.Tniv3
      Me.T4° = Me.Tniv4
      Me.T5° = Me.Tniv5
      Me.T6° = Me.Tniv6
      DoCmd.Close
      End Sub
      Je joins la table en compressée, si vous souhaitez y jeter un œil. Merci de ce que vous pourrez me dire.
      0
  3. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Ce n’est pas comme je l’ai indiqué.
    Je dis ceci : dès que vous valider les données du formulaire c’est la macro qui ….
    Donc je suppose que vous avez une commande qui vous permet de VALIDER les données d’une école, avant de passer à l’école suivante, c’est dans le code de cette commande qu’il faut ajouter l’instruction qui suit :
    Me.Tot1=Me.Calcul1
    Me.Tot2=Me.Calcul2
    Me.Totx=Me.Calculx
    Avant l’instruction « DoCmd.Close » si vous l’avez utilisez, car elle ferme le formulaire.

    Le code que vous mentionnez se déclenche lorsque vous fermer le formulaire, ce qui est complètement différent car vous n’aurez que le dernier enregistrement (donc la dernière école) qui sera correct au niveau de vos totaux « Tniv… »

    Si vous n'avez aucune commande pour valider les enregistrements d'une école il faut créer une macro qui se déclenche sur le changement d'enregistrement (pour votre cas = toutes les données d'une école)
    Exemple:
    Private Sub Form_Current()
    Me.Tot1=Me.Calcul1
    Me.Tot2=Me.Calcul2
    ..............
    Me.Totx=Me.Calculx
    End Sub
    0
    1. alainmante
       
      Bonjour et merci de la précision,mais pour valider le contenu du formulaire, enregistrer les données saisies dasn la table, il suffit de passer à l'enregistreemnt suivant avec la flèche en bas à gauche. Or là je ne sais pas comment on peut lier le code au changement d'enregistrement. Syez sympa de me lancer une bouée. Merci.
      0
  4. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour Alain,
    Eh bien, avez vous lu le dernier paragraphe : Si.......
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour Alain,
    Vous devez remplacer votre macro :
    Private Sub Form_Close()
    DoCmd.Close acForm, "FFonglets", acSaveYes
    Me.T1° = Me.Tniv1> en jaune
    Me.T2° = Me.Tniv2
    Me.T3° = Me.Tniv3
    Me.T4° = Me.Tniv4
    Me.T5° = Me.Tniv5
    Me.T6° = Me.Tniv6
    DoCmd.Close
    End Sub


    par celle-ci :
    Private Sub Form_Current()
    Me.T1° = Me.Tniv1
    Me.T2° = Me.Tniv2
    Me.T3° = Me.Tniv3
    Me.T4° = Me.Tniv4
    Me.T5° = Me.Tniv5
    Me.T6° = Me.Tniv6
    End Sub

    0