Forcer la valeur d'un dblookupcombobox [Résolu]

cs_lily80
Messages postés
6
Date d'inscription
lundi 22 octobre 2007
Dernière intervention
23 octobre 2007
- 22 oct. 2007 à 14:55 - Dernière réponse : cs_lily80
Messages postés
6
Date d'inscription
lundi 22 octobre 2007
Dernière intervention
23 octobre 2007
- 23 oct. 2007 à 14:33
Bonjour ;

Je voudrai savoir comment faire pour forcer un dblookupcombobox sur une de ses valeurs sans que ce soit à chaque fois la même valeur.

En fait, j'ai un premier dblookupcombobox qui est relié à une table livre, et un deuxième dblookupcombobox qui est relié à la table éditeur, je veux que lorsque je sélectionne un livre et que j'appuie sur un bouton, le 2ème dblookupcombobox se positionne sur l'éditeur du livre sélectionné.

Merci d'avance. 
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_lily80
Messages postés
6
Date d'inscription
lundi 22 octobre 2007
Dernière intervention
23 octobre 2007
- 23 oct. 2007 à 14:33
3
Merci
Je viens de trouver dans un forum, la solution pour affecter une valeur par défaut à un dblookupcombobox, il suffit de se positionner sur le bon enregistrement de la table correspondante au dblookupcombobox et d'affecter la valeur du dataset de la table à la propriété key value :

Table.Locate('key_field', valeur, [loPartialKey]);
dblookupcombobox.KeyValue:= dblookupcombobox.ListSource.DataSet.FieldByName('field_name').Value;

Merci à tous ceux qui m'ont aidé.

Merci cs_lily80 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_lily80
cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 22 oct. 2007 à 20:36
0
Merci
wouichhhhhh....j'ai pas le sentiment que çà soit la bonne méthode mais tu peux néanmoins utiliser l'évènement OnCloseUp du premier et taper un lookup pour afficher l'éditeur dans le deuxième.

Mais je te confirme que c'est vraiment barbare !

cantador
Commenter la réponse de cs_cantador
cs_lily80
Messages postés
6
Date d'inscription
lundi 22 octobre 2007
Dernière intervention
23 octobre 2007
- 22 oct. 2007 à 20:55
0
Merci
Désolée de poser la question mais que veux tu dire par taper un lookup ?
Commenter la réponse de cs_lily80
khawarizm
Messages postés
121
Date d'inscription
mercredi 22 novembre 2000
Dernière intervention
4 août 2010
- 22 oct. 2007 à 21:18
0
Merci
Salut lily80 ; si tu veux forcer le deuxième lookupcombobox sur une valeur s’est un peu bizarre non ?! Parce que un dblookupcombobox est fait justement pour permettre à l’utilisateur  de faire un choix ;  mais si tu veux toujours réaliser ça , je pense que tu devrais faire un filtre sur la table reliée au deuxième DBlookupCombobox  selon le keyvalue du premier ou mieux que ça utiliser pour le deuxième Dblookupcombobox une requête paramétrée selon le keyvalue du premier


, j’espère que c’est claire . Bonne chance
Commenter la réponse de khawarizm
cs_lily80
Messages postés
6
Date d'inscription
lundi 22 octobre 2007
Dernière intervention
23 octobre 2007
- 22 oct. 2007 à 21:29
0
Merci
Je crois que je me suis mal exprimée, en fait, ce que je veux dire par forcer un dblookupcombobox sur une valeur, c'est en fait en sélectionner une par défaut mais lui permettre de la changer. Lorsque je sélectionne un livre, le dblookupcombobox éditeur doit afficher l'éditeur du livre avec la possibilité de sélectionner un autre éditeur par la suite.
Commenter la réponse de cs_lily80
cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 22 oct. 2007 à 22:17
0
Merci
donc avec tes explications cela exclu la jointure la requête SQL
et même le filtre..


Reste le lookup ou le locate.. qui te laisse la possiblité de changer l'éditeur dans le 2éme car c'est simplement l'affichage de la valeur par défaut du combo qui va changer mais dès que va cliquer, tu retrouveras la liste des éditeurs.

Pour le lookup ou le locate ce sont deux méthodes liées à un dataset..
il y a l'aide de delphi et des exemples sur le forum..
tu verras lorqu'on les a utilisées, on ne peut plus s'en passer.
il te faut qd même le code de l'éditeur stocké dans la table des livres mais je pense que tu l'as fait.
@+
cantador
Commenter la réponse de cs_cantador
khawarizm
Messages postés
121
Date d'inscription
mercredi 22 novembre 2000
Dernière intervention
4 août 2010
- 22 oct. 2007 à 23:59
0
Merci
Re ; lily80 ; voilà une réponse à ta question un peu bizarre mais, elle marche !!! <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>







procedure TForm1.Button1Click(Sender: TObject);








var 








Option : TLocateOptions;








Vari: Type ; 








//même type que le keyfield du 1er DBLookupComboBox








begin








vari:=DBLookupComboBox1.ListSource.DataSet.FieldByName ('Keyfield').Value;









   











 With DBLookUpComboBox2 Do









  
  Begin









    ListSource.DataSet.First ;









// Recherché dans  la deuxième table











    


Option := [loPartialKey];









    Table2.Locate('keyfield',vari,option);









// Affectation du numéro d enregistrement au keyvalue du 

2eme 




DBlookupCombobox











    DBLookUpComboBox2.KeyValue := Table2.recNo;









    End;









  end;








 









NB : il faut que le KeyField des deux DBLookupComboBox soit le champ commun des deux tables.  











 
Commenter la réponse de khawarizm
cs_lily80
Messages postés
6
Date d'inscription
lundi 22 octobre 2007
Dernière intervention
23 octobre 2007
- 23 oct. 2007 à 10:51
0
Merci
Merci, pour vos propositions, mais j'ai le regret de vous dire que ça ne marche pas. En fait, au niveau de la table, tout se passe bien, j'ai mis un dbgrid rattaché à la table éditeur qui m'a permis de constater que c'était le bon éditeur qui est pointé, cependant au niveau du dblookupcombobx, rien ne se passe.

Donc, le problème revient à trouver une ou plusieurs instructions pour sélectionner une valeur du dblookupcombobox.
Commenter la réponse de cs_lily80

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.