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 :

Mise en forme de ,to_date(JRCBT_DATE#)


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut Mise en forme de ,to_date(JRCBT_DATE#)
    Bonjour à tous,

    Je viens à vous pour demander de l'aide pour la mise en place d'une requête. En voici les ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select sum(nvl( JRCBT_MONTANT,0)) recette_police_caisse,EVT_NUMCPTE,EVT_LIBELLE,to_date(JRCBT_DATE#,'dd/mm/yyyy') journee from
    gc_JRcbt,gcc_evt_comptable
    where to_date(JRCBT_DATE#,'dd/mm/yyyy') between to_date('&date1','dd/mm/yyyy') and to_date('&date2','dd/mm/yyyy')
    and JRCBT_EVT#=EVT_CODE#
    group by EVT_NUMCPTE,EVT_LIBELLE,to_date(JRCBT_DATE#,'dd/mm/yyyy') ;
    Et voilà ce que j'ai fais en Delphi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Query1.sql.Clear;
      Query1.sql.Add('select sum(nvl(JRCBT_MONTANT,0)) recette_police_caisse,EVT_NUMCPTE,EVT_LIBELLE, to_date(JRCBT_DATE#,'dd/mm/yyyy') from gc_JRcbt,gcc_evt_comptable');
      Query1.sql.Add('where to_date(JRCBT_DATE#,'dd/mm/yyyy') between');
      Query1.sql.Add('to_date('+Quotedstr(formatdatetime('dd/mm/yyyy', DateTimePicker1.Date))+','+QuotedStr('dd/mm/yyyy')+')');
      Query1.sql.Add('and ');
      Query1.sql.Add('to_date('+Quotedstr(formatdatetime('dd/mm/yyyy', DateTimePicker2.Date))+','+QuotedStr('dd/mm/yyyy')+')');
      Query1.sql.Add(')');
      Query1.sql.Add('group by EVT_NUMCPTE,EVT_LIBELLE, to_date(JRCBT_DATE#,'dd/mm/yyyy'));
      Query1.Open;
    Mais je remarque que j'ai des problème avec to_date(JRCBT_DATE#,'dd/mm/yyyy'). Delphi signal un problème de parenthèse. Je ne suis pas très habile dans la mise en forme des chaines de caractères.
    Merci à vous de m'aider.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    c'est certainement là ou une query paramétrée serait préférable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Query1.sql.Clear;
      Query1.sql.Add('select sum(nvl(JRCBT_MONTANT,0)) recette_police_caisse,EVT_NUMCPTE,EVT_LIBELLE,JRCBT_DATE  from gc_JRcbt JOIN gcc_evt_comptable ON JRCBT_EVT=EVT_CODE'); // à remarquer la Jointure plutôt qu'un where 
      Query1.sql.Add('where JRCBT_DATE between');
      Query1.sql.Add(':Fdate and :TDate');
      Query1.sql.Add('group by EVT_NUMCPTE,EVT_LIBELLE,JRCBT_DATE');
      Query1.Parambyname('FDate').asDateTime:=DateTimePicker1.Date;
      Query1.Parambyname('TDate').asDateTime:=DateTimePicker2.Date;
      Query1.Open;

    cependant , je ne connais pas la SGBD utilisée Oracle?
    cela fonctionnerait pour Interbase ou Firebird
    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 habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Salut SergioMaster,

    Merci pour ton aide. J'ai essayé ta requête, mais elle ne renvoie aucune ligne. Peut-être que c'est parce que je suis sous oracle 10g.
    A bientôt.

  4. #4
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Salut,

    Je me suis trompé dans mon post précédent. En réalité je mettait des date qui n'existait pas dans la base, donc des résultats nuls.
    La requête marche mais il ne ramène pas le même nombre de lignes que l'autre.
    Par exemple, cette requête ramène 11 ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select sum(nvl( JRCBT_MONTANT,0)) recette_police_caisse,EVT_NUMCPTE,EVT_LIBELLE,to_date(JRCBT_DATE#,'dd/mm/yyyy') journee from
    gc_JRcbt,gcc_evt_comptable
    where to_date(JRCBT_DATE#,'dd/mm/yyyy') between to_date('&date1','dd/mm/yyyy') and to_date('&date2','dd/mm/yyyy')
    and JRCBT_EVT#=EVT_CODE#
    group by EVT_NUMCPTE,EVT_LIBELLE,to_date(JRCBT_DATE#,'dd/mm/yyyy') ;
    et celui-ci ramène 6 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Query1.sql.Clear;
      Query1.sql.Add('select sum(nvl(JRCBT_MONTANT,0)) recette_police_caisse,EVT_NUMCPTE,EVT_LIBELLE,JRCBT_DATE  from gc_JRcbt JOIN gcc_evt_comptable ON JRCBT_EVT=EVT_CODE'); // à remarquer la Jointure plutôt qu'un where 
      Query1.sql.Add('where JRCBT_DATE between');
      Query1.sql.Add(':Fdate and :TDate');
      Query1.sql.Add('group by EVT_NUMCPTE,EVT_LIBELLE,JRCBT_DATE');
      Query1.Parambyname('FDate').asDateTime:=DateTimePicker1.Date;
      Query1.Parambyname('TDate').asDateTime:=DateTimePicker2.Date;
      Query1.Open;
    Il y'a quelque chose qui ne va pas. Je cherche toujours le problème.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour , évidemment pour Oracle il fallait s'inspirer de la forme (paramètres)

    N'ayant pas /ne connaissant pas suffisamment Oracle , je ne peut faire que des suggestions

    Tout d'abord dans les lignes 1 et 2 et 8 de ta requête
    to_date(JRCBT_DATE#,'dd/mm/yyyy')
    il faut faut soit doubler les ' soit utiliser quotedstr('dd/mm/yyyy') avec les inconvénients que cela comporte (les concaténations de chaines)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Query1.sql.Add('select sum(nvl(JRCBT_MONTANT,0)) recette_police_caisse,EVT_NUMCPTE,EVT_LIBELLE, to_date(JRCBT_DATE#,''dd/mm/yyyy'') from gc_JRcbt,gcc_evt_comptable');
      Query1.sql.Add('where to_date(JRCBT_DATE#,''dd/mm/yyyy'') between');
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Query1.sql.Add('select sum(nvl(JRCBT_MONTANT,0)) recette_police_caisse,EVT_NUMCPTE,EVT_LIBELLE, to_date(JRCBT_DATE#,'+QuotesStr('dd/mm/yyyy')+') from gc_JRcbt,gcc_evt_comptable');
      Query1.sql.Add('where to_date(JRCBT_DATE#,'+QuotedStr('dd/mm/yyyy')+')  between');
    ensuite , je ne comprend pas trop le # en fin de champ (ça c'est du à ma méconnaissance d'ORACLE.


    [Edit] suite a un post au même moment je n'avais pas lu la suite
    la différence entre le nombre de résultat reçu c'est peut être du à la jointure
    Comme je ne connais pas la relation entre les deux tables , je ne peut que suggérer un test entre LEFT [OUTER/INNER] JOIN,FULL JOIN , RIGHT [OUTER/INNER] JOIN etc...

    mais aussi au format du champ Date ou TimeStamp ?
    s'il s'agit d'un TimeStamp ,
    Query.paramByName('TDate).asDateTime:= DateTimePicker2.Date+1; devrait fonctionner
    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

Discussions similaires

  1. [CR] mise en forme d'un champs texte en fonction des données
    Par niPrM dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 29/06/2004, 11h57
  2. [CR 9] Mise en forme non affichée when null
    Par Yorglaa dans le forum Formules
    Réponses: 2
    Dernier message: 28/06/2004, 17h27
  3. mise en forme rapide d'applets
    Par appletj dans le forum Applets
    Réponses: 11
    Dernier message: 03/06/2004, 13h28
  4. Mise en forme HTML
    Par Regis.C dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 25/04/2004, 11h55
  5. Mise en forme fichier avant Import
    Par jeff37 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/04/2004, 15h16

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