[Résolu] Formulaire mise à jour autre table

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.
Ljans
Fraîchement OOthentifié
Messages : 4
Inscription : 22 mai 2021 08:57

[Résolu] Formulaire mise à jour autre table

Message par Ljans »

Bonjour,

J'ai créé une base de données pour la gestion de sachets de graines.
J'ai deux tables principales à savoir la table variété et la table sachets, une variété pouvant être associée à plusieurs sachets.
J'ai un formulaire permettant d'ajouter de nouvelles variétés et un autre pour les nouveaux sachets.
Cependant, lorsque j'enregistre un nouveau sachet juste après avoir créé une nouvelle variété, je ne parviens pas à récupérer l'id_variete (clé primaire de la t_variete) dans le formulaire sachet. Résultat, j'ai bien enregistré mon sachet mais aucun id_variete n'y est associé ce qui me pose problème pour les requêtes.

Je cherche donc à afficher automatiquement l'id_variete correspondant lorsque je sélectionne une variété dans une liste déroulante. Quelqu'un pourrait-il m'aiguiller?

En espérant avoir été suffisamment claire,
Je vous joins le fichier odb, la base de données a été fortement épurée pour l'envoi.
graine.odb
Merci d'avance,
Ljans
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Ljans le 18 févr. 2023 21:59, modifié 1 fois.
Libreoffice 7.1.2.2
Windows 10 (version 2004)
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Formulaire mise à jour autre table

Message par pulcinopio »

Salut Ljeans,

Tout d'abord merci pour avoir posté ton fichier. Cela ne court pas les rues dernièrement.

Je joins le fichier fruits secs juste pour te dire qu'il fallait tout simplement une troisième table....

Bien à toi

pulcinopio
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office 6.0.4 sur Ubuntu 18.04
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Formulaire mise à jour autre table

Message par jeanmimi »

Bonjour,
Ljans a écrit : 16 févr. 2023 10:56 Je cherche donc à afficher automatiquement l'id_variete correspondant lorsque je sélectionne une variété dans une liste déroulante. Quelqu'un pourrait-il m'aiguiller ?
La solution a été donnée ici :
viewtopic.php?p=249743#p249743
Dans ta Base, j'ai mis à jour les contrôles Zone de liste à la place de Zone Combinée par exemple et modifié les deux formulaires qui vont bien.
J'ai un ajouté un Bouton sur le formulaire de saisie des sachets qui permet d'ouvrir le formulaire de saisie des variétés sans être obligé de fermer celui de la saisie des sachets, avec la Macro Ouvrir par tag :

Code : Tout sélectionner

      Sub OuvForm(evt As Object)
    '*************************************************************************************************
    'Lancée par l'appui sur un bouton
    ' Permet l'ouverture d'un formulaire dont le nom est renseigné dans le champ
    ' "Complément d'information" du bouton
    '=================================================================================================
    Dim oForms As Object
    Dim sNomForm As String
       sNomForm = evt.Source.Model.tag
       oForms = ThisComponent.Parent.FormDocuments
       IF oForms.hasByName(sNomForm)  Then
         oForms.getByName(sNomForm).open
       Else
         MsgBox("Formulaire inconnu : " & sNomForm, 16)
       End IF
    End Sub
J'ai ajouté la Macro citée par Piaf dans le fil plus haut :

Code : Tout sélectionner

Sub Actualiser(oEv as Object)
	oEv.Source.Model.Refresh
End Sub
Il ne te reste plus qu'à tester la Base.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1485
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: Formulaire mise à jour autre table

Message par jeanmi2403 »

Bonsoir,
Visiblement le modèle de la base n'est pas bon.
Il faudrait avoir une idée du projet avec plus de détails pour structurer la base de manière optimale.

@Pulcinopio : ton formulaire n'est pas optimisé, la liste déroulante doit être placée sur le contrôle du champ concerné.
Cordialement,
Jean-Michel
LibO 25.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
pulcinopio
Membre prOOscrit
Messages : 243
Inscription : 13 juil. 2022 17:13

Re: Formulaire mise à jour autre table

Message par pulcinopio »

Merci Jean-Michel,

J'ai essayé d'améliorer mon formulaire espérant avoir compris tes indications.

Bien à vous

pulcinopio
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office 6.0.4 sur Ubuntu 18.04
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 10105
Inscription : 28 août 2010 08:45

Re: Formulaire mise à jour autre table

Message par micmac »

pulcinopio, le forum est très clair : la règle n° 7
stipule que Un sujet = le problème d'une seule personne .
Vous ne devez pas poser une question dans le fil d'un autre. Celle-ci ne fait qu'interférer et les réponses éventuellement postées ne feront qu'embrouiller la lecture du problème initial.

Merci de cesser d'intervenir dans le fil de discussion d'autres personnes pour des questions personnelles.
Si vous avez des questions à poser vous devez ouvrir un nouveau sujet pour votre question en rappelant que vous avez le même problème que dans ce fil.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1485
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: Formulaire mise à jour autre table

Message par jeanmi2403 »

Bonjour,
pulcinopio a écrit : 18 févr. 2023 03:36 J'ai essayé d'améliorer mon formulaire espérant avoir compris tes indications.
Je répète, tant qu'on n'est pas fixés sur la finalité du projet, on pense dans le vide.
De saines lectures pour construire une base de données : Les Guides officiels
Jean-Michel
LibO 25.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
Ljans
Fraîchement OOthentifié
Messages : 4
Inscription : 22 mai 2021 08:57

Re: Formulaire mise à jour autre table

Message par Ljans »

