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

Langage Delphi Discussion :

Commenter tester une date vide


Sujet :

Langage Delphi

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2022
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2022
    Messages : 18
    Points : 0
    Points
    0
    Par défaut Commenter tester une date vide
    Dans mon programme DELPHI XE7 je lance la requete SQL suivante pour lister
    Des livres non rendu encore dont le champ Date_Liv_Ren

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DM.ADQ_LivreNonRen.Active;
      DM.ADQ_LivreNonRen.SQL.Clear;
      DM.ADQ_LivreNonRen.SQL.Add('Select distinct E.N_Empr, E.Nom_Empr, E.Prenom_Empr, E.Classe_Empr,');
      DM.ADQ_LivreNonRen.SQL.Add('Em.Date_Liv_Ren, L.N_Ser_Liv, L.Titre_Liv');
      DM.ADQ_LivreNonRen.SQL.Add('From Emprunteur E, Emprunte Em, Livre L');
      DM.ADQ_LivreNonRen.SQL.Add('Where (Em.N_Empr = E.N_Empr) AND (Em.N_Ser_Liv = L.N_Ser_Liv)') ;
      DM.ADQ_LivreNonRen.SQL.Add('AND (Date_Liv_Ren is Null'+ QuotedStr('')+')') ;
      DM.ADQ_LivreNonRen.ExecSQL;
      DM.ADQ_LivreNonRen.Active := True;
      frxReport1.ShowReport();

    A l'execution je recois le message suivant.
    Oû est l'erreur ? Et Merci a tous ceux qui nous aident .
    Nom : Capture.PNG
