[Résolu]MàJ champ de table avec plusieurs champs d'une autre

Discussions sur le module de base de données 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 modOOs

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.
Yemisi
Fraîchement OOthentifié
Messages : 8
Inscription : 19 juin 2021 11:12

[Résolu]MàJ champ de table avec plusieurs champs d'une autre

Message par Yemisi »

bonjour,

voilà ce que j'aimerais faire : Mettre à jour un champ d’une table principale avec PLUSIEURS mots provenant d’une table secondaire à laquelle j'accède par une liste combinée.

je débute sur Base et j’ai besoin de vos lumières :
j’ai fouillé dans les forums et les tutos et je n’ai pas trouvé ; ou alors je n’ai pas compris la réponse ; s’il faut programmer en SQL, ou ajouter une table provisoire, ça me dépasse. Je pense plutôt que j’ai mal paramétré quelque part. Mais où ???

je suis en train de créer une base de données pour gérer des contes ; l’idée est de pouvoir faire des recherches de contes à partir de mots clés.
plusieurs mots clés caractérisent un conte ; (par exemple : « Poucet ; enfants ; ogre ; forêt ; famine » pour le conte 1 et « rouge ; enfant ; loup ; forêt ; grand-mere » pour le conte 2.
avec ce système de mots clés, je pourrai par exemple récupérer tous les contes qui parlent d’enfant et de forêt

- j’ai une table principale ‘TRecits’ dans laquelle j’ai répertorié des contes ; j’y accède par un formulaire FRecits ;
dans la table TRecits se trouve un champ « Recit_mtcle » -
varchar ; longueur 255
je ne veux pas faire plusieurs champs de mots-clés (mot clé1 - mot clé2 - mot-cle3 etc.) car il faudrait au moins 20 champs différents et cela compliquerait trop les requêtes (pour l’instant, j’accède à ce champ en mettant ‘’like’ dans la requête, c’est artisanal, mais ça marche)

- j’ai une table de mots clés ‘Tmots_cles’ -
dans cette table, il y a 3 champs :
- la clé de la table, en Integer automatique,
- une liste des mots clés, en varchar, longueur 20
- une liste de personnages, en varchar, longueur 20.
je suppose que je ne peux pas lier les deux tables Tmots_cles et TRecits, car les champs n’ont pas la même longueur, mais cela ne gêne pas pour lire la table TMots_Cles depuis le formulaire (je verrai ça plus tard)

dans le formulaire «Frecits » il y a une zone combinée (avec déroulante) « mots clés » qui affiche bien le contenu de la table Tmots_cles ;
si je sélectionne un mot depuis la liste déroulante, le champ correspondant dans la table Trecits est bien mis à jour
le souci, c’est que j’ai besoin d’entrer plusieurs mots clés pour un même récit et … je n’y arrive pas ; je ne peux enregistrer qu’un seul mot clé.
il n'y a pas d’option « sélection multiple » depuis la liste combinée ;
Est ce qu’il est possible de récupérer plusieurs champs à partir d’une liste ?
Je pense que j’ai mal paramétré, mais là j’ai besoin de votre aide.
Je vous mets mon paramétrage en PJ
S’il faut une instruction SQL, j’en suis incapable
parametrage-zone combinee mots-cles1.PNG
parametrage-zone combinee mots-cles2.PNG
parametrage-zone combinee mots-cles3.PNG
parametrage-zone combinee mots-cles3.PNG (8.89 Kio) Consulté 1979 fois

je remercie beaucoup si vous pouvez venir à mon aide
Dernière modification par Yemisi le 25 juil. 2021 16:46, modifié 2 fois.
Libre Office 7.0.6.2 (x64) sous Windows 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9225
Inscription : 28 août 2010 10:45

Re: Liste combinée : Mettre à jour un champ d’une table prin

Message par micmac »

Bonjour,

Pourquoi insérer une capture d'écran dans un document texte ?
Le forum accepte les formats images qu'il est bien plus facile de consulter car elles sont visibles directement.

Les personnes qui voudront vous aider apprécieraient sans doute d'avoir accès au document anonymisé.
Comment dépersonnaliser un document
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Yemisi
Fraîchement OOthentifié
Messages : 8
Inscription : 19 juin 2021 11:12

Re: Liste combinée : Mettre à jour un champ d’une table prin

Message par Yemisi »

bonjour Micmac

ça y est j'ai trouvé !
désolée; je saurai pour les prochaines fois
parametrage1.PNG
parametrage2.PNG
parametrage3.PNG
parametrage3.PNG (8.89 Kio) Consulté 2013 fois
Libre Office 7.0.6.2 (x64) sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25145
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: Zone combinée: mise à jour champ de table principal

Message par Dude »

Salut,
Yemisi a écrit :- une liste des mots clés, en varchar, longueur 20
La fonction MATCH n'existe pas pour le format HSQL.
Pour moi, les mots clés devraient faire l'objet d'une table à part si tu veux faire un SELECT efficace.
C'est par exemple avec ce principe que l'on fait des recherches dans ce forum.
Chaque mot de plus de 3 caractères est placé dans une table dédiée.
Yemisi
Fraîchement OOthentifié
Messages : 8
Inscription : 19 juin 2021 11:12

Re: Zone combinée: mise à jour champ de table principal

Message par Yemisi »

Bonjour Dude,

c'est ce que j'ai fait : il y a une table "mots cles", qui se lit bien;
j'aimerais récupérer plusieurs mots les uns à la suite des autres depuis cette table 'mots cles' et les écrire tous à la queue leu leu dans la table principale, la table Recits;
pour l'instant j'en récupère un depuis la table 'mots cles', il s'écrit bien dans la table 'recits', mais si je veux en ajouter un 2e, ça efface le premier.

en fait, le titre du post est incomplet ; j'ai saisi mais pas regardé ce que ça donnait avant d'envoyer :(
je voulais mettre :
Liste combinée : Mettre à jour un champ d’une table principale avec plusieurs mots provenant d’une table secondaire

et je ne sais pas modifier le titre
Libre Office 7.0.6.2 (x64) sous Windows 10
Avatar de l’utilisateur
tintin
GourOOu
GourOOu
Messages : 9344
Inscription : 18 juil. 2008 17:29
Localisation : F-Oise + F-Savoie

Re: Zone combinée: mise à jour champ de table principal

Message par tintin »

Bonjour,
[b][color=#404080]yemisi[/color][/b] a écrit :Mettre à jour un champ d’une table principale avec plusieurs mots provenant d’une table secondaire
Un titre ne peut comprendre que 60 caractères maximum balises comprises sinon il sera écourté.

Pour modifier le titre d'un sujet, cliquez sur le bouton ÉDITER Image
en haut à droite du premier message. Cette fonction reste accessible tout le temps.
AOO 4.1.15 et LibO stable 7.6.6 / macOS Intel 13.6.6 Ventura
Adoptium-temurinJDK-jre_1.8.0_402 / Firefox/Safari/Thunderbird /Time Machine+cloneCCC
Tutoriels du forum pour macOS
Pour sauvegarder vos documents c'est ceinture ET bretelles
Yemisi
Fraîchement OOthentifié
Messages : 8
Inscription : 19 juin 2021 11:12

Re: Zone combinée: mise à jour champ de table principal

Message par Yemisi »

Super
merci :D
Libre Office 7.0.6.2 (x64) sous Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: Zone combinée: mise à jour champ de table principal

Message par jeanmimi »

Bonjour,
Yemisi a écrit :j'aimerais récupérer plusieurs mots les uns à la suite des autres depuis cette table 'mots cles'
Pour le faire, il faut créer une table (qui peut être nommée T_Details_Mots_cles) avec :
ID_Detail en INTEGER AutoValeur et Clé primaire
ID_T_Recits en INTEGER (pour être en relation avec l'ID de la Table TRecits
ID_Mots_Cle en INTEGER pour stocker es différents ID des Mots-clés de la Table Tmots_cles
Relation Base Recits.jpg
Dans le Formulaire de saisie, la Table T_Details_Mots_cles sera affichée dans un SubForm. Une Zone de liste déroulante affichera le résultat de l'instruction SQL de façon à ce que les choix effectués stockent les ID des Mots-clés dans la Table T_Details_Mots_cles.
Il faut donc revoir l’instruction SQL qui est affichée dans une de copies d'écran.
SQL pour Zone de liste.jpg
Pièces jointes
Base_Récits.odb
(12.67 Kio) Téléchargé 100 fois
Dernière modification par jeanmimi le 07 juil. 2021 14:48, modifié 1 fois.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25145
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: màj 1 champ dans table1 avec PLUSIEURS champs de table2

Message par Dude »

Yemisi a écrit :Liste combinée
Une liste combinée, cela n'existe pas.
Regarde le titre des propriétés de ton contrôle : il s'agit d'une zone combinée.
Yemisi a écrit :aimerais récupérer plusieurs mots les uns à la suite des autres depuis cette table 'mots cles' et les écrire tous à la queue leu leu dans la table principale, la table Recits
Non, cela fausse le modèle relationnel car un même mot-clé peut être attaché à plusieurs récits.
Reprends l'exemple donné par jeanmimi qui illustre comment doit être articulée la base.
Il n'y a qu'une macro qui ferait l'extraction de chaque mot pour remplir la table dans ce cas.
Yemisi
Fraîchement OOthentifié
Messages : 8
Inscription : 19 juin 2021 11:12

Re: màj 1 champ dans table1 avec PLUSIEURS champs de table2

Message par Yemisi »

bonjour Jeanmimi,

merci merci pour la réponse;
merci pour le modèle de base mais je n'ai pas réussi à le refaire :(
d'abord, j'ai essayé d'ajouter un sous-formulaire au formulaire déjà existant - pas concluant :marto: je n'ai pas trouvé de tuto expliquant comment faire -
ensuite, j'ai refait un nouveau formulaire principal avec l'assistant et inséré un sous-formulaire pendant la création. C'est mieux, mais je ne récupère pas la liste des mots clés dans le sous-formulaire - elle ne s'affiche pas - il n'y a que les ID des tables -
FEbauche_SF.PNG
FEbauche_SF.PNG (8.79 Kio) Consulté 1950 fois
je suppose que c'est mon instruction SQL -
Jeanmimi tu as écrit :
"une zone de liste déroulante affichera le résultat de l'instruction SQL de façon à ce que les choix effectués stockent les ID des Mots-clés dans la table T_Details_Mots_cles."
et le modèle est celui-ci
msg-Jeanmimi.PNG
donc, j'ai fait une zone de liste déroulante pour le champ qui affiche les mots-cles

les propriétés de la zone de liste sont celles ci
propr-zone-liste.PNG
propr-zone-liste.PNG (8.45 Kio) Consulté 1950 fois

et le "champ de données" ne correspond pas à ce que tu avais indiqué - le seul champ auquel j'accède est celui de la table TRecits, la table principale

je m'y remets le week end prochain
Libre Office 7.0.6.2 (x64) sous Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: màj 1 champ dans table1 avec PLUSIEURS champs de table2

Message par jeanmimi »

Yemisi a écrit :d'abord, j'ai essayé d'ajouter un sous-formulaire au formulaire déjà existant - pas concluant, je n'ai pas trouvé de tuto expliquant comment faire -
Lorsque les tutos parlent de formulaire et de sous-formulaire, il faut comprendre MainFrom et SubForm, comme sur cette copie d'écran avec la Navigateur de formulaire :
Structure du formulaire.jpg
Si tu utilises l'Assistant de création, MainForm et SubForm sont créés automatiquement et conformément à la Relation si elle a été créée auparavant.
Regarde aussi plus haut ma copie d'écran : la Table des Récits ne contient pas les mots-clés.
Tu peux aussi joindre ton ébauche de Base actuelle pour la faire tester.
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Yemisi
Fraîchement OOthentifié
Messages : 8
Inscription : 19 juin 2021 11:12

Re: màj 1 champ dans table1 avec PLUSIEURS champs de table2

Message par Yemisi »

Bonjour Jeanmimi, bonjour Dude,

désolée d’avoir mis autant de temps pour vous répondre. Je vous remercie pour votre proposition de vous envoyer ma base.

je me suis rendue compte que ce qui était très évident pour moi ne l’était pas pour les autres. Pour que vous puissiez m’aider, il faut que je vous explique ce que j’aimerais faire avec cette base.
Je suis étudiante et prépare un master en littérature orale et je travaille sur des contes. Il m’a semblé que cela serait plus facile pour moi si je répertoriais les contes sur lesquels je travaille dans une base de données. C’est la première fois que j’essaie de faire une base de données. Pas facile..
J’ai saisi des informations sur des contes dans la table TRecits, comme la provenance géographique du conte, les personnages qui apparaissent dans l’histoire, l’environnement etc...
Je devrai comparer des contes entre eux ; les critères pourront être qu’ils font partie de la même aire géographique, et/ou ont les mêmes personnages, et/ou ont les même s mots clés…
Je vais faire des requêtes et les requêtes afficheront quelques contes parmi tous ceux que j’ai saisis dans la table TRecits.
Et je ferai plusieurs requetes successivement pour croiser les critères.
d’une part, cela m’évitera de devoir relire tous les contes de mon fichier pour savoir lesquels correspondent et d’autre part, le formulaire affichera de façon claire les autres informations.

Les mots-clés :
pour chaque conte, il y a au moins une dizaine de mots clés, car les mots-clés décrivent plus ou moins le conte.
Pour l’instant, j’ai saisi les mots clés directement à parti du formulaire, dans un grand champ de 255 caractères ; le champ s’appelle « recit_mots_cles » ; les mots-clés sont séparés par un « ; »
par exemple :
saisie-mots-cles-depuis-table.PNG
L’ennui c’est que je fais beaucoup de fautes de frappe, que je vais saisir des synonymes etc. donc j’ai créé une table avec les mots-clés.
Ensuite, j’aimerais pouvoir faire double clic » sur un mot de la table des mots clés pour l’ajouter dans le champ « recit_mots_cles-» ; mais comme il y a toujours plusieurs mots-clés, j’aimerais pouvoir continuer à les ajouter depuis la table,tous les uns au bout des autres, dans ce grand champ ‘recit_mots_cles’, comme je le fais manuellement.
mais je pense que ce n'est pas possible

je vous envoie une copie de ma base, avec un extrait de la table TRecits (cette table est un monstre - 1100 enregistrements et 32 champs – non, non, je n’ai pas tout saisi, j’ai fait une extraction à partir du dossier dans lequel se trouvaient les contes  :) ).
il y a aussi les tables secondaires et les essais que j’ai faits pour récupérer les mots-clés (et là, c'est le :marto: )

merci encore pour votre aide -
Pièces jointes
BDRecits-pr_essais.odb
(141.64 Kio) Téléchargé 92 fois
Libre Office 7.0.6.2 (x64) sous Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16955
Inscription : 03 mars 2006 17:02
Localisation : Venise verte

Re: màj 1 champ dans table1 avec PLUSIEURS champs de table2

Message par jeanmimi »

Yemisi a écrit :Ensuite, j’aimerais pouvoir faire double clic » sur un mot de la table des mots clés pour l’ajouter dans le champ « recit_mots_cles-» ; mais comme il y a toujours plusieurs mots-clés, j’aimerais pouvoir continuer à les ajouter depuis la table,tous les uns au bout des autres, dans ce grand champ ‘recit_mots_cles’, comme je le fais manuellement.
mais je pense que ce n'est pas possible
C'est vrai que sur le papier, c'est comme ça qu'on procéderait, mais une Base de données ne fonctionne pas sur ce principe : la Table TRecits n'a pas à contenir les mots clés, ceux-ci seront dans une deuxième Table en relation avec la Table TRecits de cette manière :
Relation Récits contes.jpg
Dans le formulaire, les différents mots-clés pour un récit seront sélectionnés dans le sous-formulaire :
Sélection des mots-clés pour un récit.jpg
Pièces jointes
BDRecits-pr_essais_v2.odb
(152.48 Kio) Téléchargé 103 fois
LibreOffice : Version : 24.2.1 (x64)(14 mars 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Yemisi
Fraîchement OOthentifié
Messages : 8
Inscription : 19 juin 2021 11:12

Re: màj 1 champ dans table1 avec PLUSIEURS champs de table2

Message par Yemisi »

bonjour Jeanmimi,

j'ai compris (enfin !)
de + cette table intermédiaire me permettra de faire les recherches + rapidement
je laisse de côté pour l'instant - pas le temps en ce moment

merci et encore merci pour l'aide
je marque comme résolu
Libre Office 7.0.6.2 (x64) sous Windows 10
Verrouillé