[Doublon] Ecrire valeur d'un contrôle de table dans table
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.
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.
-
- Membre lOOyal
- Messages : 32
- Inscription : 04 nov. 2016 20:55
[Doublon] Ecrire valeur d'un contrôle de table dans table
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
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
-
- RespOOnsable forum
- Messages : 9255
- Inscription : 28 août 2010 08:45
Re: Ecrire une valeur d'un contrôle de table dans une table
Bonjour,
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.
Cette version de LibO est obsolète.Dans votre signature il y a écrit : LibreOffice 5.0.4.2
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
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
-
- Membre lOOyal
- Messages : 32
- Inscription : 04 nov. 2016 20:55
Re: Ecrire une valeur d'un contrôle de table dans une table
Merci, je viens d'actualiser ma signature.
LibreOffice 6.4 - Windows
-
- 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
Ton ODB utilise Firebird comme moteur.
Commence par voir avec le format HSQL si le problème persiste ou si c'est un bogue.
Commence par voir avec le format HSQL si le problème persiste ou si c'est un bogue.
-
- Membre lOOyal
- Messages : 32
- Inscription : 04 nov. 2016 20:55
Re: Ecrire une valeur d'un contrôle de table dans une table
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.
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.
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.
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
-
- 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
Bonjour,
Dans quels autres formulaires l'Id doit il être intégré ?
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 ?djipe a écrit :L'objectif ensuite est d'utiliser cette valeur pour l'intégrer dans d'autres formulaires.
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
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre lOOyal
- Messages : 32
- Inscription : 04 nov. 2016 20:55
Re: Ecrire une valeur d'un contrôle de table dans une table
Bonjour,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é ?
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.
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
-
- 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
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
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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
-
- Membre lOOyal
- Messages : 32
- Inscription : 04 nov. 2016 20:55
Re: Ecrire une valeur d'un contrôle de table dans une table
Bonjour,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
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
-
- 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
Pour récupérer l'Id de l'affaire sélectionné et l'injecter dans une autre Table, à mon avis, il faut une Macro.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.
D'autant que :
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.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, ...)
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Membre lOOyal
- Messages : 32
- Inscription : 04 nov. 2016 20:55
Re: Ecrire une valeur d'un contrôle de table dans une table
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 :Pour récupérer l'Id de l'affaire sélectionné et l'injecter dans une autre Table, à mon avis, il faut une Macro.
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.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.
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
LibreOffice 6.4 - Windows
-
- 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
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.
@+
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.
@+
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
-
- Membre lOOyal
- Messages : 32
- Inscription : 04 nov. 2016 20:55
Re: Ecrire une valeur d'un contrôle de table dans une table
Bonsoir !HRk2o a écrit :Pour faire simple et direct, utilisez directement le formulaire " Affaires "; voir la modification apportée.
Merci pour la proposition mais je trouve que les filtres manquent d'intuitivité.
J'ai peur que l'assistante s'y froisse un neurone
Ca va, elle ne connait pas mon pseudo sinon
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.
Point positif, j'ai perfectionné mon filtre. Il fait appel à une requête paramétré sur des champs du formulaire
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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.4 - Windows
-
- Membre lOOyal
- Messages : 32
- Inscription : 04 nov. 2016 20:55
Re: Ecrire une valeur d'un contrôle de table dans une table
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
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.
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)
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
-
- 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
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.
La solution 2 me semble plus adaptée.djipe a écrit :Mon problème tournant au basic, je ne sais pas si je dois faire migrer ce fil ?
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
-
- Fraîchement OOthentifié
- Messages : 5
- Inscription : 17 févr. 2020 10:04
Re: [Doublon] Ecrire valeur d'un contrôle de table dans tabl
Bonjour djipe
Si je comprends bien les règles de ce forum (c'est mon premier post !! ), 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 !
Si je comprends bien les règles de ce forum (c'est mon premier post !! ), 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
LibreOffice 6.3.4
-
- RespOOnsable forum
- Messages : 9255
- Inscription : 28 août 2010 08:45
Re: [Doublon] Ecrire valeur d'un contrôle de table dans tabl
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é
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
Outils > Options sur Windows = OpenOffice > Préférences sur Mac