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 :

probleme avec un champ null dans une requête sql


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut probleme avec un champ null dans une requête sql
    salut à tous
    j'utilise delphi 7 et interbase
    j'ai un fichier etudiant qui a comme champ(num,nom,prenom,date_naissence)
    pour afficher les aetidiants qui sont née a une année donnée j"ai fais comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    x:=inputbox('année','année','');
    begin
    with ibquery1 do
    begin
    close;
    sql.clear;
    sql.add('select * from etudiant where  extract(year from date_naissence)=:annee ');
    parambyname('annee').asinteger:=strtoint(x);
    open;
    end;
    si le champ date naissence né pas null j'oubtien aucune erreur mais dans le cas ou le champ date naissence et null , voila le message d'erreur
    ---------------------------
    Project1
    ---------------------------
    expression evaluation not supported.
    ---------------------------
    OK
    ---------------------------
    je ne sais pas ce qui se passe
    merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    il est évident que la date de naissance aurait-du être un champ non nul !

    pour passer quand même utilises un COALESCE
    par exemple
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from etudiant where  extract(year from COALESCE(date_naissence,NOW))=:annee '
    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 régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 945
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    moi j'utilise jamais les parambyname même si on me la beaucoup recommandé dans ce forum sinon je te proposerais la solution suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    x:=inputbox('année','année','');
    begin
    with ibquery1 do
    begin
    close;
    sql.clear;
    sql.add('select * from etudiant where  extract(year from date_naissence)='+x);
    open;
    end;

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par chekkal Voir le message
    je te proposerais la solution suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql.add('select * from etudiant where  extract(year from date_naissence)='+x);
    et qu'est-ce que ta solution amène au problème des dates de naissance 'nulles' ?
    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

  5. #5
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 460
    Points : 24 874
    Points
    24 874
    Par défaut
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sql.clear;
    sql.add('SELECT * FROM etudiant WHERE date_naissence IS NOT NULL AND EXTRACT(YEAR FROM date_naissence) = :annee ');
    parambyname('annee').asinteger:=strtoint(x);
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  6. #6
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut
    merci pour vos réponse
    donc je vous dite problème résolu , sauf la solution de monsieur SergioMaster un message d'erreur qui me dit
    ---------------------------
    Project1
    ---------------------------
    Dynamic SQL Error

    SQL error code = -804

    Function unknown

    COALESCE.
    ---------------------------
    OK
    ---------------------------

    donc j'ai essai avec la solution de monsieur ShaiLeTroll ca marche très bien.

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 046
    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 046
    Points : 40 962
    Points
    40 962
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Interbase ne connait pas COALESCE , bizarre

    en tout cas , le même type de requête , sous Firebird fonctionne , c'est peut être le NOW qui déconne ;-)
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from examens where extract(year from COALESCE(date_examen,current_date))=2013
    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

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

Discussions similaires

  1. champ null dans une requête update
    Par hammag dans le forum SQL
    Réponses: 4
    Dernier message: 16/05/2011, 19h17
  2. Tester valeur null dans une requête sql
    Par bobosh dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/07/2008, 13h07
  3. Insérer des champs vides dans une requête sql
    Par js8bleu dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/02/2008, 15h00
  4. Récupérer la valeur des champs calculés dans une requète SQL dans vba
    Par FrédéricCM dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/06/2006, 16h29
  5. Nom de champ variable dans une requête SQL
    Par stip dans le forum ASP
    Réponses: 2
    Dernier message: 30/09/2004, 18h02

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