[Doublon] Ecrire valeur d'un contrôle de table dans 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.
djipe
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 04 nov. 2016 20:55

[Doublon] Ecrire valeur d'un contrôle de table dans table

Message par djipe »

Bonjour,

J'essaye d'enregistrer la valeur contenue dans une case à l'intersection d'une colonne prédéfinie et d'une ligne clickée d'un contrôle de table vers une table.
Pour ce faire, dans le formulaire "Recherche_Affaire", j'ai créé un zone de liste qui me sert de critère de filtre (Etat). Juste à droite, j'ai un bouton qui applique ce filtre à un sous-formulaire qui contient un contrôle de table. Ainsi, cette table affiche tous les résultats correspondant à mon filtre.
En dessous, j'ai mis un champ qui récupère la valeur "ID" de la ligne sélectionnée dans le contrôle de table.
Jusque là tout fonctionne bien.

Là où ça bloque, c'est lorsque j'essaye d'enregistrer cette dernière valeur dans une table. Je ne parviens pas à rendre le bouton opérationnel.

Avez-vous une idée d'où ça bloque ?
Je sais qu'il est possible de le faire en macro, mais là je souhaite le faire avec les fonctions intrinsèques à Base.

L'objectif ensuite est d'utiliser cette valeur pour l'intégrer dans d'autres formulaires.

Je vous joins ma base, je pense que quelques clicks valent mieux qu'un long discourt...

Par avance merci pour votre aide
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par djipe le 10 févr. 2020 20:00, modifié 1 fois.
LibreOffice 6.4 - Windows
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9255
Inscription : 28 août 2010 08:45

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par micmac »

Bonjour,
Dans votre signature il y a écrit : LibreOffice 5.0.4.2
Cette version de LibO est obsolète.
Si c'est une obligation, mentionnez-le dans votre signature par Obligation de version.

Afin de profiter des dernières améliorations, il est fortement recommandé d'être à jour de la dernière version stable

Accès direct à votre signature pour la corriger.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
djipe
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 04 nov. 2016 20:55

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par djipe »

Merci, je viens d'actualiser ma signature. :marto:
LibreOffice 6.4 - Windows
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par Dude »

Ton ODB utilise Firebird comme moteur.
Commence par voir avec le format HSQL si le problème persiste ou si c'est un bogue.
djipe
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 04 nov. 2016 20:55

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par djipe »

Bonsoir,

Merci pour cette réorientation.

Du coup, j'ai refait ma base en HSQL et en un peu plus propre.
J'ai remarqué que lorsque je créé une base, il me configure par défaut Firebird. Comme je ne connais pas la différence, j'ai toujours laissé par défaut. Je chercherai par la suite la différence. :wink:

Sur cette nouvelle base, je rencontre le même problème :
Dans mon formulaire Recherche, j'ai dans la partie supérieur une zone de liste et un bouton qui permettent de faire un filtre.
Le résultat du filtre apparaît dans le contrôle de table.
Lorsque je sélectionne une ligne de ce dernier, ça sélectionne une valeur de ma zone de liste du bas. A coté, j'ai placé un bouton pour enregistrer cette valeur dans le champ de la table associée (table Recherche, champ id_affaire selectionnee)

Mais encore une fois, ce bouton est sans effet.
Sans passer par une macro, avez-vous une idée de comment parvenir à enregistrer la sélection ?

Je joins ma nouvelle base.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.4 - Windows
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par jeanmimi »

Bonjour,
djipe a écrit :L'objectif ensuite est d'utiliser cette valeur pour l'intégrer dans d'autres formulaires.
Je ne comprends pas trop le modèle relationnel. Puisque le filtre permet d'afficher les affaires selon leur état, pourquoi ne pas afficher les champs de la Table correspondant à cette affaire, ou au deux ou trois états filtrés ?
Dans quels autres formulaires l'Id doit il être intégré ?
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
djipe
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 04 nov. 2016 20:55

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par djipe »

jeanmimi a écrit :Je ne comprends pas trop le modèle relationnel. Puisque le filtre permet d'afficher les affaires selon leur état, pourquoi ne pas afficher les champs de la Table correspondant à cette affaire, ou au deux ou trois états filtrés ?
Dans quels autres formulaires l'Id doit il être intégré ?
Bonjour,

Dans un objectif de clarté, je préfère séparer le formulaire de recherche de celui d'édition.
Dans ce nouveaux fichier (ci-dessous), j'ai créé le formulaire d'édition et j'ai ajouté un bouton pour y accéder directement depuis le formulaire de recherche.

Donc, mon filtre fonctionne, mais l'enregistrement de l'id de la ligne sélectionnée ne fonctionne toujours pas. :fou:

Peut-être que mon approche n'est pas du tout la bonne. Avez-vous compris l'objectif que je vise ?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.4 - Windows
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par Dude »

