Liste déroulante avec les données du champ

Discussions sur le module de base de données de StarOffice NeoOffice ou OpenOffice.org Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur: Vilains modOOos

Règles du forum
Cette section est dédiée au module Base et plus particulièrement sur le langage SQL ou sur les connexions aux SGBD tiers. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Pour accélérer les réponses, vous pouvez mettre en ligne votre base en joignant un fichier ODB : comment faire.

Liste déroulante avec les données du champ

Messagepar anne-sophie » 31 Oct 2009 15:37

Re-bonjour!
Je viens donc d'importer ma base de données (créée avec Lotus) dans Ooo Base.
J'ai par exemple un champ, contenant des données texte: "oui", non", "rarement"
Je souhaite que les données de ce champ s'affichent sous forme de liste déroulante, utilisant bien sûr les données existantes. Quelle est la procédure à suivre?
Merci beaucoup d'avance!
Dernière édition par anne-sophie le 05 Nov 2009 09:49, édité 4 fois au total.
OpenOffice 3.0 sous Linux
anne-sophie
NOOouvel adepte
NOOouvel adepte
 
Messages: 22
Inscrit le: 31 Oct 2009 11:45

Re: Transformer un champ de base de donnée existant

Messagepar jeanmimi » 31 Oct 2009 16:01

