[BASE][MYSQL] Pb avec les formulaires qui n'affichent pas tous les champs.

Via Nabble.

Bonjour.
Petit souci avec BASE et MySQL que je ne comprends pas...

1- J'utilise un MySQL serveur sur une Dedian qui écoute sur le port 3306
2- Sur un client Windows XP, j'attaque MySQL via ODBC.
3- J'ai crée les tables depuis BASE vers MySQL via cette connexion.
4- Il y a une table principale qui se nomme "Prod" et d'autres tables pour
les utilisateurs, des communes...
5- Je crée des formulaires dans BASE pour enrichir et interroger la base
sous MySQL, tout se passe merveilleusement bien.

Où est mon souci ? Les formulaires !!!

- Quand je vais dans BASE, et que je crée un formulaire tout bête sous forme
de tableau par exemple, je peux, après y avoir entré des données, y faire
toutes les interrogations et recherches que je souhaite, les champs
apparaissent parfaitement. (champs utilisateurs, communes...)
- Pour faciliter la saisie des données et limiter les erreurs de saisie,
dans la manière d'écrire des communes par exemple, je souhaite mettre des
"listes déroulantes" qui vont chercher dans la base la table Communes" et
afficher le contenu ensuite dans une liste ensuite.
- Je vais donc en édition sur mon formulaire, sur la colonne concernée, clic
droit et "Remplacer par zone combinée", je fais les liaisons nécessaires
vers la table Communes, j'enregistre. Tout fonctionne parfaitement : ma
liste des communes apparaît bien, et lors de la valisation le champs de la
table Prod est correctement renseigné.
- Mais dès que je passe en mode recherche, je peux chercher dans tous les
champs SAUF celui qui est passé en zone combinée et qui se présente comme
une liste déroulante. Pourquoi ?

- Sur une ancienne base en HSQL, je viens de vérifier avec la même version
de LibreOffice, j'ai également des listes déroulantes qui apparaissent
parfaitement dans les crtières de recherche (via les petites jumelles). Et
dès que je passe sur le formulaire qui attaque la base MySQL, dès que je
crée une liste déroulante, le champs concerné disparaît des champs pouvant
être interrogés...

- Bref :
--- pas de listes déroulantes = champ présent dans la recherche.
--- liste déroulante = plus de champ dans la recherche.

- J'ai bien évidemment regardé que si même non sélectionnable, il était
quand même couvert par la recherche : et bien non, il est non seulement non
sélectionnable, mais une recherche sur "tous les champs" l'exclu de la même
manière.

J'ai beau chercher ici et sur le net, je ne trouve pas le moindre début de
commencement d'explication...
Je suis clair ?
Des idées ?

Merci à vous.

Bonjour,

Je viens de faire un petit essai dans ma base de test sur mon serveur MariaDB.
Il y a le choix entre deux options lors de la création de la combo box :
1) créer la combo box avec l'option "Oui, je souhaite l'enregistrer dans le champ de base de données", auquel cas le champ associé apparait dans la liste des champs dans la boîte de dialogue Rechercher (les jumelles);
2) créer une combo box avec l'option "Non, etc." , donc sans l'associer à un champ de la base, là bien évidemment on n'a rien dans la liste des champs de la boîte de dialogue Recherche.

Tu n'aurais pas "choisi" l'option 2 (c'est celle qui est sélectionnée par défaut dans l'assistant) ?

Bernard

Bonjour Bernard.

Alors
pour être très franc, je ne trouve pas les options ni les boites de
dialogues dont tu parles.

Voici comment je procède.
- Je vais sur Formulaires
- Utiliser l'assistant pour créer un formulaire
- Je choisi ma table principale "Prod"

Je comprends.
Dans mon test j'avais créé un formulaire mais pas sous forme de tableau. Ce que je te décrivais c'est ce qu'on a quand on créé un contrôle combo box "en-dehors" d'un tableau.

Bernard

Je viens de refaire ton procédé. Effectivement le "remplacer par" une zone combinée n'offre pas beaucoup de possibilités.

Bernard

Bonsoir,

Je vais peut-être tomber complètement à côté mais les listes déroulantes et les combo-boxdans les formulaires Base, ça me rappelle vaguement quelque chose.

J'ignore si c'est toujours d'actualité, voire même s'il y a un lien quelconque, mais il me semble me souvenir qu'il y a bien longtemps (du temps de OOo, dans sa version 2.2 ou quelque chose comme ça) la question des listes déroulantes et des combo-box dans les formulaires de Base était particulière ; je crois me souvenir d'une histoire avec un truc qu'on ne pouvait pas faire ; je ne sais plus si c'était créer directement une liste déroulante ou une combo-box ou si c'était transformer un contrôle de formulaire d'un autre type, en une liste déroulante ou une combo-box (je pencherais plutôt pour cette deuxième hypothèse) mais il y avait quelque chose de cette nature; ne serait-ce pas un restant de ce (vieux) truc là ?

Je ne sais pas si ça peut aider mais si ça permet à tout le moins de fermer une porte, c'est toujours ça.

Bonne soirée.

Bonsoir.
Je n'ai aucune idée de si cela peut avoir ou non un lien quelconque avec un vieux bug, je ne saurais te renseigner là dessus. 
En fait, je m'aperçois que mon sujet n'est pas bon parce que MySQL n'a rien à voir dans l'histoire, je l'ai compris tout à l'heure mais au moment où j'écrivais j'étais tellement désespéré que j'en étais presque à accuser les éruptions solaires...

