Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2597 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  MAJ comobo box dans un formulaire Access

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MAJ comobo box dans un formulaire Access

n°974159
kilkenny1
Posté le 07-02-2005 à 15:49:29  profilanswer
 

Bonjour,
 
J'ai crée un forms sous Access, qui édite une table d'une base de données et ajoute des enregistrements.
J'ai 2 combox box (entre autres): dans la première l'utilisateur choisit dans une list une chaine de caractere (UN, DEUX ou TROIS par exemple).
Je voudrais mettre à jour la combo box numéro 2 suivant la string choisie dans la combo box 1. J'ai trouvé une solution : écrire le code VB suivant :
 
Private Sub member1_GotFocus()
Dim FirstComboBoxValue As String
FirstComboBoxValue = FirstComboBox.Value
SecondComboBox.RowSource = "SELECT dbo_perfiscal.id, dbo_perfiscal.membre1, dbo_perfiscal.pre_accessor FROM dbo_perfiscal WHERE (((dbo_perfiscal.pre_accessor) = """ & FirstComboBoxValue & """ ))ORDER BY dbo_perfiscal.membre1"
End Sub
 
Cela marche bien, le problème c'est que cela met à jour les autres enregistrements aussi. Je pensais que le code s'exécutait sur le record en cours, mais non cela impacte tous les autres records .... Est-ce normal ? Quelle est la solution ? Je crois que je pourrais essayer d'utiliser l'Expression Builder' disponible dans VB mais je ne sais pas trop m'en servir.
 
 
Merci de votre aide.
KilKenny

mood
Publicité
Posté le 07-02-2005 à 15:49:29  profilanswer
 

n°974173
FlorentG
Posté le 07-02-2005 à 15:58:43  profilanswer
 

Quand tu modifies le RowSource d'un contrôle, ça va le modifier pour tous les enregistrements...

n°974192
kilkenny1
Posté le 07-02-2005 à 16:05:50  profilanswer
 

ah OK merci pour ta réponse.
comment je fais donc pour modifier le row source de l'enregistrement courant ?
 
Merci

n°974194
FlorentG
Posté le 07-02-2005 à 16:06:43  profilanswer
 

Tu fais comme t'as fait, sauf que quand tu passes à un autre enregistrement, tu remet à zéro le RowSource

n°974207
kilkenny1
Posté le 07-02-2005 à 16:10:44  profilanswer
 

Excuse moi je ne saisis pas. Je remets à zéro le row source de quel enregistrement ? et si je le mets à 0, il ne le fait pas pour tous les enregistrements ?
(Je ne vois pas bien ce que tu me conseille de faire en fait ...)
Merci pour ton aide (précieuse et rapide, c'est cool de ta part.

n°974209
FlorentG
Posté le 07-02-2005 à 16:11:52  profilanswer
 

J'veux dire le Rowsource de ta deuxième combobox, tu la remet comme elle devrait être au début

n°974229
kilkenny1
Posté le 07-02-2005 à 16:21:25  profilanswer
 

Ouah je suis largué, peut-être aussi que je me suis mal exprimé au début.
J'ai un enregistrement n.
Combox1 = UN     Combox2=List affichée avec param UN
enregistrement n+1:
Combox1 = DEUX   Combox2=List affichée avec param DEUX
 
Et bien quand je clique sur la combo2 du record n+1 et bien cela change la valeur du n aussi. Donc quand tu dis : mettre à 0 le Rowsource de la deuxième combobox (n ou n+1 ?) et comment est ce que je fais cela (string vide?). Quel va être l'incidence.
 
Merci de ta patience.

n°974237
FlorentG
Posté le 07-02-2005 à 16:26:20  profilanswer
 

Ah ok je vois. Il faut effectivement mettre une string vide quand tu passes à la suite. En fait, quand tu passes à un autre enregistrement, le rowsourcene change pas, donc dans l'enregistrement n+1, combobox2 aura un rowsourcequi sera pas en rapport avec combobox1. Donc dès que tu passes à un autre enregistrement, faut changer le rowsource.

n°974261
kilkenny1
Posté le 07-02-2005 à 16:33:57  profilanswer
 

oui mais l'utilisateur pourra cliquer où il veut (sur tous les records possibles, pas forcément sur n+1, mais sur n-4 aussi ...). Donc j'ai l'impression que ca devient compliquer, ou alors je ne vois pas bien ce que tu essayes de m'expliquer ... C'est pas possible de changer  
uniquement l'enregistrement courant dans un formulaire access ?

n°974267
FlorentG
Posté le 07-02-2005 à 16:38:29  profilanswer
 

En fait, dès que tu change d'enregistrement, tu exécutes la fonction member1_GotFocus, donc celle qui met le bon RowSource

mood
Publicité
Posté le 07-02-2005 à 16:38:29  profilanswer
 

n°974279
kilkenny1
Posté le 07-02-2005 à 16:42:08  profilanswer
 

oui c'est super embetant, car pour moi le row source dépend de ce qu'il a dans ma combo1 et c'est vraiment bizarre comme comportement de mettre à jour tous les enregistrements, je vois pas du tout comment m'en sortir. Ce n'est pas possible dans un formulaire Access d'utiliser un code comme Combobox.rowsource (relatif a l'enregistrement courant ?). Sinon quel est le moyen de modifier seulement l'enregistrement courant ?
 
Merci de ton aide.

n°974290
FlorentG
Posté le 07-02-2005 à 16:46:46  profilanswer
 

Sinon essaye de faire ça :
 
On va dire que ton formulaire s'appelle FormPouet.
 
Enregistre ta requête, et met ça dedans :

SELECT dbo_perfiscal.id, dbo_perfiscal.membre1, dbo_perfiscal.pre_accessor FROM dbo_perfiscal WHERE (((dbo_perfiscal.pre_accessor) = Forms![FormPouet]![FirstComboBoxValue]))ORDER BY dbo_perfiscal.membre1"


 
Ensuite tu la met en RowSource de ta ComboBox. Déjà regarde si ça marche. Sinon met dans l'évenement qui va bien (je sais plus lequel, quand on change d'enregistrement), fait un combobox2.requery()

n°974346
kilkenny1
Posté le 07-02-2005 à 17:16:50  profilanswer
 

Bon j'ai essayé. C'est pareil. (je ne vois pas ce que dois faire le requery).
Je t'explique le comportement que je viens de voir en fait.
Je pensais que les autres enregistrement étaient modifiés mais mon collègue m'a suggeré autre chose. En fait quand je regarde le résultat dans la table, les autres records n'ont pas été modifiés (il garde la veleur initiale). Ce qui se passe en fait c'est que, dans le formulaire, la combo devient vide (je pensais qu'elle était modifié). Elle devient vide car ne pouvant afficher la valeur, elle affiche blanc. Il faudrait que je trouve un autre type de combox box (genre combo box avec des propriétés différentes (qui permette d'afficher une valeur qui ne soit pas dans sa liste ...)), est-ce que tu me suis ?
 
Nicolas

n°974439
FlorentG
Posté le 07-02-2005 à 18:24:58  profilanswer
 

D'où la solution que je t'ai proposé ;) En faisant un requery, ça remet à jour la combobox 2

n°974457
kilkenny1
Posté le 07-02-2005 à 18:37:15  profilanswer
 

D'accord je comprendre à comprendre ton raisonnement, je vais essayer de trouver l'évènement qui va bien ... (change ?).
Merci;

n°974463
kilkenny1
Posté le 07-02-2005 à 18:39:42  profilanswer
 

je ne vois pas .... J'ai le code suivant :
 
Private Sub member1_GotFocus()
Dim FirstAccessorValue As String
FirstAccessorValue = FirstAccessor.Value
member1.RowSource = "SELECT dbo_perfiscal.id, dbo_perfiscal.membre1, dbo_perfiscal.pre_accessor FROM dbo_perfiscal WHERE dbo_perfiscal.pre_accessor = """ & Forms![JCF Partners Reports Maintenance]!FirstAccessor.Value & """ ORDER BY dbo_perfiscal.membre1"
End Sub
 
Private Sub member1_Click()
member1.Requery
End Sub
 
 
 
Je vais essayer d'autres évènements ....

n°974465
FlorentG
Posté le 07-02-2005 à 18:41:03  profilanswer
 

Pour la requête, enregistre-la en temps que requête stockée (donc tu va dans le truc requête, tu va en mode SQL et tu inscrit la requête. Ensuite tu la met en RowSource, puis dans l'évenèment après changement d'enregistrement, tu met ton requery.

n°974469
kilkenny1
Posté le 07-02-2005 à 18:45:38  profilanswer
 

j'ai essayé afterupdate, change, click, c'est pas ça ... je cherche

n°974484
kilkenny1
Posté le 07-02-2005 à 18:54:40  profilanswer
 

j'étudie aussi la fonction Private Sub member1_NotInList(NewData As String, Response As Integer)
 
Si la donnée n'est pas dans la liste ...
Mais il ne passe même pas dedans, je comprends pas tout ...

n°974512
kilkenny1
Posté le 07-02-2005 à 19:03:48  profilanswer
 

Bon je dois partir. Je te remercie bcp pour ton aide. Je continue demain matin à chercher.
Bonnne soirée.
Nicolas

n°974513
FlorentG
Posté le 07-02-2005 à 19:04:04  profilanswer
 

Ok :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  MAJ comobo box dans un formulaire Access

 

Sujets relatifs
Modifier le type d'un élément de formulaire en javascriptMigration Access/VBA/Windows=> PHP/MySQL/Linux
Access et SQLPHP + ODBC access => Format DATETIME
[HTML/JS/PHP] accèder à une variable d'un formulaire[VB] pb connection VB & ACCESS !!!
Au_ secours ! : formulaire -> select- > afficher résultatsequivalent pseudo-table dual sous access
Formulaire pour bon de commande ?réalisation base de données avec vb et access XP
Plus de sujets relatifs à : MAJ comobo box dans un formulaire Access


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR