[Résolu][Base] Mise à jour liste déroulante depuis une autre
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Membre lOOyal
- Messages : 47
- Inscription : 08 févr. 2007 23:21
[Résolu][Base] Mise à jour liste déroulante depuis une autre
Bonjour, j'éspère que je trouverais l'aide qu'il me faut ici. J'ai beaucoup recherché, mais je n'ais rien trouvé concernant mon problème.
J'ai un formulaire qui contiend une liste déroulante. Je voudrais que lorsque je choisi une valeur dans la première liste déroulante, la deuxième liste s'actualise et affiche des valeurs qui sont en rapport avec la première.
Exemple : Dans la première liste, il y a " marque de voiture " (je ne siterais pas de marque). Dans ma liste "marque de voiture", je sélectionne par exemple :"grosse voiture". Et bien je voudrais que dans ma deuxième liste apparaisse alors toutes les valeurs concernat "Grosse voiture". Par exemple ma deuxième liste ferait apparaître : "Grosse voiture 3porte rouge, Grosse voiture verte".
Ceci est un exemple, mais le principe est là !
Merci d'avance.
J'ai un formulaire qui contiend une liste déroulante. Je voudrais que lorsque je choisi une valeur dans la première liste déroulante, la deuxième liste s'actualise et affiche des valeurs qui sont en rapport avec la première.
Exemple : Dans la première liste, il y a " marque de voiture " (je ne siterais pas de marque). Dans ma liste "marque de voiture", je sélectionne par exemple :"grosse voiture". Et bien je voudrais que dans ma deuxième liste apparaisse alors toutes les valeurs concernat "Grosse voiture". Par exemple ma deuxième liste ferait apparaître : "Grosse voiture 3porte rouge, Grosse voiture verte".
Ceci est un exemple, mais le principe est là !
Merci d'avance.
Dernière modification par totomath le 28 févr. 2007 22:44, modifié 2 fois.
mandriva 2007 free edition
Oo 2.1
Oo 2.1
-
- Membre OOrganisé
- Messages : 84
- Inscription : 03 janv. 2007 20:14
Salut!
Eh bien je suis en train de faire ce que tu cherche a faire.
En fait, il faut faire une macro qui modifie la requete SQL de la lite B , lors d'un clique sur la liste A.
Voila a quoi ca devrait ressembler (a tester et modifier si erreur de ma part)
Voila les fonctions dont tu as besoin pour ton projet.
J'espere t'avoir aidé.
A+
PS : La deuxieme liste doit etre une combobox (chez moi ça ne marche pas sur une liste)
Eh bien je suis en train de faire ce que tu cherche a faire.
En fait, il faut faire une macro qui modifie la requete SQL de la lite B , lors d'un clique sur la liste A.
Voila a quoi ca devrait ressembler (a tester et modifier si erreur de ma part)
Code : Tout sélectionner
REM on recupere les composants liste
lboxMarque = ThisComponent.DrawPage.Forms.getByName("MainForm").getByName("lbox_marque")
lboxVoiture = ThisComponent.DrawPage.Forms.getByName("MainForm").getByName("lbox_voiture")
REM on recupere l'id de la marque selectionnée
var_id_marque = lboxMarque.ValueItemList(lboxEnseigne.SelectedItems(0))
REM on modifie la requete SQL de la liste des voitures :
lboxVoiture.ListSource(0) = "SELECT nom_voiture, id_voiture FROM tbl_voiture WHERE id_marque ='" & var_id_marque &"'"
J'espere t'avoir aidé.
A+
PS : La deuxieme liste doit etre une combobox (chez moi ça ne marche pas sur une liste)
Dernière modification par inksoad le 26 févr. 2007 16:08, modifié 1 fois.
OOo 2.1 sous Windows 2000 SP4
-
- Grand Maître de l'OOffice
- Messages : 17187
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
Bonjour,
Pierre Yves avait proposé une base avec un formulaire ayant des contrôles sous formes de listes (ComboBox et Contrôle de table).
Initialement, cette base est réalisée pour des genres de film, d'où les noms des Tables et Requêtes.
http://user.services.openoffice.org/fr/ ... 042631.odb
Je l'ai trouvée dans ce fil :
http://user.services.openoffice.org/fr/ ... E9roulante
Pierre Yves avait proposé une base avec un formulaire ayant des contrôles sous formes de listes (ComboBox et Contrôle de table).
Initialement, cette base est réalisée pour des genres de film, d'où les noms des Tables et Requêtes.
http://user.services.openoffice.org/fr/ ... 042631.odb
Je l'ai trouvée dans ce fil :
http://user.services.openoffice.org/fr/ ... E9roulante
LibreOffice : Version : 25.2.0.3 (x64)(20 février 2025)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre lOOyal
- Messages : 47
- Inscription : 08 févr. 2007 23:21
Jeanmimi, ce n'est pas tout à fait se que je recherche. Mais sa poura surement me servir plus tard
Par contre, inksoad ta méthode me plait mais je ne comprend pas tout.
Il faut que je fasse une liaison? Entre id_marque et quoi?
Merci de ton aide

