[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.

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

Messagepar djipe » 30 Jan 2020 21:54

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
Pièces jointes
Nouvelle base de données4.odb
Gestion d'affaires
(30.78 Kio) Téléchargé 9 fois
Dernière édition par djipe le 10 Fév 2020 21:00, édité 1 fois.
LibreOffice 6.4 - Windows
djipe
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 04 Nov 2016 21:55

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

Messagepar micmac » 30 Jan 2020 22:29

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.
Les formats ouverts (ODF) assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6639
Inscrit le : 28 Août 2010 09:45

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

Messagepar djipe » 30 Jan 2020 22:33

Merci, je viens d'actualiser ma signature. :marto:
LibreOffice 6.4 - Windows
djipe
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 04 Nov 2016 21:55

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

Messagepar Dude » 31 Jan 2020 09:30

Ton ODB utilise Firebird comme moteur.
Commence par voir avec le format HSQL si le problème persiste ou si c'est un bogue.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21422
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar djipe » 31 Jan 2020 21:34

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.
Pièces jointes
Affaires.odb
(30.43 Kio) Téléchargé 6 fois
LibreOffice 6.4 - Windows
djipe
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 04 Nov 2016 21:55

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

Messagepar jeanmimi » 01 Fév 2020 14:32

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 : Version: 6.4.2.2 (x64) (23 mars 2020)
AdoptOpenJDK (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) : 15257
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

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

Messagepar djipe » 01 Fév 2020 21:13

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 ?
Pièces jointes
Affaires.odb
(39.59 Kio) Téléchargé 4 fois
LibreOffice 6.4 - Windows
djipe
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 04 Nov 2016 21:55

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

Messagepar Dude » 03 Fév 2020 10:19

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

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

Messagepar djipe » 03 Fév 2020 21:34

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...
Pièces jointes
Affaires.odb
(40.14 Kio) Téléchargé 8 fois
LibreOffice 6.4 - Windows
djipe
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 04 Nov 2016 21:55

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

Messagepar jeanmimi » 03 Fév 2020 21:47

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 : Version: 6.4.2.2 (x64) (23 mars 2020)
AdoptOpenJDK (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) : 15257
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

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

Messagepar djipe » 03 Fév 2020 22:01

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
djipe
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 04 Nov 2016 21:55

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

Messagepar HRk2o » 04 Fév 2020 00:53

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
(42.38 Kio) Téléchargé 6 fois
AOO 4.17 et LO 5.47 sous OsX 10.13.6 High Sierra ; Windows 10 sous AOO 4.16 et LibO 5.4.7
HRk2o
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 251
Inscrit le : 29 Mai 2009 09:51
Localisation : Guyane

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

Messagepar djipe » 06 Fév 2020 22:31

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:
Pièces jointes
Affaires.odb
(52.42 Kio) Téléchargé 5 fois
LibreOffice 6.4 - Windows
djipe
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 04 Nov 2016 21:55

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

Messagepar djipe » 09 Fév 2020 21:41

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   AgrandirRéduire
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.
Pièces jointes
Affaires.odb
(53.18 Kio) Téléchargé 8 fois
LibreOffice 6.4 - Windows
djipe
Membre lOOyal
Membre lOOyal
 
Message(s) : 32
Inscrit le : 04 Nov 2016 21:55

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

Messagepar jeanmimi » 10 Fév 2020 11:25

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 : Version: 6.4.2.2 (x64) (23 mars 2020)
AdoptOpenJDK (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) : 15257
Inscrit le : 03 Mars 2006 17:02
Localisation : Venise verte

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

Messagepar LeSemeur » 19 Fév 2020 12:03

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
LeSemeur
Fraîchement OOthentifié
 
Message(s) : 5
Inscrit le : 17 Fév 2020 11:04

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

Messagepar micmac » 19 Fév 2020 12:35

Ce fil est un doublon, il est donc inutile de donner une suite.
Le nouveau sujet est ici : viewtopic.php?p=336274#p336274

Sujet verrouillé
Les formats ouverts (ODF) assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6639
Inscrit le : 28 Août 2010 09:45


Retour vers Base de données

Qui est en ligne ?

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