Affichages : 108
Taille : 20,6 Ko

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2022
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2022
    Messages : 18
    Points : 0
    Points
    0
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DM.ADQ_LivreNonRen.Active;
      DM.ADQ_LivreNonRen.SQL.Clear;
      DM.ADQ_LivreNonRen.SQL.Add('Select distinct E.N_Empr, E.Nom_Empr, E.Prenom_Empr, E.Classe_Empr,');
      DM.ADQ_LivreNonRen.SQL.Add('Em.Date_Liv_Ren, L.N_Ser_Liv, L.Titre_Liv');
      DM.ADQ_LivreNonRen.SQL.Add('From Emprunteur E, Emprunte Em, Livre L');
      DM.ADQ_LivreNonRen.SQL.Add('Where (Em.N_Empr = E.N_Empr) AND (Em.N_Ser_Liv = L.N_Ser_Liv)') ;
      DM.ADQ_LivreNonRen.SQL.Add('AND (Date_Liv_Ren is Null)') ;
      DM.ADQ_LivreNonRen.ExecSQL;
      DM.ADQ_LivreNonRen.Active := True;
      frxReport1.ShowReport();

  3. #3
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 097
    Points : 41 081
    Points
    41 081
    Billets dans le blog
    62
    Par défaut
    Vous avez oublié de cloturer la requête avant de la modifier : ligne 1, DM.ADQ_LivreNonRen.Active:=false; ou DM.ADQ_LivreNonRen.Close;L'instruction DM.ADQ_LivreNonRen.ExecSQL; ne sert à rien, même pour ADO.Le principe est simple je fais une requête qui renvoi des données j'utilise Active:=Trueou Open dans le cas contraire (généralement* insert, update ou delete ) ExecSQL* généralement car certains SGBD permettent de renvoyer des valeurs (i.e :Firebird et RETURNING) avec ces instructions
    remarque déjà écrite ici, mémorisez les bons réflexes !


    PS. Utilisez les jointures normalisées, ce n'est pas comme si je ne l'avais pas écrit ici vous prenez les réponses en compte quelques-fois et le sur une question est fait pour ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      DM.ADQ_LivreNonRen.Active:=false;
      DM.ADQ_LivreNonRen.SQL.Clear;
      DM.ADQ_LivreNonRen.SQL.Add('Select distinct E.N_Empr, E.Nom_Empr, E.Prenom_Empr, E.Classe_Empr,');
      DM.ADQ_LivreNonRen.SQL.Add('Em.Date_Liv_Ren, L.N_Ser_Liv, L.Titre_Liv');
      DM.ADQ_LivreNonRen.SQL.Add('From Emprunteur E, Livre L');
      DM.ADQ_LivreNonRen.SQL.Add('JOIN  Emprunte Em ON Em.N_Empr = E.N_Empr');
      DM.ADQ_LivreNonRen.SQL.Add('JOIN Livre L ON Em.N_Ser_Liv = L.N_Ser_Liv'); 
      DM.ADQ_LivreNonRen.SQL.Add('WHERE Em.Date_Liv_Ren is Null') ;
      DM.ADQ_LivreNonRen.Active := True;  // S'il s'agit uniquement de sortir l'état avec fastreport même pas besoin de rendre active la requête 
     // pour fastreport je suggère plutôt
      frxReport1.PrepareReport; 
      frxReport1.ShowPreparedReport();

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2022
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2022
    Messages : 18
    Points : 0
    Points
    0
    Par défaut Merci
    Citation Envoyé par SergioMaster Voir le message
    Vous avez oublié de cloturer la requête avant de la modifier : ligne 1, DM.ADQ_LivreNonRen.Active:=false; ou DM.ADQ_LivreNonRen.Close;L'instruction DM.ADQ_LivreNonRen.ExecSQL; ne sert à rien, même pour ADO.Le principe est simple je fais une requête qui renvoi des données j'utilise Active:=Trueou Open dans le cas contraire (généralement* insert, update ou delete ) ExecSQL* généralement car certains SGBD permettent de renvoyer des valeurs (i.e :Firebird et RETURNING) avec ces instructions
    remarque déjà écrite ici, mémorisez les bons réflexes !


    PS. Utilisez les jointures normalisées, ce n'est pas comme si je ne l'avais pas écrit ici vous prenez les réponses en compte quelques-fois et le sur une question est fait pour ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      DM.ADQ_LivreNonRen.Active:=false;
      DM.ADQ_LivreNonRen.SQL.Clear;
      DM.ADQ_LivreNonRen.SQL.Add('Select distinct E.N_Empr, E.Nom_Empr, E.Prenom_Empr, E.Classe_Empr,');
      DM.ADQ_LivreNonRen.SQL.Add('Em.Date_Liv_Ren, L.N_Ser_Liv, L.Titre_Liv');
      DM.ADQ_LivreNonRen.SQL.Add('From Emprunteur E, Livre L');
      DM.ADQ_LivreNonRen.SQL.Add('JOIN  Emprunte Em ON Em.N_Empr = E.N_Empr');
      DM.ADQ_LivreNonRen.SQL.Add('JOIN Livre L ON Em.N_Ser_Liv = L.N_Ser_Liv'); 
      DM.ADQ_LivreNonRen.SQL.Add('WHERE Em.Date_Liv_Ren is Null') ;
      DM.ADQ_LivreNonRen.Active := True;  // S'il s'agit uniquement de sortir l'état avec fastreport même pas besoin de rendre active la requête 
     // pour fastreport je suggère plutôt
      frxReport1.PrepareReport; 
      frxReport1.ShowPreparedReport();

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

Discussions similaires

  1. Commenter tester une date vide.
    Par HASSIOMAR dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2009, 18h53
  2. Tester une date vide
    Par xeron33 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 08/03/2009, 16h45
  3. Comment fixer une date dans un champ !
    Par LATHIOS dans le forum Access
    Réponses: 8
    Dernier message: 17/06/2005, 19h44
  4. []Comment convertir une date GMT en date vb ?
    Par Invité dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 11/08/2004, 16h01
  5. Comment récuperer une date depuis une chaine?
    Par shopoto dans le forum ASP
    Réponses: 4
    Dernier message: 12/05/2004, 16h17

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