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 :

Tri sur une Requete en delphi


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Tri sur une Requete en delphi
    J'ai un problème dans une requete access.
    j'ai fait ma requete sous access et ça donne normalement, mais je n'arrive pas à faire une recherche sous delphi sur la même requete.
    Donc aidez moi à resoudre ce problème.
    Cette requete est la suivante:
    C'est une requete qui m'aide à faire la somme totale la difference qui marche normalement sous access et ça s'affiche bien en delphi.
    Mais la partie trie par ''Annee_Paye'' qui ne marche pas. je ne sais pas que faire. Je veux faire le tri par ''Annee_Paye'' mais comment.
    NB: La requete en access se présente sous une table en delphi et sur la table je fait la recherche pour faire un trie qui doit afficher seulement les champs triés.
    Voici comment la requete se présente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tpaiement.Ref_Sinistre, tpolice.Date_Effet, tpolice.Date_Expiration, tsinistre.Date_Survenue, Year(tpaiement.Date_Paye) AS Annee_Paye, Sum(tpaiement.Montant) AS TOTAL_PAYE, (tsinistre.Provision_Initiale-TOTAL_PAYE) AS Reste_Payer, tsinistre.Provision_Initiale AS Coût_Total, tsinistre.ADVERS, tsinistre.OBS
    FROM (tpolice INNER JOIN tsinistre ON tpolice.Num_Police = tsinistre.Num_Police) INNER JOIN tpaiement ON tsinistre.Ref_Sinistre = tpaiement.Ref_Sinistre
    GROUP BY tpaiement.Ref_Sinistre, tpolice.Date_Effet, tpolice.Date_Expiration, tsinistre.Date_Survenue, Year(tpaiement.Date_Paye), tsinistre.Provision_Initiale, tsinistre.ADVERS, tsinistre.OBS;
    Je veux faire la recherche maitenant sur l'année et afficher que les enregistrements concernés.
    donc celui ou celle qui à une reponse, soit la bienvenue.
    Par votre collaborateur Zizou7.
    Merci de votre intervention.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    as-tu essaye le "ORDER BY 5" , 5 étant en fait le numéro d'ordre du champ a trié
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Requete sous delphi
    Merci Mr sergiomaster, j'ai vu votre reponse.
    Mais ma question est la suivante: faire ce Order by en access ou en delphi?
    Je m'explique: l'idéal est après avoir trié, la requete affichera la somme des montants payés par sinistre et par ''Annee_Paye'' et ensuite les affiche dans un Etat pour les imprimer.
    Si vous avez vraiment un model de code qui peut me permetre de faire ce resultat, je suis à l'écoute.
    Pour avoir l'Annee_paye sous access, voici comment j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    year(tpaiement.Date_Paye) As Annee_paye
    .
    C'est comment faire le tri par rapport à l'Annee_Paye que je n'arrive pas sous delphi.

  4. #4
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    order by tpaiement.Date_Paye

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Requete sous delphi
    J'ai compris votre reponse mais est ce que avec cette requete on peut afficher sur un ''Etat'' par rapport à une année donnée?
    Si oui comment ?
    A travers une procedure, comment?
    Si autre, comment?
    NB:La requette me fait le tri par ordre croissant, comme j'ai choisit croissant sous access.
    Maintenant est ce que ce tri est possible sous delphi par rapport à une année donnée et affiche sur un ''Etat'' en delphi?
    Si oui comment?
    Je connais cmment faire les etats en delphi mais plutôt c'est la procedure qui me permet de faire le tri et affiche sur l'etat qui me préoccupe assez.
    Par zizou7.

  6. #6
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 418
    Points : 5 816
    Points
    5 816
    Par défaut
    salut

    tu met simplement la requette fait sous acces dans un TQuery ou TAdoQuery selon le choix d'acces a la base

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Requete sous delphi
    J'ai vu vos reponses,mais j'ai fait une requete parametrée sous delphi sur la requete que j'ai faite sous access. voici la requete que faite sous delphi sur l'objet ''Query'':
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Ref_Sinistre, Date_Effet, Date_Expiration, Date_Survenue, Annee_Paye, TOTAL_PAYE, Reste_Payer, Coût_Total, Souscripteur, ADVERS, OBS
    FROM SommeparAnnee Sommeparannee
    WHERE   Annee_Paye =:dAn  
       AND  (Souscripteur =:dsouscrip)  
       AND  Date_Survenue BETWEEN :ddatemin  :ddatemax
    AND
    dAn:integer, pour afficher l'année;
    dsouscrip:string, pour afficher le souscripteur;
    ddatemin:date, pour afficher la date minimum;
    ddatemax:date, pour afficher la date maximum;
    Tous ces parametrages ont été faites dans ''params''.
    Et derrière le bouton ''Exécuter'' j'ai écrit le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    base.QAnne.Active:=false;
    base.QAnne.Params.ParamValues['dAn']:=strtoint(edit1.Text);
    base.QAnne.Params.ParamValues['dsouscrip']:=edit2.Text;
    base.QAnne.Params.ParamValues['ddatemin']:=strtodate(edit3.Text);
    base.QAnne.Params.ParamValues['ddatemax']:=strtodate(edit4.Text);
    base.QAnne.Active:=True;
    A l'exécution elle m'affiche le message suivant:
    Le format de date n'est pas correct.
    Sous access j'ai choisit le type ''Date/Heure et le format:''Abregé'', exemple:01/02/2008. Mais sous delphi j'ai choisit le format ''Date''.
    Donc celui ou celle qui a une reponse, soit la bienvenue pour me débloquer.
    Je suis à l'écoute.
    Merci.
    Par Zizou7.

  8. #8
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    je crois que c'est lié aux paramètres windows. il faut voir le format date dans le panneau de configuration onglet options régionales.

    Bonne chance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Requete sous delphi
    Merci de votre reponse, mais est ce qu'il faut enlever le format de date longue dans le panneau de configuration et laisser seulement le format de date courte?
    Vous savez, dans le panneau de configuration il existe deux formats de date à savoir un format ''Date courte'' et un autre format de ''Date longue''.
    Exemple de format de date courte:17/06/2008;
    Exemple de date longue:Mercredi 17 Juin 2008.
    Je ne sais pas s'il faut enlever le format de date longue dans le panneau de configuration ou comment faut il faire maintenant?
    J'ai besoin de vos idées.
    Par Zizou7.

  10. #10
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Citation Envoyé par Zizou7 Voir le message
    Merci de votre reponse, mais est ce qu'il faut enlever le format de date longue dans le panneau de configuration et laisser seulement le format de date courte?
    Vous savez, dans le panneau de configuration il existe deux formats de date à savoir un format ''Date courte'' et un autre format de ''Date longue''.
    Exemple de format de date courte:17/06/2008;
    Exemple de date longue:Mercredi 17 Juin 2008.
    Je ne sais pas s'il faut enlever le format de date longue dans le panneau de configuration ou comment faut il faire maintenant?
    J'ai besoin de vos idées.
    Par Zizou7.
    en général c'est le format court que j'utilise donc 17/06/2008. ajouter à ceci un masque dans le champ date et c'est tout.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  11. #11
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Requete sous delphi
    Voici le message qui m'affiche:
    Erreur SQL générale.
    [Microsoft][Pilote ODBC Microsoft Access]
    Format de date invalide (null).
    J'ai passé par un lien ODBC pour lier la base access à delphi.
    Je me demande pourquoi elle m'affiche ce message d'erreur?
    Quand je faisais les requetes sous paradox, je parvenais à faire ce parametrage sans problème. Mais maintenant il refuse de faire les parametres sous access. Paradox n'accepte pas de faire les calculs tels que la
    Somme et la difference
    en même temps.je suisvraiment coincé par cette situation.
    Je suis à l'attente de vos reponses.
    Merci.
    Par Zizou7.

  12. #12
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    je suis pas d'accord sur ça :
    Citation Envoyé par Zizou7 Voir le message
    Paradox n'accepte pas de faire les calculs tels que somme et différence.
    Par Zizou7.
    par contre, il faudrait peut-être nous donner le code qui provoque l'erreur
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    il manque un AND , mais ce n'est peut-être qu'une faute de frappe ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Ref_Sinistre, Date_Effet, Date_Expiration, Date_Survenue, Annee_Paye, TOTAL_PAYE, Reste_Payer, Coût_Total, Souscripteur, ADVERS, OBS
    FROM SommeparAnnee Sommeparannee
    WHERE   Annee_Paye =:dAn  
       AND  (Souscripteur =:dsouscrip)  
       AND  Date_Survenue BETWEEN :ddatemin  AND  :ddatemax
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #14
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Requete sous delphi
    Vous savez qu'en access le format date est de la sorte:#17/06/2008#
    et delphi tel n'est pas le cas, je me dis donc que c'est ce qui cause le problème.
    Si vous avez d'autres idées à ajouter, elles sont les bienvenues.
    Dans l'attente de vos remarques et suggestions.
    Merci.
    Par Zizou7.
    NBonnez moi un chemin à suivre s'il en existe.

  15. #15
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    une idée ! voilà une :

    change le type date en type chaine de caractères ça devrait marcher mais faut être très prudent car on manipule plus les dates donc faudrait faire trop de chose à la main.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  16. #16
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    Une autre idée , plutôt que d'utiliser un TEdit en zone de saisie , utiliser un TDatetimepicker
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  17. #17
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Une autre idée , plutôt que d'utiliser un TEdit en zone de saisie , utiliser un TDatetimepicker
    +1.

    Surtout que c'est surement cela l'erreur le text du Tedit n'ai peut-être pas une date après transformation DatetoStr(xxxx).

    Au moins avec un DateTimepicker on est sur de la source.


    Bye

  18. #18
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Requete sous delphi
    Je vous remercie tous de votre contribution sur ma question.
    Mais je viens de trouver ce samedi la reponse à ma question.
    Les dieux des sciences informatiques et bon Dieu sont de mon côté et la reponse m'est venue comme de l'eau à boire.
    Je suis vraiment content de cette situation car ça fait plus de deux semaines je cherchais ce problème qui était avec moi.
    Donc merci à tous.
    Par Zizou7 votre collaborateur de toujours.
    By.

  19. #19
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    heureux pour toi mais qu'elle était l'erreur ? et quelle est la solution ? le partage de l'info fait la force du forum ne nous privons pas.

    Bonne chance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  20. #20
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Requete sous delphi
    Merci pour vos differentes interventions sur ma question, j'ai déjà trouvé une reponse qui était avec moi.
    La reponse m'est venue quand j'ai un peu reflechit et j'ai eu à resoudre seul.
    Je met cette reponse à tous ceux qui peuvent avoir des problème de ce genre car personne n'est parfait.
    Il s'agissait de mettre le
    dateTime
    à la place de
    Date
    pour que ça marche.
    Je suis vraiment content de cette reponse.
    Mais j'ai autre question que je vien de poser dans le furum, pour ceux qui ont une reponse à cette question serait la bienvenue.
    By.
    Par Zizou7.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tri sur une requete sql
    Par cerealkiller dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/08/2010, 00h11
  2. Tri d'une requete sur des dates
    Par arnaud036 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 14/05/2009, 23h26
  3. [Access] Requête sur une table et tri sur une autre
    Par VooDooS dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/08/2006, 15h07
  4. Aide sur une requete de sélection
    Par stephdiplo150 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/01/2004, 10h40
  5. []débogage sur une requête dasn visual basic
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 24/09/2003, 09h59

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