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 :

[DBEXPRESS] Soucis avec valeur Isnull.


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier Avatar de newbie57
    Inscrit en
    Juin 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2005
    Messages : 124
    Points : 92
    Points
    92
    Par défaut [DBEXPRESS] Soucis avec valeur Isnull.
    Bonjour,

    Voilà j'ai un petit soucis avec l'interprétation IsNull du SQLDataSet de dbExpress.

    Afin de mieux expliquer mon soucis je donne un exemple de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SQLDataSet1.Close;
    SQLDataSet1.CommandText := 'Select no_commande from ListeCommande';
    SQLDataSet1.Open;
     
    If SQLDataSet1.FieldByName('no_commande').Isnull then
    begin
    ...
    end;
    Le soucis c'est que s'il n'y a aucun enregistrement, la condition 'Isnull' n'est pas à vrai et je ne peux rien interpreter. Je recois uniquement en valeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Si le champ est une chaine de caractères:
    SQLDataSet1.FieldByName('no_commande').AsString = ''
     
    Si le champ est un entier:
    SQLDataSet1.FieldByName('no_commande').AsInteger = 0
    Quelqu'un aurait-il eu le même soucis que moi? Et comment pourrais-je résoudre ce soucis?


    PS: Je precise que je suis sous BDS2006 VCL et que ma base de données est Oracle 9i.

    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Avant de vérifier que ton champ no_commande est Null, assure-toi que ta requête a bien renvoyé des enregistrements.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    with SQLDataSet1 do
    begin
      if not IsEmpty and FieldByName('no_commande').IsNull then
      begin
        // ...
      end;
    end;
    @+ Claudius

  3. #3
    Membre régulier Avatar de newbie57
    Inscrit en
    Juin 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2005
    Messages : 124
    Points : 92
    Points
    92
    Par défaut
    Bonjour Cl@udius et merci pour ta réponse,

    Justement je viens de voir qu'en faisant le test suivant:

    me renvoyait vrai si je n'ai aucun résultat et faux si j'ai au moins un résultat.

    Bon et bien c'est très sympa pour cette réponse, ça m'enlève une bonne épine du pied car depuis que je suis passé de D7 à D2006 je ne me suis pas rendu compte que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLDataSet1.FieldByName('no_commande').IsNull
    n'était plus vrai systématiquement.

    Merci encore

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 83
    Points : 70
    Points
    70
    Par défaut Soucis avec valeur IsNull
    Si la condition IsNull est vérifiée, il n'y a aucun valeur, même '0' car zero est un caractère en arithmétique sa valeur Null.

  5. #5
    Membre régulier Avatar de newbie57
    Inscrit en
    Juin 2005
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juin 2005
    Messages : 124
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par Ralay Voir le message
    Si la condition IsNull est vérifiée, il n'y a aucun valeur, même '0' car zero est un caractère en arithmétique sa valeur Null.
    Merci pour l'info,

    Il est vrai que sur D7, lorsque je n'avais aucun enregistrement pour ma requête (test fait sur PL/SQL Developer), la condition IsNull était à vrai. Ce qui m'a étonné sur D2006 c'est que cette condition n'est plus vrai car maintenant avec la même requête dbExpress me retourne quand même une valeur (soit 0, soit '' suivant le type du champ que je cherchais à savoir integer ou string).

    Donc mon seul test SQLDataSet1.FieldByName('...').IsNull n'est plus valable sur Delphi 2006, maintenant il faut aussi que je teste SQLDataSet1.IsEmpty

    Merci à Cl@udius
    et
    Merci à toi

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/09/2012, 19h39
  2. [PHP 5.0] soucis avec valeur d'un tableau de checkbox
    Par Haxor668 dans le forum Langage
    Réponses: 2
    Dernier message: 08/09/2009, 08h34
  3. Réponses: 1
    Dernier message: 28/04/2009, 17h09
  4. J’ai un souci avec les valeurs null sous sql server.
    Par zoltix dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/06/2006, 10h27
  5. souci avec le format des valeurs numériques.
    Par LESOLEIL dans le forum Langage
    Réponses: 9
    Dernier message: 05/04/2006, 16h12

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