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 :

Utilisation du DBLookupCombobox


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut Utilisation du DBLookupCombobox
    Bonjour à tous,

    J'ai 3 champs d'une table à mettre à jour par l'intermédiaire de 3 DBLookupComboBox et ça ne fonctionne pas bien :

    je ne récupère qu'1 seul champ dans la liste déroulante et, en plus, je n'arrive pas à le sélectionner !

    J'ai regardé la FAQ mais je n'ai pas eu toutes les réponses.

    Faut-il associer autant de DataSet qu'il y a de LookupCombobox ? Cette solution me semble lourde, non ?

    Comment définir, dans le Dataset le champ servant à se positionner sur l'enreg que l'on veut modifier ?

    Auriez-vous un source en exemple ?

    Merci d'avance.

    (Delphi 2005 et Interbase 6.0)

  2. #2
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    le contenu de tes lookup doivent être dans un dataset que tu liera avec un DataSource via la propriété ListSource et ListField de ta lookupcombo

    le champ que tu veux mettre à jour dans ta base est lui relié à la propriété Datasource / DataField

    Tu as donc à priori 4 Dataset : La table a modifier et les 4 "sources" remplissant tes 3 combos différentes.

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut
    Merci : c'est un peu mieux... Mais c'est pas ça...
    Je n'arrive pas à mettre à jour ma table, je dois être un gros pingouin et qqchose m'échappe...

    Dans le Dataset de mise à jour, j'ai écrit en SelectSQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select CHAMP_1 , CHAMP_2, CHAMP_3
    from MA_TABLE
    WHERE PROPRIETE_10= 'A2'
    Dans ModifySQL, j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    update MA_TABLE
    set
      CHAMP_1 = :champ_1,
      CHAMP_2 = :champ_2,
      CHAMP_3 = :Champ_3
    where
      PROPRIETE_10= 'A2'
    CHAMP_1, CHAMP_2, CHAMP_3 sont les données DataField des 3 LookupCombo.

    Comment rendre (clause WHERE) variable dans le DataSet ?
    Je récupère cette valeur depuis un TEdit.

  4. #4
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    Les DBLookUpComboBox, si elles sont reliées a ton Dataset via la propriété "DataSource et DataField" modifient eux-même ta table, il ne reste plus qu'a valider avec un
    Pas besoin de requête SQL Update

  5. #5
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    Pour réponde à ta question
    Comment rendre Code:
    PROPRIETE_10
    (clause WHERE) variable dans le DataSet ?
    Je récupère cette valeur depuis un TEdit.
    Il faut passer par un Paramètre
    Sur ton objet Query tu vas sur la propriété Params et tu en ajoute un de type "String"

    ensuite tu écriras ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Query1.active:=false;
    Query1.parambyname('Param_PROPRIETE_10').asstring:=Edit1.text;
    Query1.active:=true;
    Et dans le SQL tu remplaces ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    where 
      PROPRIETE_10= 'A2'
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    where 
      PROPRIETE_10= :Param_PROPRIETE_10
    C'est une solution parmis d'autres, bonne fin de journée

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut
    J'ai essayé, je n'arrive toujours pas à mettre à jour ma table.
    Après :
    j'ai fait un commit
    J'ai également vérifié en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TDataModule2.IBDSDialAct01BeforePost(DataSet: TDataSet);
    begin
     ShowMessage(fDialAct.DBLCBNotat.Keyvalue);
    end;
    (IBDSDialAct01 : mon dataset et fDialAct.DBLCBNotat : mon DBLookupCombo).
    La valeur retournée est conforme à ce que j'attends.
    D'autre part, je suis obligé de mettre un ordre UPDATE dans le DataSet sinon je plante ("Source de données non ouverte en mise à jour" ou un truc de ce genre là).

    Je vais continuer à chercher... Merci pour tout.

  7. #7
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    Bonjour Vulcanos,
    Tes composants DBLookup ont ils leur propriété AutoEdit = True ? Si oui dès que tu modifie ta sélection ton dataset doit passer en mode édition.
    Tu utilises quoi comme composant pour te connecter à ta base ? BDE ? DBExpress ? Autres ?

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut
    Bonjour Sylvain,

    Je n'ai pas de proprité AutoEdit associé au composant (j'ai fait F1 pour vérifier !) et il n'y a rien qui y ressemble.

    J'utilise les composants INTERBASE (IBX) et Delphi 2005.

  9. #9
    Membre chevronné
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Par défaut
    je ne les jamais utilisé ces composants là désolé je ne peux pas d'aider plus

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut
    Sylvain,

    J'ai résolu mon problème ... Ce n'est pas trés beau, mais ça fonctionne en attendant mieux... J'ai récupéré les valeurs des Keyvalues, puis au moment de valider, j'exécute un SQL en mise à jour :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    IBSQL1.ParamByName('InNomAct').AsString := InNomAct;
      IBSQL1.ParamByName('InNtAct').AsInteger := InNtAct;
      IBSQL1.ParamByName('InStAct').AsInteger := InStAct;
      IBSQL1.ParamByName('InVlAct').AsInteger := InVlAct;
      IBSQL1.ExecQuery;
      IBTransaction1.Commit;
    InNomAct, ..., InVlAct étant mes Keyvalues.

    En tout cas, encore merci pour tous tes conseils.

    Trés bonne journée.

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

Discussions similaires

  1. Utiliser la roulette de la souris dans un DBLookupComboBox
    Par lagunss dans le forum Composants VCL
    Réponses: 1
    Dernier message: 14/10/2005, 22h35
  2. pb d'utilisation d'un dblookupcombobox
    Par pit9.76 dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/08/2005, 16h34
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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