IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

obtenir un état semestriel et annuel de données trimestriell


Sujet :

Bases de données Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut obtenir un état semestriel et annuel de données trimestriell
    Bonjour tout le monde;

    j'ai developpez une application qui consiste à saisir des données d'un établissement , la clé composé est (Année, periode(1,2,3 et 4 trimestre)et établissement)
    Donc je dois d'abord saisir l'année , la période et l'établissement.
    jusque là tout a été fait , maintenant il me reste d'étblir un état imprimable semestriel et annuel pour chaque établissement , un autre état global semestriel et annuel pour l'ensemble des établissement.
    Donc comment pourrai-je faire la somme de 2 valeurs de deux champs de deux trimestre (Par EXP 1er et 2ème trimestre) pour avoir la valeur du 1er semestre.
    J'ai éssayé en utilisant un requêtte SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    select *
    from pf( la base de données)
    where an=:x (année)
    and code_struct=:y (code de l'érablissement
    and periode in ( '1','2') (entre 1 et 2 trimstre)
    J'ai utilisé un boutton  et un radiogroup dont items (1er semestre ,2 semestre):
     
    procedure Tetat_pf_struct.BitBtn1Click(Sender: TObject);
    begin
     case radiogroup1.ItemIndex of
    0:begin (1 semestre)
     pf_struct.query1.Close;
    pf_struct.query1.params[0].value:= edit1.text;
    pf_struct.query1.params[1].value:= edit2.text;
     pf_struct.query1.open;
    pf_struct.preview;
    end;
    Mon but est de faire la somme de 2 valeurs dont l'une tiré du 1er trimestre l'autre du 2 trimstre en utilisant un QRexpr pour obtenir un état semestriel , faire de la même avec 3 et 4 trimestre (2 semestre) et enfin l'annuel
    Je compte beaucoups sur votre aide car je suis vraiment bloqué.
    Merci d'avance

    Je travaille avec les edits et non les dbedits
    Merci , et je compte sur votre aide car c'est très important pour moi


    [Balise code ajoutée par King Kaiser]

  2. #2
    Membre régulier
    Homme Profil pro
    Chef de projet
    Inscrit en
    Juin 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 101
    Points : 122
    Points
    122
    Par défaut
    Donne-nous la structure de ta table pf, et précise-nous les champs que tu souhaites "sommer".

    Précise également sur quel type de Bd tu travailles (Access, Oracle, SQL-Server, Paradox, etc)

    En fonction de tout ça, on pourra voir s'il faut plus(+) s'orienter SQL ou Delphi.

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Je travaille sur Paradox avec 2 tables
    table1 : Periode, elle contient comme champs code_periode et periode
    qui contient 4 enregistrements
    code_pepriode periode
    01 1er trimestre
    02 2 trimestre
    03 3 trimestre
    04 4 trimestre

    table2 : contient 3 structure

    code_structure structure
    1 structure1
    2 structure2
    3 structure 3
    les champs de la table pf : la clé est composé (An+Code periode+ code structure)

    An(année)-----clé
    code_periode----clé
    code structure---- clé (établissement)
    valeur1
    valeurs2,.........

    Dans la table Pf, j'ai reccuperé les periodes de ta table des periode et les structure de celle des structure.
    les données trimestrielles sont obtenues par un la saisie des valeurs (valeurs1,valeur2,.....)
    donc ce que je veux c'est obtenir un état semestriel donc la valeur1 du 1 trimstre+ la valeur2 du 2 trimestre mais toujours dans la même année et de la même structure, en utilisant un "QRexpr" c'est pour cela j'ai utilisé la
    clause " where code_periode in ('1','2') refference au 1 et 2 trimestre dans la requêtte SQl
    Donc si j'arrive à avoir un état semestriel je pourrai en avoir l'annuel.

  4. #4
    Membre régulier
    Homme Profil pro
    Chef de projet
    Inscrit en
    Juin 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 101
    Points : 122
    Points
    122
    Par défaut
    Citation Envoyé par AFAT
    Dans la table Pf, j'ai reccuperé les periodes de ta table des periode et les structure de celle des structure.
    les données trimestrielles sont obtenues par un la saisie des valeurs (valeurs1,valeur2,.....)
    donc ce que je veux c'est obtenir un état semestriel donc la valeur1 du 1 trimstre+ la valeur2 du 2 trimestre mais toujours dans la même année et de la même structure, en utilisant un "QRexpr" c'est pour cela j'ai utilisé la
    clause " where code_periode in ('1','2') refference au 1 et 2 trimestre dans la requêtte SQl
    Donc si j'arrive à avoir un état semestriel je pourrai en avoir l'annuel.
    Je ne suis pas sûr de bien te comprendre. Tu veux aditionner la valeur 1 du 1er trimestre à la valeur 2 du 2nd trimestre ???

    Ou plutot afficher dans ton rapport la somme des valeurs1 et la somme des valeurs2 pour chaque établissement et chaque année (ou semestre).

    Enfin, dans un cas comme dans l'autre, la solution est coté SQL. Je ne connais pas du tout Paradox, mais je vais te donner une solution en Access. Tu n'auras plus qu'à trouver la conversion en Paradox.
    Tout est basé sur la fonction iif d'Access (case when end pour MS-SQL) ou ??? pour Paradox.
    Que fait cette fonction :
    iif(Condition,resultat1,Resultat2)
    Si Condition est VRAI (bouléen) la fonction retourne resultat1
    Si Condition est FAUX (bouléen) la fonction retourne resultat2

    Dans l'exemple ci-après, la condition est sur le code période.
    Si le code période est "01" ou "02" la fonction retourne la string "1er semestre"
    Sinon (le code période est forcement 03 ou 04) la fonction retourne la string "2nd semestre"
    Le reste (jointure, group by et order by) est du SQL standard...

    J'imagine les structures de tables :
    t_periodes
    Per_Code
    Per_Nom

    t_structures
    Str_Code
    Str_Nom

    t_pf
    pf_An
    Per_Code
    Str_Code
    Valeur1
    Valeur2


    Requête SQL pour un rapport semestriel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     select t_pf.an As Annee, 
            t_Structure.Str_nom As Etablissement, 
            iif((t_pf.Per_code='01' OR t_pf.Per_code='02'),'1er semestre','2nd semestre') as Periode,
            sum(t_pf.Valeur1) as Somme1,
            sum(t_pf.Valeur2) as Somme2
     from t_pf, t_structure
     where (t_pf.Str_code = t_structures.str_Code) and   --/ jointure
           (t_pf.pf_an='2003')                           --/ condition sur l'année 2003 pour tous les établissements par exemple
     group by t_pf.an,
              t_Structure.Str_nom,
              iif((t_pf.Per_code='01' OR t_pf.Per_code='02'),'1er semestre','2nd semestre')
     order by Annee, Etablissement, periode
    Le résultat devrait donner qqchose du genre :
    Annee Etablissement Periode Somme1 Somme2
    ------- --------------- ------------- ----------- ------------
    2003 structure1 1er semestre xxxx,xx xxxxx,xx
    2003 structure1 2nd semestre xxxx,xx xxxxx,xx
    2003 structure2 1er semestre xxxx,xx xxxxx,xx
    2003 structure2 2nd semestre xxxx,xx xxxxx,xx
    2003 structure3 1er semestre xxxx,xx xxxxx,xx
    2003 structure3 2nd semestre xxxx,xx xxxxx,xx

    Ensuite, pour changer le contenu, tu n'as qu'à modifier la 2ème ligne de la clause WHERE


    Requête SQL pour un rapport annuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     select t_pf.an As Annee, 
            t_Structure.Str_nom As Etablissement, 
            sum(t_pf.Valeur1) as Somme1,
            sum(t_pf.Valeur2) as Somme2
     from t_pf, t_structure
     where (t_pf.Str_code = t_structures.str_Code) and   --/ jointure
           (t_pf.str_code='1')                           --/ condition sur l'établissement 1 pour toutes les années par exemple
     group by t_pf.an,
              t_Structure.Str_nom
     order by Annee, Etablissement
    Le résultat devrait donner qqchose du genre :
    Annee Etablissement Somme1 Somme2
    ------- --------------- ----------- ------------
    2000 structure1 xxxx,xx xxxxx,xx
    2001 structure1 xxxx,xx xxxxx,xx
    2002 structure1 xxxx,xx xxxxx,xx
    2003 structure1 xxxx,xx xxxxx,xx
    2004 structure1 xxxx,xx xxxxx,xx

    Ensuite, pour changer le contenu, tu n'as qu'à modifier la 2ème ligne de la clause WHERE
    Ce qui pourrait donner :
    Annee Etablissement Somme1 Somme2
    ------- --------------- ----------- ------------
    2002 structure1 xxxx,xx xxxxx,xx
    2002 structure2 xxxx,xx xxxxx,xx
    2002 structure3 xxxx,xx xxxxx,xx

    ... Si tu filtres uniquement sur l'année 2002 (sans condition sur l'établissement)

    Voila, j'espère avoir été clair. L'objectif pour toi, est donc de trouver la fonction équivalente à iif pour Paradox

Discussions similaires

  1. Obtenir l'adresse mac suivant une IP donnée
    Par arnaudperfect dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 22/05/2008, 14h55
  2. [Débutant] État d'une base de donnée (edit, insert, browse etc)
    Par mystisoft dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/11/2007, 08h44
  3. Réponses: 4
    Dernier message: 22/12/2006, 10h12
  4. Modifier l'État en fonction d'une donnée dans la base
    Par Pyrocyborg dans le forum Access
    Réponses: 1
    Dernier message: 30/06/2006, 18h40
  5. obtenir un état semestriel et annuel de données trimestriell
    Par AFAT dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/10/2004, 21h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo