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 :

[Access] Calcul sur les dates


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut [Access] Calcul sur les dates
    bj a tous j'ai une app delphi BDD Access qui contient un cinq champ (hono, depense, totalH, TotalD, TotalG) j'ai fais des requete pour calculer les champs hono et Depense ça marche bien mais quand je voudrai savoir comment faire pour faire ce calcule en précisnat une date dans le DateTimePicker, ou bien de DAteTime Picker , genr (du...... au.......); et aussi pour filtrer les champs avec des date ?
    merci a tous

  2. #2
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Dans ta requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE MADATE BETWEEN :DateDebut AND :DateFin
    et dans ton code, tu passes les valeurs aux paramètres :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ParamByName ('DateDebut') .AsDateTime := DateTimePickerDebut .Date;
    Roland

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    Slt et merci pour ta réponse mais peux tu m'espliquer qq chose
    pk dois je mettre paramByName je ne stocker pas les dates dans la base de donnée, ou alors je n'ai rien pigé.
    merci encore

  4. #4
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Je pensais que tu avais oublié de mentionner les champs Date de ta base. Mais si vraiment si tu ne stockes pas les dates dans la base, comment veux-tu filtrer sur les dates
    Roland

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    désolé oui je stock la date d'insertion je viens d'essayer le code me renvoi un résultat 0 et quadn j'essayes le ParamByName il me dit non déclaré, alors stp si tu peux me donner plus de précision, voici le code
    pour l'insertion des données:
    DM.ACaisse.Insert;
    DM.ACaisse.FieldByName('dateJ').AsDateTime:=Date;
    DM.ACaisse.Post;

    et pour le calcule:
    with DM.ACaisse do
    begin
    Close;
    with SQL do
    begin
    Clear;
    Add('SELECT SUM(Hono) as TotalH, SUM(Depenses) as TotalD From Recette where DateJ BETWEENDebut AND Fin');
    Open;
    end;
    Edit3.Text:=FloatToStr(DM.ACaisse.FieldByName('TotalH').AsCurrency);
    Label7.Text:=FloatToStr(DM.ACaisse.FieldByName('TotalD').AsCurrency);
    Label8.Text:=FloatToStr(StrtoFloat(Edit3.Text)-StrToFloat(label7.Text));

    NB: si je n'utilise pas le filtrage de date il calcule bien
    alors si tu peux voir ce qui cloche dans ce code
    merci

  6. #6
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Ca devrait marcher comme ça : il faut :
    1° Spécifier les paramètres dans ta requête.
    2° Leur passer une valeur avant l'exécution.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ....
    Add('SELECT SUM(Hono) as TotalH, SUM(Depenses) as TotalD From Recette where DateJ BETWEEN :DDebut AND :DFin');
    ParamByName ('DDebut') .AsDateTime := DtPickerDebut .Date;
    ParamByName ('DFin') .AsDateTime := DtPickerFin .Date;
    {DtPickerDebut et DtPickerFin étant les DateTimePicker où tu choisis tes dates de début et de fin}
    Open;
    Roland

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    encore un pb j'espere que je ne t'embete pas et désolé if result:=true
    mais il y a tj le ParamByName identificateur non déclaré

  8. #8
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Tu dois avoir un problème avec tes with. Eviter de les emboîter, ça n'améliore pas la lisibilité du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    with DM.ACaisse do
    begin
      Close;
      SQL .Clear;
      SQL .Add('SELECT SUM(Hono) as TotalH, SUM(Depenses) as TotalD From Recette where DateJ BETWEEN :DDebut AND :DFin');
      ParamByName ('DDebut') .AsDateTime := DtPickerDebut .Date;
      ParamByName ('DFin') .AsDateTime := DtPickerFin .Date;
      Open;
    end;
    {DtPickerDebut et DtPickerFin étant les DateTimePicker où tu choisis tes dates de début et de fin}
    Je suppose que ACaisse est un Query ?? Si tu l'appelais par ex QrCaisse, ça serait plus lisible (pour toi et pour les autres).
    Roland

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    ParamByName n'existe pas dans les propriété du query je suppose

  10. #10
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Ce n'est une propriété, mais une fonction !
    Voici ce que dit l'aide Delphi.
    Accède aux attributs du paramètre de nom spécifié.

    function ParamByName(const Value: String): TParam;

    Description

    La méthode ParamByName permet de consulter ou de définir les attributs d'un paramètre identifié par son nom.

    Value indique le nom du paramètre dont il faut obtenir les attributs.

    ParamByName permet d'abord de définir ou de consulter la valeur d'un paramètre à l'exécution. Par exemple, l'instruction suivante place dans une boîte de saisie la valeur en cours du paramètre nommé «Contact» :

    Edit1.Text := Query1.ParamByName('Contact').AsString;

    Les paramètres utilisés dans les instructions SELECT ne peuvent être à NULL, mais ils le peuvent pour les instructions UPDATE et INSERT.
    Roland

  11. #11
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    est ce que je dois déclarer une fonction ou qqchose pour que le programme accepte query.paramByName ??
    parceque jusqu'a présent il ne veut rien savoir tj le message identificateur non déclaré.

  12. #12
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    j'ai trouvé ce qui cloche
    paramByName et une fonction de Query de la BDE mais moi j'utilse AdoQuery de ADO
    merci pour ton aide
    il n y aurait pas un truc pareil avec les composant ADO ????

  13. #13
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AdoQuery.Parameters.ParamByName ('...').Value := ...
    Roland

  14. #14
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    merci a tous
    je l'ai trouvé.

  15. #15
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    N'oublie pas de mettre le flag

    Bon courage pour la suite !
    Roland

  16. #16
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    au faite je n'ai pas tout a fait résolu le pb je n'arrive pas a récuperer les resultats des calcules j'ai essayé de créer des champs calculé pour le adoquery ç ne marche pas j'ai ajouté dans parameters deux pour stocker les calcule pour les récuperer dans des edit mais ça ne marche pas je suis perduuuuuuuuuuuuu

    merci pour ton aide

  17. #17
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Je ne comprends pas. Tu as dans ton Query les champs TotalH et TotalD. Il suffit que tu branches dessus des DbEdit (par l'intermédiaire d'un DataSource.

    Restera le 3ème résultat (la différence des deux autres), pour lequel tu peux effectivement utiliser un champ calculé.

    Qu'est-ce qui te pose pb exactement ?
    Roland

  18. #18
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    voila j'ai une BDD access dont j'ai mis trois champs DateJ, Hono, Depenses,
    relié a un adoquery quand j'insere des donnée ça marche bien
    j'ai crée dans le adoquery deux champ calculé TotalH et TOtalD pour récuperer le SUM(Hono) et le SUM(Depense) mais quand je fais je ne c pas les autre champs DateJ et Hono Depenses ne sont plus reconnu
    alors je les ai crée dans le adoquery avec currency comme type et pour l'insertion et l'affichage impeccable avec meme le symbole de l'EUro, mais quand je fais le calcule ça ne marche pas il me sort un msg genre deux valeur pour un champs requis et pourtant aucun n'est requis dans mon app? je ne c pas je crois que je suis totalement a coté de la plaque. merci si tu peux m'aider à m'en sortir

  19. #19
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Je ne comprends pas. Tu as dans ton Query les champs TotalH et TotalD. Il suffit que tu branches dessus des DbEdit (par l'intermédiaire d'un DataSource.

    Restera le 3ème résultat (la différence des deux autres), pour lequel tu peux effectivement utiliser un champ calculé.

    Qu'est-ce qui te pose pb exactement ?
    Roland

  20. #20
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    c bon j'ai reglé le pb et ça marche trés bien merci a tous pour votre aide

Discussions similaires

  1. calcul sur les dates
    Par housni dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/08/2007, 16h38
  2. Oracle 10g - calcul sur les dates
    Par themateo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 17/08/2007, 10h50
  3. Calcul sur les dates
    Par Stargate SG1 dans le forum Access
    Réponses: 2
    Dernier message: 04/02/2007, 16h09
  4. [Dates] Calcul sur les dates...
    Par gawelldanor dans le forum Langage
    Réponses: 10
    Dernier message: 04/04/2006, 11h07
  5. [C#] Calcul sur les dates avec des DateTimePicker
    Par alizee971 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 02/04/2005, 17h14

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