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

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.

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

Messagepar Yemisi » 19 Juin 2021 10:41

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é 290 fois



je remercie beaucoup si vous pouvez venir à mon aide
Dernière édition par Yemisi le 20 Juin 2021 09:20, édité 1 fois.
Libre Office 7.0.6.2 (x64) sous Windows 10
Yemisi
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 19 Juin 2021 10:12

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

Messagepar micmac » 19 Juin 2021 10:47

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
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 7544
Inscrit le : 28 Août 2010 09:45

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

Messagepar Yemisi » 19 Juin 2021 11:09

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é 324 fois
Libre Office 7.0.6.2 (x64) sous Windows 10
Yemisi
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 19 Juin 2021 10:12

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

Messagepar Dude » 19 Juin 2021 19:09

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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 22619
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar Yemisi » 20 Juin 2021 08:11

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
Yemisi
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 19 Juin 2021 10:12

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

Messagepar tintin » 20 Juin 2021 08:22

Bonjour,
yemisi 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.10 et LibO 7.0.6 / macOS 11.4 Big Sur.
AdoptOpenJDK_1.8.0_292 / Firefox / Safari / Thunderbird / Time Machine
Pour la sauvegarde de vos documents c'est ceinture ET bretelles
Avatar de l’utilisateur
tintin
GourOOu
GourOOu
 
Message(s) : 7483
Inscrit le : 18 Juil 2008 16:29
Localisation : F-Oise + F-Savoie

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

Messagepar Yemisi » 20 Juin 2021 09:03

Super
merci :D
Libre Office 7.0.6.2 (x64) sous Windows 10
Yemisi
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 19 Juin 2021 10:12

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

Messagepar jeanmimi » 20 Juin 2021 09:09

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é 13 fois
Dernière édition par jeanmimi le 07 Juil 2021 13:48, édité 1 fois.
LibreOffice : Version : 7.1.4 (x64)(14 juin 2021)
Adoptopen JRE ou Oracle JRE (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15992
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

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

Messagepar Dude » 21 Juin 2021 07:42

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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 22619
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar Yemisi » 21 Juin 2021 08:36

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é 261 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é 261 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
Yemisi
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 19 Juin 2021 10:12

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

Messagepar jeanmimi » 21 Juin 2021 09:50

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 : 7.1.4 (x64)(14 juin 2021)
Adoptopen JRE ou Oracle JRE (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15992
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

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

Messagepar Yemisi » 14 Juil 2021 20:25

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é 5 fois
Libre Office 7.0.6.2 (x64) sous Windows 10
Yemisi
Fraîchement OOthentifié
 
Message(s) : 6
Inscrit le : 19 Juin 2021 10:12

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

Messagepar jeanmimi » 15 Juil 2021 13:01

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é 2 fois
LibreOffice : Version : 7.1.4 (x64)(14 juin 2021)
Adoptopen JRE ou Oracle JRE (x64) 1.8.0_xxx, Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 15992
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte


Retour vers Base de données

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 7 invité(s)