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 :

Multisélection avec DBCheckBox et champ booléen


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 37
    Par défaut Multisélection avec DBCheckBox et champ booléen
    Bonjour,

    Je tente de créer un DBCtrlGrid qui contient un DBCheckBox relié à un champ calculé booléen du dataset ainsi qu'un champ Edit qui affiche un libellé relié au dataset également.
    A l'affichage, les libellés s'affichent mais je n'arrive pas à gérer correctement le DBCheckBox.
    Sur le OnClick du DBCheckBox, j'ai codé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     if pdaDataModule.ADOQry_ComSauceboolSauce.Value = true then
     begin
       pdaDataModule.ADOQry_ComSauce.Edit;
       pdaDataModule.ADOQry_ComSauceboolSauce.Value := false;
       exit;
     end
     else if pdaDataModule.ADOQry_ComSauceboolSauce.Value = false then
     begin
       pdaDataModule.ADOQry_ComSauce.Edit;
       pdaDataModule.ADOQry_ComSauceboolSauce.Value := true;
       exit;
     end;
    Je veux que la valeur du booléen boolSauce prenne la valeur true ou false selon que le dbcheckbox est coché ou non.
    Or, avec ce code, ça boucle déjà à l'affichage du formulaire, car il passe dans le OnClick?!
    Je sais qu'il existe les SMDBGrid qui permettent de gérer des multisélection mais je dois ne coder qu'avec du natif Delphi.. Grrrr!
    Des idées?
    Merci!

  2. #2
    Membre éprouvé
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Par défaut
    Bonsoir,

    En admettant que ton TDBCheckBox s'appelle tout simplement DBCheckBox1, pourquoi ne pas écrire tout simplement qqchose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       pdaDataModule.ADOQry_ComSauce.Edit;
       pdaDataModule.ADOQry_ComSauceboolSauce.Value := DBCheckBox1.Checked;
    ?

    @ +

  3. #3
    Membre émérite Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 16
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Par défaut
    Bonjour,
    ton problème doit-être résolu. Cependant si cela boucle toujours c'est parce que tu affecte une nouvelle valeur à ton TDBChecekBox via son lien datalink sur le champs dont tu changes la valeur.
    Or le onclick est déclenché sur le ondatachange du champs qui lui-même suit l'ouverture de ton ensemble de données ou le changement d'enregistrement dans celui-ci. (donc à l'ouverture de ta fiche sans doute)

    En conséquence de quoi ne le fait qu'en cas de besoin réel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     if (pdaDataModule.ADOQry_ComSauceboolSauce.Value <> DBCheckBox1.Checked) then
     begin
        pdaDataModule.ADOQry_ComSauceboolSauce.Datasource.Dataset.edit;
        pdaDataModule.ADOQry_ComSauceboolSauce.Value := DBCheckBox1.Checked;
      end;
    Mais ce qui m'embête c'est pourquoi coder le Onclick du DBCheckbox, ne fait-il pas lui même la mise à jour du champs "ADOQry_ComSauceboolSauce" ?

    a+

Discussions similaires

  1. [AC-2007] Problème de syntaxe INSERT INTO avec champs booleéns
    Par tAKAmAkA dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/09/2009, 16h57
  2. Multisélection avec des DBCheckBox
    Par darkman1811 dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/06/2008, 12h12
  3. Créer un champ booléen – case à cocher avec VBA
    Par fredoh dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/06/2007, 13h24
  4. Update champ avec le meme champ de la meme table
    Par Baquardie dans le forum Langage SQL
    Réponses: 7
    Dernier message: 04/06/2004, 11h17

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