Par contre, inksoad ta méthode me plait mais je ne comprend pas tout.
Code : Tout sélectionner
lboxVoiture.ListSource(0) = "SELECT nom_voiture, id_voiture FROM tbl_voiture WHERE id_marque ='" & var_id_marque &"'"
Merci de ton aide
mandriva 2007 free edition
Oo 2.1
Oo 2.1
-
- Membre OOrganisé
- Messages : 84
- Inscription : 03 janv. 2007 20:14
En fait, je t'ai donné cette requete de base mais tout depend de comment est constuite ta base.
Pour faire simple je voyais les choses comme ca :
Une table Marque qui contient :
id_marque (identifiant auto incrementé)
Nom_marque (ex: Bmw, Peugot...)
Une table Voiture qui contien :
id_voiture (identifiant auto incrementé)
nom_voiture (ex : clio, megane ect...)
id_marque (fait reference a la table marque).
Donc la liaison est faite entre id_marque de la table Voiture et id_marque de la table marque.
A+
Pour faire simple je voyais les choses comme ca :
Une table Marque qui contient :
id_marque (identifiant auto incrementé)
Nom_marque (ex: Bmw, Peugot...)
Une table Voiture qui contien :
id_voiture (identifiant auto incrementé)
nom_voiture (ex : clio, megane ect...)
id_marque (fait reference a la table marque).
Donc la liaison est faite entre id_marque de la table Voiture et id_marque de la table marque.
A+
OOo 2.1 sous Windows 2000 SP4
-
- Membre lOOyal
- Messages : 47
- Inscription : 08 févr. 2007 23:21
Zut, il y a quelque chose qui cloche. Je pense que j'oubli de déclarer une variable en rapport avec ceci :
Pour que vous compreniez mieu, voici mon code
J'ai donc une erreur sur cette ligne Qui me dit :" Variable d'object non définie." Un peut embêtant.
Code : Tout sélectionner
lboxEnseigne
Pour que vous compreniez mieu, voici mon code
Code : Tout sélectionner
sub testliste
DIM lboxMarque as Object , lboxVoiture AS Object
DIM var_id_marque as string
REM on recupere les composants liste
lboxMarque = ThisComponent.DrawPage.Forms.getByName("Standard").getByName("lbox_marque")
lboxVoiture = ThisComponent.DrawPage.Forms.getByName("Standard").getByName("lbox_voiture")
REM on recupere l'id de la marque selectionnée
var_id_marque = lboxMarque.ValueItemList(lboxEnseigne.SelectedItem(0))
REM on modifie la requete SQL de la liste des voitures :
lboxVoiture.ListSource(0) = "SELECT nom_voiture, id_voiture FROM T_Voiture WHERE id_marque ='" & var_id_marque &"'"
end sub
Code : Tout sélectionner
var_id_marque = lboxMarque.ValueItemList(lboxEnseigne.SelectedItem(0))
mandriva 2007 free edition
Oo 2.1
Oo 2.1
-
- Grand Maître de l'OOffice
- Messages : 17187
- Inscription : 03 mars 2006 16:02
- Localisation : Venise verte
-
- Membre lOOyal
- Messages : 47
- Inscription : 08 févr. 2007 23:21
Bonne idée, voici le fichier http://user.services.openoffice.org/fr/ ... 103320.odb
Merci a vous.
Merci a vous.
mandriva 2007 free edition
Oo 2.1
Oo 2.1
-
- Membre OOrganisé
- Messages : 84
- Inscription : 03 janv. 2007 20:14
Ok, l'erreur se trouve sur la ligne avec var_id_marque :
Voila la bonne ligne :
Par contre, pour la deuxieme liste, il faut que tu utilise un composant de type "ComboBox".
Tiens moi au courant ^^
A+
Voila la bonne ligne :
Code : Tout sélectionner
var_id_marque = lboxMarque.StringItemList(lboxMarque.SelectedItems(0))
Tiens moi au courant ^^
A+
OOo 2.1 sous Windows 2000 SP4
-
- Membre lOOyal
- Messages : 47
- Inscription : 08 févr. 2007 23:21
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Bonjour
Tu peux essayer :
Explications :
- var_id_marque est de type integer, donc pas de quote dans la syntaxe SQL
- tu modifies une propriété "tableau", donc tu lui passes... un tableau
Tu peux essayer :
Code : Tout sélectionner
sub testliste
DIM lboxMarque as Object , lboxVoiture AS Object
DIM var_id_marque as integer
lboxMarque = ThisComponent.DrawPage.Forms.getByName("Standard").getByName("lbox_marque")
lboxVoiture = ThisComponent.DrawPage.Forms.getByName("Standard").getByName("lbox_voiture")
var_id_marque = lboxMarque.SelectedItems(0)
lboxVoiture.ListSource() = array("SELECT nom_voiture, id_voiture FROM T_Voiture WHERE id_marque =" & var_id_marque)
lboxVoiture.refresh
end sub
- var_id_marque est de type integer, donc pas de quote dans la syntaxe SQL
- tu modifies une propriété "tableau", donc tu lui passes... un tableau

-
- Membre lOOyal
- Messages : 47
- Inscription : 08 févr. 2007 23:21
-
- Membre OOrganisé
- Messages : 84
- Inscription : 03 janv. 2007 20:14
-
- Fraîchement OOthentifié
- Messages : 5
- Inscription : 24 déc. 2008 09:28
Re: [Résolu][Base] Mise à jour liste déroulante depuis une autre
Merci Pierre Yves
Open Office version 3.00 Systeme Windows XP Home, Vista et Linux distribution Ubuntu