Bonjour,
C'est assez simple à faire.
Tu crées une table avec tes fréquences.
Et un table avec les Enregistrements.
Une requête SQL va chercher le contenu de la liste dans la table des fréquences et enregistre la valeur dans la table des Enregistrements.
L'exemple joint, même s'il est plus complexe, illustre comment faire.
Pièces jointes
Base avec liste par SQL.odb
(26.12 Kio) Téléchargé 40 fois
OOo 3.1.1 (version téléchargée depuis http://fr.openoffice.org/about-downloads.html)
SRB téléchargeable ici http://extensions.services.openoffice.o ... portdesign
Windows XP SP 3, Thunderbird, Firefox 3 , Java Runtime Environnement
Avatar de l’utilisateur
jeanmimi
GourOOou
GourOOou
 
Messages: 5753
Inscrit le: 03 Mar 2006 18:02
Localisation: Niort et sa Venise verte

Re: Transformer un champ de base de donnée existant

Messagepar anne-sophie » 31 Oct 2009 17:49

Merci beaucoup pour cette réponse!
Je viens de regarder votre exemple, je comprends le principe (même si je ne sais pas comment l'appliquer). Cependant, reproduire l'exemple en question m'obligerait à refaire ma base de 2000 enregistrements. Est-ce que vraiment il n'y a pas plus simple?
Je clique sur "navigateur de formulaires", et je sélectionne "txtLegendeduchamp". Puis je clique-droit dans le champ en question. Parmi les options qui s'affichent, il y a "contrôles", formulaire", et "remplacer par". Cette dernière option propose les choix "liste déroulante", boutons radio", et bien d'autres. Je choisis "liste déroulante". Logiquement, il devrait prendre en compte les valeurs du champ, mais ce n'est pas le cas. Je ne dois pourtant pas être bien loin...
OpenOffice 3.0 sous Linux
anne-sophie
NOOouvel adepte
NOOouvel adepte
 
Messages: 22
Inscrit le: 31 Oct 2009 11:45

Re: Transformer un champ de base de donnée existant

Messagepar jeanmimi » 31 Oct 2009 19:26

Oui, c'est ce que tu dois faire : Remplacer par ... Zone de liste
et dans l'onglet Données, tu choisis la commande SQL qui te fera venir les différents choix de la liste.
Contrôle Zone de liste.png
Contrôle Zone de liste.png (11.11 Kio) Consulté 220 fois
Pièces jointes
Base_Anne_Sophie.odb
(10.98 Kio) Téléchargé 20 fois
OOo 3.1.1 (version téléchargée depuis http://fr.openoffice.org/about-downloads.html)
SRB téléchargeable ici http://extensions.services.openoffice.o ... portdesign
Windows XP SP 3, Thunderbird, Firefox 3 , Java Runtime Environnement
Avatar de l’utilisateur
jeanmimi
GourOOou
GourOOou
 
Messages: 5753
Inscrit le: 03 Mar 2006 18:02
Localisation: Niort et sa Venise verte

Re: Transformer un champ de base de donnée existant

Messagepar anne-sophie » 31 Oct 2009 21:40

Oh, merci!
J'ai bien ma liste déroulante, mais elle ne contient toujours rien...
Et là où j'ai vraiment un doute, c'est dans l'onglet "données" des propriétés de ma zone de liste.
J'ai "type des propriétés de liste==>>liste des valeurs" (ça doit être ça, quoi d'autre sinon?), puis: "contenu de liste==>> " et là, je sèche. J'ai cherché la réponse dans votre exemple, mais il ne contient pas de données. Rien non plus dans la doc...il doit y avoir un truc simple mais qu'il faut connaître...
Comment faire pour que ma liste intègre automatiquement les données du champ?
Merci pour toutes vos peines!
OpenOffice 3.0 sous Linux
anne-sophie
NOOouvel adepte
NOOouvel adepte
 
Messages: 22
Inscrit le: 31 Oct 2009 11:45

Re: Transformer un champ de base de donnée existant

Messagepar jeanmimi » 31 Oct 2009 22:27

Je pensais que tu avais lu les tutoriels présents dans le forum ...
Pour avoir la liste des choix, passe le formulaire en mode Modification, puis un clic sur le contrôle Zone de liste, onglet Données, choisir SQL, un clic sur les trois petits points te permet de construire le code de la requête.
Si tu veux utiliser une liste des valeurs (c'est vrai qu'avec oui, non, rarement tu peux faire simple), il faut entrer ces trois valeurs.
Pièces jointes
Liste de valeurs d'une Zone de liste.jpg
OOo 3.1.1 (version téléchargée depuis http://fr.openoffice.org/about-downloads.html)
SRB téléchargeable ici http://extensions.services.openoffice.o ... portdesign
Windows XP SP 3, Thunderbird, Firefox 3 , Java Runtime Environnement
Avatar de l’utilisateur
jeanmimi
GourOOou
GourOOou
 
Messages: 5753
Inscrit le: 03 Mar 2006 18:02
Localisation: Niort et sa Venise verte

Re: Transformer un champ de base de donnée existant

Messagepar anne-sophie » 31 Oct 2009 23:51

Bonsoir,
Ca y est, ça marche enfin!
Avec le tutoriel ("débuter avec Base") et les explications je ne m'en sortais pas: ce que je voyais ne correspondait pas du tout à ce qui était indiqué (par exemple, un assistant était supposé s'ouvrir, mais ce n'était par le cas). J'ai démonté l'exemple que vous m'aviez envoyé, ce qui m'a permis de trouver de fil en aiguille la marche à suivre.
Mais c'est vraiment SUPER-COMPLIQUE: avec Lotus il suffisait de faire "propriétés du champ" "créer liste déroulante" et "créer avec données du champ", cela se faisait tout seul. Alors que là, c'est vraiment impossible de s'en sortir tout seul, si on n'a pas de solide connaissances de ce type de programme.
Enfin...je vais pouvoir utiliser ma base. Un grand merci pour votre patience!
OpenOffice 3.0 sous Linux
anne-sophie
NOOouvel adepte
NOOouvel adepte
 
Messages: 22
Inscrit le: 31 Oct 2009 11:45

Re: Transformer un champ de base de donnée existant

Messagepar Dans quelle étagère » 01 Nov 2009 11:02

Bonjour,
Pensez à mettre la balise [Résolu] dans le titre de votre premier message, avec la coche verte.
OpenOffice.org 3.1.1 sous Windows XP SP3
Avatar de l’utilisateur
Dans quelle étagère
MOOodérateur
MOOodérateur
 
Messages: 313
Inscrit le: 04 Oct 2008 19:28

Re: Transformer un champ de base de donnée existant

Messagepar anne-sophie » 01 Nov 2009 11:58

Re-bonjour,
Oui, et j'ai aussi oublié d'expliquer exactement comment on fait, pour les suivants:
-Ouvrir le formulaire en mode "conception"
-Activer le Navigateur de Formulaire (en bas à gauche, bien caché)
-A l'intérieur du NF, sélectionner UNIQUEMENT le contenu du champ qui vous intéresse, et non la légende. Exemple, vous avez:
abcchamp1
txtchamp1
Vérifiez que seul txtchamp1 est sélectionné. Laissez NF ouvert, ça peut servir.
-Faites un clic-droit dans votre formulaire à l'intérieur de champ1, et sélectionnez dans la boîte de dialogue qui s'ouvre: "remplacer par"..., puis "zone de liste".
-Fermez la boîte de dialogue, refaites un clic-droit, et choisissez cette fois "contrôle". Vous devriez avoir cette fois une boîte de dialogue avec trois onglets: "général", "données", et "évènements".
Vous devriez, parce que l'ensemble est un peu buggé, donc parfois pour une raison qui m'échappe on ne voit que l'onglet "général". Dans ce cas, cliquez dans n'importe quel champ du NF, puis resélectionnez votre txtchamp1.
-Dans l'onglet "général", fouillez bien, il y a une option "liste déroulante: oui-non" (pourquoi faire?). Il faut choisir oui bien sûr.
-Dans l'onglet "données", vérifiez que "Champs de données" contient bien "champ1" Après cela, accrochez-vous:
-Dans "type de contenu de liste", il ne faut pas choisir "liste de valeurs", ce qui paraîtrait naturel à tout néophyte. Ben non, il faut choisir "sql".
-Ce n'est pas fini, il y a ensuite le champ "contenu de liste". Cliquez sur le bouton avec les trois petits points, à droite. Une boîte de dialogue s'affiche, il faut sélectionner votre table de données, puis champ1 (pourquoi donc?...cela fait double emploi avec l'onglet données, il me semble...enfin bref...)
-Et puis, ma foi c'est tout, vous enregistrez, vous fermez la boîte de dialogue, vous passez en mode utilisateur pour admirer votre liste déroulante, et vous allez boire une bière pour fêter ça.
J'espère que c'était suffisamment clair, bien qu'une petite vidéo, à l'occasion...
Merci beaucoup pour l'aide, je lance un nouveau sujet avec une autre question!
OpenOffice 3.0 sous Linux
anne-sophie
NOOouvel adepte
NOOouvel adepte
 
Messages: 22
Inscrit le: 31 Oct 2009 11:45

Re: [Non résolu] Liste déroulante avec les données du champ

Messagepar anne-sophie » 05 Nov 2009 09:53

Bon, je me suis réjouie trop vite!

Je viens de m'apercevoir que ma liste déroulante n'est pas au point...lorsque je la déroule (en mode exploitation bien sûr), au lieu d'avoir:

oui
non
rarement

J'ai ceci:

oui
oui
oui
non
rarement
non
oui
...
...
et ceci à l'infini...il me "sort" les valeurs des quelque 2000 enregistrements en fait...
Et bien évidemment, pas moyen de faire une requête là-dessus, ça plante et on comprend pourquoi!
J'ai sans doute raté une marche, mais laquelle?...(j'ai suivi exactement la procédure indiquée çi-dessus)
Merci d'avance!

Le Modérateur a écrit: :alerte: Merci de ne pas inventer et de respecter la syntaxe des balises : ftopic3299.html
La balise [Non résolu] n'existe pas.
OpenOffice 3.0 sous Linux
anne-sophie
NOOouvel adepte
NOOouvel adepte
 
Messages: 22
Inscrit le: 31 Oct 2009 11:45

Re: Liste déroulante avec les données du champ

Messagepar Pierre-Yves Samyn » 05 Nov 2009 13:16

Bonjour

Je prends le fil en route, et... désolé, je repars du début...

Tu as importé une table contenant entre autres un champ comprenant les valeurs oui, non, rarement.

Le plus simple est de créer ton formulaire via l'assisant, puis, comme déjà indiqué remplacer la zone de texte concernée par un contrôle Liste déroulante.

Ensuite, afficher les propriétés de la liste et dans l'onglet Général, entrer les valeurs autorisées (oui, non, rarement) qu'il n'est pas possible de "récupérer" depuis les valeurs saisies (avec cette méthode). Le seul "truc" à connaître est que le passage à la ligne se fait par Maj+Entrée lors de la saisie des libellés :

Capture-1.png
Capture-1.png (7.75 Kio) Consulté 145 fois


C'est tout pour cette première méthode, simple.

Comme indiqué par jeanmimi, le mieux est de créer une table qui contiendra les choix (oui, non, rarement).

Cela permet plus facilement l'évolution des données : par exemple l'ajout / suppression des choix se fait en ajoutant/supprimant un enregistrement. Il n'est pas nécessaire d'ouvrir en modification tous les formulaires utilisant cette liste.

Dans le cas de libellés plus longs (que oui, non...) un autre avantage est apporté par la création d'un identifiant dans cette table. Par exemple :
0, oui
1, non
2, rarement

L'intérêt est alors de stocker dans les tables "liées" uniquement l'identifiant et non le libellé associé.

Un autre intérêt (que la taille) est la souplesse apportée en modification. Si tu souhaites remplacer "rarement" par "très épisodiquement" il suffit de modifier le libellé dans la table des choix. Aucune modification n'est à apporter aux enregistrements déjà saisis puisque l'identifiant reste le même.

Le problème, dans ton cas, est que les enregistrements déjà saisis l'ont été avec un libellé et non un code.

Il serait possible par des requêtes de remplacer les libellés par des codes pour mettre en oeuvre cette solution mais ce sera plus complexe que la solution simple précédemment exposée...
Pièces jointes
Liste.odb
(11.12 Kio) Téléchargé 9 fois
OOo 3.1.1 windows XP

A lire avant tout !
Pierre-Yves Samyn
GourOOou
GourOOou
 
Messages: 7434
Inscrit le: 02 Mai 2006 10:42

Re: Liste déroulante avec les données du champ

Messagepar anne-sophie » 05 Nov 2009 14:50

Merci encore!...je crois que je penche pour la solution complexe (j'irai brûler un cierge en espérant qu'elle conserve mes données existantes). De toute façon j'avais testé la solution simple et elle ne marche pas (j'avais une belle liste déroulante qui refusait de se dérouler!).

Code: Tout sélectionner   AgrandirRéduire
Il serait possible par des requêtes de remplacer les libellés par des codes pour mettre en oeuvre cette solution mais ce sera plus complexe que la solution simple précédemment exposée...


Bon, ce n'est pas un problème, puisque grâce à vous j'ai trouvé comment faire...
OpenOffice 3.0 sous Linux
anne-sophie
NOOouvel adepte
NOOouvel adepte
 
Messages: 22
Inscrit le: 31 Oct 2009 11:45

Re: Liste déroulante avec les données du champ

Messagepar Pierre-Yves Samyn » 05 Nov 2009 17:00

anne-sophie a écrit:De toute façon j'avais testé la solution simple et elle ne marche pas (j'avais une belle liste déroulante qui refusait de se dérouler!).


Je pense que tu conviendras avec moi que, comme le montre la base jointe à mon précédent message, la solution simple marche (fonctionne disons... :) )

Le fait que ta liste ne se déroulait pas indique plutôt un problème de mise en oeuvre... :)
OOo 3.1.1 windows XP

A lire avant tout !
Pierre-Yves Samyn
GourOOou
GourOOou
 
Messages: 7434
Inscrit le: 02 Mai 2006 10:42

Re: Liste déroulante avec les données du champ

Messagepar anne-sophie » 05 Nov 2009 17:52

Ah oui, effectivement!...j'avais confondu la rubrique "entrée de liste" dans l'onglet "général" et la rubrique "contenu de liste" dans l'onglet "données".
Maintenant, cela fonctionne...enfin, tout est relatif: sans les données du champ...snif...
OpenOffice 3.0 sous Linux
anne-sophie
NOOouvel adepte
NOOouvel adepte
 
Messages: 22
Inscrit le: 31 Oct 2009 11:45


Retour vers Base de données

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 3 invités