Déjà, il faudrait comprendre le modèle relationnel.
Ajoute les relations via le menu Outils.

Ensuite, je ne vois pas l'intérêt d'avoir une clé primaire déclarée en booléen :
capture.png
Sauf à vouloir limiter à deux enregistrements une table :?
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
djipe
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 04 nov. 2016 20:55

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par djipe »

Dude a écrit :Déjà, il faudrait comprendre le modèle relationnel.
Ajoute les relations via le menu Outils.

Ensuite, je ne vois pas l'intérêt d'avoir une clé primaire déclarée en booléen :
Sauf à vouloir limiter à deux enregistrements une table :?
Bonjour,

Ci-joint ma base à laquelle j'ai ajouté les relations. (Pour la partie affiliation, j'ai essayé de créer 2 relations vers la ID Affaires, mais je n'y parviens pas...)

Mon objectif est de faire un formulaire ("Recherche") dédié à la recherche d'un enregistrement dans la table "Affaires" et de pouvoir l'ouvrir dans un autre formulaire ("Affaire_Sélectionnée") pour modification.
Pour le moment, je n'ai intégré qu'un seul critère de recherche. Par la suite, il y aura plus de critères (recherche dans Objet, Action, Echéance, ...)

Pour faire cette base, je me suis inspiré des tutoriels que j'ai vu ici et là.
Concernant la clé primaire booléenne, j'ai vu ça sur un tuto vidéo pour effectivement faire une table comportant une seule ligne de données.
L'idée est de m'en service pour y placer mes variables globales.

L'idée est d'utiliser au maximum les fonctions intrinsèques de Base pour réduire au minimum l'emploie de macro.

Inutile de rappeler que je suis newbee sur Basse...
Si ça se trouve, il y a des fonctions préintégrées qui font très bien ce que je cherche à faire, mais je ne parviens pas à les trouver. Peut être par ce que je ne maîtrise pas le jargon...
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.4 - Windows
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par jeanmimi »

djipe a écrit :L'idée est d'utiliser au maximum les fonctions intrinsèques de Base pour réduire au minimum l'emploie de macro.
Pour récupérer l'Id de l'affaire sélectionné et l'injecter dans une autre Table, à mon avis, il faut une Macro.
D'autant que :
djipe a écrit :Pour le moment, je n'ai intégré qu'un seul critère de recherche. Par la suite, il y aura plus de critères (recherche dans Objet, Action, Echéance, ...)
Une recherche peut aussi être effectuée en mettant le curseur dans un contrôle du formulaire, puis clic sur la loupe de la barre de navigation du formulaire.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
djipe
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 04 nov. 2016 20:55

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par djipe »

jeanmimi a écrit :Pour récupérer l'Id de l'affaire sélectionné et l'injecter dans une autre Table, à mon avis, il faut une Macro.
Avec mon montage, je parviens à écrire l'ID de l'affaire sélectionnée du contrôle de table dans un champs. Il y a juste que je ne parviens pas à enregistrer ce champs dans la table qui lui est dédiée.
jeanmimi a écrit :Une recherche peut aussi être effectuée en mettant le curseur dans un contrôle du formulaire, puis clic sur la loupe de la barre de navigation du formulaire.
L'idée est qu'une assistante soit également en mesure d'utiliser l'outil. Et je la vois mal faire 50 clicks suivants pour trouver la bonne ligne. Il lui faut un outil intuitif.
Si je renseigne à la main un n° d'ID dans la la colonne id_affaire_recherchée de la table recherche, j'atteins directement l'affaire voulue dans le formulaire Affaire_Sélectionnée

J'ai l'impression d'en être pas loin pour faire le tout sans macro. Mais je butte pour faire l'enregistrement de la ligne cliquée du filtre :fou:
LibreOffice 6.4 - Windows
HRk2o
Membre cOOnverti
Membre cOOnverti
Messages : 344
Inscription : 29 mai 2009 08:51
Localisation : Guyane

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par HRk2o »

Bonsoir,

A mon humble avis, je pense que pour ce que vous voulez obtenir , vous vous compliquez bien les choses, surtout pour l'utilisation par une tierce personne débutante.
Pour faire simple et direct, utilisez directement le formulaire " Affaires "; voir la modification apportée.
L'utilisation ensuite dans la barre d'outils en bas du bouton ' Autofiltre ' pour filtrer les éléments communs d'une colonne et d'une grande simplicité et intuitive; le bouton 'Appliquer le filtre ' rétablira ensuite la visibilité de tous les enregistrements.
Capture d’écran.png
@+
AffairesBis.odb
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOO 4.1.14 et LO 7.3.7.2 sous OsX 10.13.6 High Sierra ; Windows 10 sous AOO 4.1.14 et LibO 7.3.7.2
djipe
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 04 nov. 2016 20:55

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par djipe »

HRk2o a écrit :Pour faire simple et direct, utilisez directement le formulaire " Affaires "; voir la modification apportée.
Bonsoir !