Bonjour,

Merci pour votre réactivité et vos réponses! En effet ma BDD n'est peut être pas optimisée, je débute et j'essaie de me débrouiller comme je peux ^^

L'idée de cette base de donnée est de faciliter la gestion des sachets de graines et les plantations associées. A ce jour j'ai plus de 300 variétés et presque 400 sachets.
L'utilisation se fait à la fois par l'entrée sachet et par l'entrée variétés. Sur chaque sachet est noté son numéro (id_sachet). Voici quelques exemples d'utilisation de la BDD à travers les requêtes : qu'est ce qu'on plante ce mois ci, quels sont les sachets qui périment cette année, quels sachets sont vides ? etc

Je vous ai fourni qu'un "aperçu" de la base de données, ciblant mon problème, car le fichier était trop volumineux (je ne sais pas trop pourquoi..)

J'ai bien lu vos réponses et j'ai tenté d'exécuter les macros mais cela ne fonctionne pas.

pulcinopio : je ne comprends pas pourquoi il manquerait une tierce table ?
jeanmimi : ce n'est peut être pas le plus simple mais j'avais contourné la macro d'actualisation avec un bouton sur mon formulaire saisie_sachet. Ceci me permets d'avoir la dernière variété rentrée mais pas d'afficher son numéro. D'ailleurs quand je teste ta macro cela ne fonctionne pas, j'ai le message d'erreur suivant :
Screenshot_20230218_173347.png
Pour illustrer le problème, j'ai entré une nouvelle variété "fraises" dans mon formulaire f_saisie_variete. Lorsque je rebascule sur le formulaire f_saisie_sachet, je réactualise avec le bouton "rafraichir", je sélectionne "fraises" dans ma liste déroulante "nom variété" mais le numéro de variété correspondant ne s'affiche pas automatiquement, je suis obligée de le saisir manuellement. Pourtant il s'agit du champ commun à toutes mes tables, ce qui me posera problème par la suite lors des requêtes.
Screenshot_20230218_181510.png
Screenshot_20230218_174951.png
Je continue de chercher de mon côté mais si jamais vous avez d'autres pistes je suis preneuse!

Bien à vous,

Ljans
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libreoffice 7.1.2.2
Windows 10 (version 2004)
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1485
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: Formulaire mise à jour autre table

Message par jeanmi2403 »

Rebonjour,
Eh bien voilà ! Comme je le soupçonnais, nous sommes (une fois de plus) devant un Problème XY.
Je vois dans la dernière copie d'écran, tout un tas de choses dont on n'avait pas idée, et aussi des choses qui semblent redondantes.
Entre autres, le nombre de boutons "Valider" me paraît excessif :D
Donc, il faut préciser quelles sont les données de départ, et ce à quoi on doit aboutir, de manière à structurer les données de manière cohérente pour l'obtention du (des) résultat souhaité.
En un mot, décrire ton travail et écrire un cahier des charges...
On peut bien sûr aider pour ça.
Cordialement
Jean-Michel
LibO 25.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Formulaire mise à jour autre table

Message par jeanmimi »

Ljans a écrit : 18 févr. 2023 17:17 quand je teste ta macro cela ne fonctionne pas
J'avais bien sûr testé la Macro avant de mettre la Base en ligne.
Par contre, il faut que tu l'enregistres sur ton PC avant de pouvoir faire fonctionner la Macro.
Ljans a écrit : 18 févr. 2023 17:17 mais le numéro de variété correspondant ne s'affiche pas automatiquement, je suis obligée de le saisir manuellement
Si le contrôle Zone de liste est correctement paramétré pour afficher la commande SQL, le numéro ID est automatiquement enregistré dans la Table :

Code : Tout sélectionner

"SELECT "nom_variete", "id_variete" FROM "T_varietes" ORDER BY "nom_variete" ASC"
 Ajout : Des projets identiques ou ressemblants ont été postés dans le forum :
search.php?st=0&sk=t&sd=d&sr=topics&key ... d%5B%5D=26 
Dernière modification par jeanmimi le 18 févr. 2023 19:58, modifié 2 fois.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1485
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: Formulaire mise à jour autre table

Message par jeanmi2403 »

Bonsoir,
Le problème est très certainement dans la construction des contrôles Zone de liste, avec la requête SQL et le champ lié.
Il va falloir faire un cours détaillé pour adapter à ton problème...
A plus,
Dernière modification par jeanmi2403 le 19 févr. 2023 12:33, modifié 2 fois.
Jean-Michel
LibO 25.2 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 24.8 sur OpenSuse & Linux MX
Ljans
Fraîchement OOthentifié
Messages : 4
Inscription : 22 mai 2021 08:57

Re: Formulaire mise à jour autre table

Message par Ljans »

Rebonjour,

C'est bon, le problème est résolu ! Il s'agissait effectivement d'un problème de paramétrage du contrôle de zone de liste. Je confondais "champs de données" et "contenu de liste"... J'avais rentré nom_variete au lieu de id_variete pour le champs de données...
En revanche je ne parviens toujours pas à exécuter les macros, mais je vais persévérer !

Un grand merci pour votre aide !

Ljans
Libreoffice 7.1.2.2
Windows 10 (version 2004)
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 4343
Inscription : 06 oct. 2008 08:03

Re: Formulaire mise à jour autre table

Message par Oukcha »

Bonjour,

Merci d'appliquer le balisage dans le premier message du fil de discussion, en ajoutant l'icône Image et en tapant [Résolu] (respectez la graphie donnée) comme illustré ci-dessous :

Image

Cordialement
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image