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 :

Delphi 2007 et DBXpress4


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 174
    Points : 38
    Points
    38
    Par défaut Delphi 2007 et DBXpress4
    Bonjour,

    Je suis en train de déboguer un bout de code qui fonctionnait en Delphi 2006 et qui depuis sa recompilation en Delphi 2007 ne se comporte plus de la même manière.
    Ci-dessous le bout de code en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        Query1.Close;
        Query1.SQL.Clear;
        Query1.SQL.Add('SELECT PkIdPosteSUP' +
                       ' FROM TblPosteSup' +
                       ' WHERE FkIdFonctionPosteSup=1' +
                       ' AND Actif=1');
        Query1.Open;
     
        if Query1['PkIdPosteSUP']<>0 then 
        begin
           showMessage('test Query1['PkIdPosteSUP']<>0 OK');
        end;
    Ce qui se passe c'est que je ne passe jamais dans le if Query1['PkIdPosteSUP']<>0 parce que Query1['PkIdPosteSUP'] vaut NULL.
    La question que je me pose, c'est pourquoi ça fonctionnait avec Delphi 2006 mais plus avec Delphi 2007?
    J'ai cru voir que Delphi 2007 est passé sur la version DBExpress 4 alors que Delphi 2006 était en DBXpress 3.

    D'ailleurs j'ai vu dans les uses un 'uses DBXpress' qui génère un warning : "L'unité DBXpress est désapprouvé"

  2. #2
    Rédacteur/Modérateur

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

    l'explication, je n'en ai aucune car n'étant pas spécialiste de DBExpress, ceci étant une valeur null c'est quand même différent de 0 un peu comme je ne sais pas est différent de Oui/Non
    Les corrections à apporter par contre il y en a plusieurs différentes
    - tester si l'ensemble de données est vide (à cause des conditions)
    - tester que la valeur n'est pas nulle plutôt qu'une valeur différente de 0 (je vote pour celle-ci, sauf s'il existe un enregistrement avec un PKidPosteSUP = 0)
    - utiliser FieldByName('PkIdPosteSUP').asInteger pour forcer, encore que la possibilité qu'il n'y ait rien dans l'ensemble de données risque de ne pas faire la transposition null -> 0
    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
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    174
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 174
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    J'ai essayé les 2 méthodes suivantes :
    - FieldByName('PkIdPosteSUP').asInteger qui converti bien null en 0
    - tester que la valeur n'est pas nulle ET différente de 0

    Les 2 méthodes fonctionnent

Discussions similaires

  1. [Delphi 2007] Version ESD
    Par rvzip64 dans le forum Delphi
    Réponses: 13
    Dernier message: 20/04/2007, 11h17
  2. Delphi 2007 disponible
    Par PierreDelcroix dans le forum Delphi
    Réponses: 22
    Dernier message: 27/03/2007, 18h32

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