Le truc est simple : 
- lorsque le formulaire est fait sous forme de tableau (c'est mon cas car je migre un tableau calc vers Base), et bien lorsque l'on transforme une colonne simple en zone combinée pour créer une liste déroulante, celle-ci disparaît de la zone de recherche car Base estime qu'il n'y a plus de contrôle du champ. 
- lorsque l'on créer un formulaire avec des zones de saisie mais pas sous forme de tableau, la transformation, ou laz création, d'une zone combinée pour créer une liste déroulante ne pose aucun problème et est parfaitement gérée par la recherche. 
- ma solution a deux balles a été de créer en dehors de mon tableau (en dessous pour être précis) des "copies conformes" des zones combinées, que je cache ensuite, mais qui du coup sont elles prises en compte dans la recherche alors que celles qui sont affichées dans le tableau non. Je ne comprends pas pourquoi, mais ça fonctionne.

Bonne soirée également.

Cyrille

Bonjour Bernard.

Alors pour être très franc, je ne trouve pas les options ni les
boites de dialogues dont tu parles.

Voici comment je procède.
- Je vais sur Formulaires
- Utiliser l'assistant pour créer un formulaire
- Je choisi ma table principale "Prod"
- Dans cette table, pour faire simple, je ne prends QUE et
UNIQUEMENT QUE le champ "Commune" que je fais basculer à droite dans
"champs du formulaire".
- Pas de sous formulaires
- Et la présentation (3ème en partant de la gauche "Feuille de
données").
- Le formulaire doit afficher toutes les données
- Le style on s'en fout
- Le formulaire est crée avec juste comme champ "Commune" et je vois
apparaitre la liste des communes sur les fiches que j'ai saisie au
titre de test.
- Je fais une recherche, le champ "Commune" est bien sélectionnable
et la recherche fonctionne.

Passons aux choses qui fâchent.
- Je passe mon formulaire en édition. J'ai donc un tableau avec
seulement une colonne Commune qui est présent. Je fais un "clic
droit" sur le titre de la colonne, j'ai 5 options : "largeur de
colonne", "Insérer une colonne", "Remplacer par", "Supprimer une
colonne", et "Colonne".
- Je fais donc "Remplacer par", "Zone combinée".
- Je me retrouve face à la même colonne dans le même tableau.
- Je fais à nouveau le même clic droit, et là je vais sur la
dernière option "Colonne".
- 3 onglets horizontaux, "Général", "Données", "Evènements".
- Je vais sur "Données". Le champ de données à remplir est bien le
champ "Commune" de la table "Prod".
- Le type de contenu de liste est bien sur "Table".
- Je parcours ensuite les tables présentes dans ma base et je vais
choisir la table "Communes" qui est constituée de 2 champs "Id" et
"Commune".
- J'enregistre, je quitte le mode édition et je vois que quand je
sélectionne une case de la colonne, j'ai bien ma liste déroulante
qui affiche le contenu de la table "Commune". Je modifie une
colonne, je vérifie dans la table "Prod", la modification fonctionne.
- Je retourne dans mon formulaire, et là, quand je vais sur mes
petites jumelles, j'ai un beau message d'erreur que je n'avais pas
avant vu que j'avais d'autres champs, qui me dit :
"Aucun contrôle lié a des données dans le formulaire actif".

Et là, je sèche...

Cyrille

[PS]

Une solution tirée par les cheveux.
- Créer des contrôles de formulaires en dehors du tableau, et les
rendre invisibles. La recherche fonctionne alors.

Je comprends.
Dans mon test j'avais créé un formulaire mais pas sous forme de
tableau. Ce que je te décrivais c'est ce qu'on a quand on créé un
contrôle combo box "en-dehors" d'un tableau.

Bernard

Je viens de refaire ton procédé. Effectivement le "remplacer par" une
zone combinée n'offre pas beaucoup de possibilités.

Bernard

Bonsoir,

Je vais peut-être tomber complètement à côté mais les listes déroulantes
et les combo-boxdans les formulaires Base, ça me rappelle vaguement
quelque chose.

J'ignore si c'est toujours d'actualité, voire même s'il y a un lien
quelconque, mais il me semble me souvenir  qu'il y a bien longtemps (du
temps de OOo, dans sa version 2.2 ou quelque chose comme ça) la question
des listes déroulantes et des combo-box dans les formulaires de Base
était particulière ; je crois me souvenir d'une histoire avec un truc
qu'on ne pouvait pas faire ; je ne sais plus si c'était créer
directement une liste déroulante ou une combo-box ou si c'était
transformer un contrôle de formulaire d'un autre type, en une liste
déroulante ou une combo-box (je pencherais plutôt pour cette deuxième
hypothèse) mais il y avait quelque chose de cette nature; ne serait-ce
pas un restant de ce (vieux) truc là ?

Je ne sais pas si ça peut aider mais si ça permet à tout le moins de
fermer une porte, c'est toujours ça.

Bonne soirée.

Bonsoir.
Je n'ai aucune idée de si cela peut avoir ou non un lien quelconque avec un vieux bug, je ne saurais te renseigner là dessus.

Y-a-t-il un courageux pour faire une recherche dans bugzilla ? :slight_smile:

En fait, je m'aperçois que mon sujet n'est pas bon parce que MySQL n'a rien à voir dans l'histoire,

Oui, j'avais oublié de le préciser dans mes réponses précédentes. J'avais fait l'essai avec les 2 types de base (MySQL/MariaDB et HSQL embarqué).

Bernard