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 :

firebird dbgrid et boolean


Sujet :

Bases de données Delphi

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut firebird dbgrid et boolean
    bonjour

    MEILLEURS VOEUX A TOUS POUR 2009

    je commence l'année par un casse tête !!

    j'ai bien compris comment créer un domaine pour faire des champ booléen dans firebird et comment les afficher avec un TBDcheckbox

    Mais le problème se pose sur les DBgrid et notamment celles qui permettent d'afficher les booleens sous formes de checkbox comme le compo SMdbgrid de scalabium ?

    est ce qu'il y a une solution ? Sinon cela remet en cause tout mon projet firebird, car mes utilisateurs actuels ont l'habitude des checkbox dans les grilles !

    Cordialement

  2. #2
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Bonne année à toi aussi.

    Essaies d'ajouter un champ calculé de type booléen basé sur ton champ FB.

    Ex :
    Dans l'evnt OnCalcFields de ta table ou Query, Ajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      if DataSet.FieldByName('FB_Field').AsInteger = 0 then 
            DataSet.FieldByName('Calc_Field').Asboolean := False
      else DataSet.FieldByName('Calc_Field').Asboolean := True;
     
    //Ou d'une Façon simplifiée
     
         DataSet.FieldByName('Calc_Field').Asboolean := 
                             DataSet.FieldByName('FB_Field').AsInteger = 0;
    Et dans ton DBGrid, tu utiliseras le champs calculé 'Calc_Field' qui reflète exactement ton Champs FB.

    Bon Dév.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut avec FIBplus
    J'ai téléchargé la démo des compo FIBplus
    Et ca fonctionne avec les dbgrid qui autorise l'affichage des checkbox

    mais 235 Euro ouf c'est chère (le tiers du prix de Delphi)


    A+

  4. #4
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Effectivement, il y a un souci avec les champs "boolean" de firebird et SMdbgrid. A l'époque, j'avais résolu le problème en modifiant les sources de SMdbgrid. Depuis, j'utilise le dbgrid EhLib qui est mieux adapté à firebird et qui ne présente pas ce problème.

    J'avais fait les modifications suivantes dans SMDBGrid.pas
    FlatChecked - Pour mettre les AsBoolean ou assimilés en 3D ou flat
    FieldTypeBoolean - Pour faire apparaître les AsBoolean en CheckBox. Les AsBoolean n'étant pas supporté
    par certaines bases de données, cette fonction permettre de prendre ftSmallint et ftInteger comme s'il
    s'agissait de AsBoolean
    Modification de la présentation CheckBox si position "Flat" de la grille
    Le nombre de lignes modifiées est important. Je t'adresse mes sources modifiées, tu verras ce que tu peux faire avec.
    J'avais fait cette modif pour un usage strictement personnel. S'il s'agit d'une application commerciale, il faut certainement demander l'autorisation à l'auteur pour modifier les sources.
    Bon courage
    Fichiers attachés Fichiers attachés

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    839
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 839
    Points : 262
    Points
    262
    Par défaut test
    bonsoir,

    merci pour les infos
    j'ai recompilé avec vos sources et ca fonctionne comme indiqué

    par contre le champ redefini en checkbox a l'air en lecture seul !
    est ce normal ? en fait cela ne me gene pas trop car la plupart du temps mes dbgrid sont en lecture; les modif sont faites sur un formulaire avec un champ DBcheckbox

    A+

  6. #6
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    par contre le champ redefini en checkbox a l'air en lecture seul !
    est ce normal ? en fait cela ne me gene pas trop car la plupart du temps mes dbgrid sont en lecture; les modif sont faites sur un formulaire avec un champ DBcheckbox
    Effectivement, il est seulement en lecture. J'ai choisi cette solution, car je n'utilise jamais un dbGrid pour faire une insertion ou une modification.

    Ce point doit être assez facile à modifier.

    Bon courage

Discussions similaires

  1. Boolean et FireBird
    Par kaouane dans le forum Firebird
    Réponses: 5
    Dernier message: 03/08/2009, 18h43
  2. BCB6-FireBird-Debutant-Afficher de donnees dans un DBgrid
    Par o_live dans le forum C++Builder
    Réponses: 1
    Dernier message: 07/05/2009, 11h04
  3. Erreur firebird et dbgrid
    Par BXDSPORT dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/09/2008, 08h17
  4. UIB, DBGrid et Firebird
    Par MICLANG dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/12/2006, 13h41

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