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 :

requête query sql


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Par défaut requête query sql
    Bonjour

    j'utilise un query avec une table name et un datasource et ma table est en access.

    Quelqu'un pourrait-il me donner le code pour mettre correctement un affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sum(MVTS.MVTDEBIT)-Sum(MVTS.MVTCREDIT) AS Somme
    Mrci à vous

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Par défaut
    je ne vois pas exactement ce que tu veux faire...
    pourrais tu donner plus d'explications ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Par défaut
    en fait j'ai une table contenant plusieurs clients et chaque client a des montants en + et en négatifs.

    J'aimerai créer une requête sql qui affiche le solde positif ou négatif de chaque client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('SELECT MVTS.MVTCOMPTE ,Sum(MVTS.MVTDEBIT)-Sum(MVTS.MVTCREDIT) AS Somme FROM MVTS;');
    query1.Open;
    la table s'appelle MVTS pour désigner un mouvement, le débit et le crédit.

    Je veux confronter le total de ces deux colonnes par client pour obtenir son solde final.

    mon code m'indique comme message d'erreur : "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée mvtcompte comme une partie de la fonction d'agrégation"

    Je ne pige pas trop ce qu'il veut dire. A mon avis, il ne manque quasi rien pour que ce code fonctionne mais bon je suis largué !

    merci de m'aider[/code]

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Par défaut
    "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée mvtcompte comme une partie de la fonction d'agrégation"
    vien du fait que tu doit soit enlever,mvts.mvtcompte de ton select soit, la sommeraussi mais ne connaissant pas tes tables je peu pa te dire.
    Sinon pour afficher le résultat, tu pren un datasource tu le lie a ton tquery,et ensuite tu pren a dbgrid et tu la lie au datasource.
    J espere t avoir aider...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Par défaut ok
    en fait la table est toute bête

    mvts
    -----
    compte
    debit
    credit
    nom
    prenom
    ...

    et je veux faire total debit (par exemple 10000 fr) - total credit (qui est par exemple à 8000 fr) et ainsi obtenir en créant un champ la différence de ces deux montants

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Par défaut
    si tu a

    mvts
    -----
    compte
    debit
    credit
    nom
    prenom

    alors debit represente pour un compte, le total des debits de ce compte,et credit represente le total des credit pour le meme compte.
    SI c'est le cas essai de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT MVTS.MVTCOMPTE ,(MVTS.MVTDEBIT)-(MVTS.MVTCREDIT) AS Somme FROM MVTS;
    .
    je pense que c'est la solution maintenant si j ai encore mal compris ta table...c'est un autre probleme

  7. #7
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Par défaut
    Citation Envoyé par bertrand_declerck
    J'aimerai créer une requête sql qui affiche le solde positif ou négatif de chaque client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('SELECT MVTS.MVTCOMPTE ,Sum(MVTS.MVTDEBIT)-Sum(MVTS.MVTCREDIT) AS Somme FROM MVTS;');
    query1.Open;
    mon code m'indique comme message d'erreur : "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée mvtcompte comme une partie de la fonction d'agrégation"
    [/code]
    il manque un GROUPBY MVTS.MVTCOMPTE

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Par défaut ok
    Ok en fait j'ai été distrait

    c'est une liaison entre deux tables

    la première contient le nom du client et la seconde les données chiffrées. J'ai effectué la liaison en access nickel.

    Maintenant le code qui ne marche pas est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('SELECT DISTINCT CLIENTS.CLINOM1 as CLIENT, MVTS.MVTDATECH as ECHEANCE, MVTS.MVTCLETTR as LETTRE, Sum(MVTS.MVTDEBIT) - Sum(MVTS.MVTCREDIT) AS Somme   ');
    query1.SQL.Add('FROM CLIENTS INNER JOIN MVTS ON CLIENTS.CLICODE = MVTS.MVTCOMPTE WHERE (((MVTS.MVTCLETTR)<>-1)) ORDER BY CLIENTS.CLINOM1, MVTS.MVTDATECH    ');
    query1.Open;
    il n'y a pas moyen d'obtenir une somme.

    cela plante à chaque fois

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Par défaut
    je dirai qu'il manque toujours un GROUP BY CLIENTS.CLINOM1, MVTS.MVTDATECH, MVTS.MVTCLETTR
    (avant le order by) de tout ce que tu projetes sauf les calculs

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 10
    Par défaut
    si tu y arriver, oublie le sql générer par access car il est incompréhenssible , envoie donc plutot les structures des deux tables et le champ par lequel on peut les lier...
    Apres ce sera plus facile pour t'aider

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Par défaut merci
    c'est sympa à vous

    je vais d'abord essayer le group by : ce dernier est obligatoire lorsqu'on fait des sommes ?

    merci à toi shashark et à toi Krusk.

    [/img]

  12. #12
    Membre habitué
    Inscrit en
    Avril 2002
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 11
    Par défaut
    il manque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GROUP BY CLIENTS.CLINOM1, MVTS.MVTDATECH, MVTS.MVTCLETTR
    avant ta clause order by

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2004
    Messages : 160
    Par défaut ok
    j'ai trouvé voilà le code solutionné c'est assez logique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('SELECT DISTINCT CLIENTS.CLINOM1 as CLIENT,    Sum(MVTS.MVTDEBIT) - Sum(MVTS.MVTCREDIT) as Somme ');
    query1.SQL.Add('FROM CLIENTS INNER JOIN MVTS ON CLIENTS.CLICODE = MVTS.MVTCOMPTE ');
    query1.SQL.Add('WHERE (((MVTS.MVTCLETTR)<>-1)) ');
    query1.SQL.Add('GROUP BY CLIENTS.CLINOM1 ORDER BY CLIENTS.CLINOM1 ');
    query1.Open;
    Merci à vous

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 192
    Par défaut
    de rien

    (tu peux mettre en résolu maintenant )

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

Discussions similaires

  1. Comment écrire plusieurs requêtes dans Query.Sql
    Par hayat2 dans le forum Bases de données
    Réponses: 11
    Dernier message: 03/06/2009, 10h33
  2. Interrompre une requête PL/SQL demandée par le Web
    Par PierreV01 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 12/12/2005, 10h52
  3. problème de requête query
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 7
    Dernier message: 01/07/2005, 16h28
  4. [Defi] Query SQL qui semble tres simple
    Par Wakko2k dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2004, 10h01
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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