Merci pour la proposition mais je trouve que les filtres manquent d'intuitivité.
J'ai peur que l'assistante s'y froisse un neurone :tesfou:
Ca va, elle ne connait pas mon pseudo sinon :aie:

Durant ce silence, j'ai trituré le bidule dans tous les sens, cherché ici et ailleurs avec notre meilleur ami G et, je reste bredouille. :fou:
Point positif, j'ai perfectionné mon filtre. Il fait appel à une requête paramétré sur des champs du formulaire :super:

Je suis convaincu qu'il existe une solution et que le problème se situe entre mon clavier et ma chaise et, que je me suis mal exprimé sur mon expression du besoin, je vais essayer de reformuler.

J'ai une table "Affaires" qui comporte la liste des affaires que je suis et traite (objet, action, échéance, état, ...).
Certaines affaires sont des sous-affaires d'autres affaires. Donc, j'ai une table "Affiliation" qui permet d'enregistrer ces liens.
Puis j'ai une table "recherche" dédiée à faire des recherches spécifiques (état, chaîne de caractère, ...) et qui contient le résultat ultime de la recherche.
A cet effet, j'ai créé le formulaire "Formulaire2 Qui marche2" (enfin pas complètement...). Ce dernier comporte deux champs qui servent de filtre pour extraire une partie de la table "affaire" et à l'afficher dans un contrôle de table.

Mon objectif maintenant est que lorsque je clicke sur une ligne de ce contrôle de table, l'id de la ligne associé soit enregistré dans le champ "id_affaire_selectionnee" de la table "recherche"
Cette table contient au maximum 2 lignes. Je l'ai limitée car je veux l'utiliser comme un lieu d'enregistrement de variables globales. Peut-être qu'il y a plus propre comme solution, mais je ne connais pas...

Voyez-vous comment je pourrai y parvenir (à écrire le n° de l'id dans le champs "id_affaire_selectionnee") ?
Désormais, suite à tous mes échecs, je suis disposé à écouter une approche en basic si c'est la seule issue possible.

Merci d'avoir pris la force de me lire jusqu'au bout
Et merci aux experts de rester fidèles au site et disponibles :super:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.4 - Windows
djipe
Membre lOOyal
Membre lOOyal
Messages : 32
Inscription : 04 nov. 2016 20:55

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par djipe »

Bonsoir,

Durant ce silence, j'ai poursuivi mes recherches et j'ai trouvé un post de PIAF très intéressant Ouverture d'un formulaire sur un enregistrement

La base fourni dans l'exemple fonctionne très bien chez moi.
Du coup, j'ai fait un copier-collé moyennant quelques modifications. Mais une erreur survient à la ligne

Code : Tout sélectionner

NouveauFormulaire = NouveauFormulaire.DrawPage.Forms.getByName(nomFormulaire)
Cela survient dans le formulaire "Rechercher une affaire" après click sur le bouton "Ouvrir l'enregistrement sélectionné".

Voyez-vous d'où ça peut venir ?

Mon problème tournant au basic, je ne sais pas si je dois faire migrer ce fil ?

Par avance merci pour votre aide.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.4 - Windows
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Ecrire une valeur d'un contrôle de table dans une table

Message par jeanmimi »

djipe a écrit :Je sais qu'il est possible de le faire en macro, mais là je souhaite le faire avec les fonctions intrinsèques à Base.
djipe a écrit :Mon problème tournant au basic, je ne sais pas si je dois faire migrer ce fil ?
La solution 2 me semble plus adaptée.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
LeSemeur
Fraîchement OOthentifié
Messages : 5
Inscription : 17 févr. 2020 10:04

Re: [Doublon] Ecrire valeur d'un contrôle de table dans tabl

Message par LeSemeur »

Bonjour djipe

Si je comprends bien les règles de ce forum (c'est mon premier post !! :D ), il faut effectivement que tu fasses migrer la discussion. J'ai trouvé une partie de ce qui ne fonctionne pas dans ta solution avec macro. Il faut que ton formulaire "Affaires" porte le même nom dans les propriétés du formulaire. Or actuellement, il s'appelle "Mainform". Si vous changez le nom, le code ne bute plus sur le nom du formulaire.
... par contre, il n'ouvre pas le bon enregistrement, je ne sais pas pourquoi...
Bon courage pour la suite des recherches. Si je trouve ce qui bloque je vous fais signe mais je ne suis franchement pas une pro du code !
Windows10
LibreOffice 6.3.4
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9255
Inscription : 28 août 2010 08:45

Re: [Doublon] Ecrire valeur d'un contrôle de table dans tabl

Message par micmac »

Ce fil est un doublon, il est donc inutile de donner une suite.
Le nouveau sujet est ici : https://forum.openoffice.org/fr/forum/v ... 74#p336274

Sujet verrouillé
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac