[Résolu][Base] Changer l'ID du formulaire sur double-clic

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Base] Changer l'ID du formulaire sur double-clic

Messagepar djipe » 07 Avr 2018 18:20


La modération a écrit:Suite du fil : https://forum.openoffice.org/fr/forum/v ... =9&t=57567

Bonjour,

Au cours du développement de ma base, je me heure à une petite difficulté. Afin de rester concentré sur le problème, j'ai fait une base simplifiée qui nous permettra de ne pas être pollué par le reste.

Dans cette base, j'ai une table et 1 formulaire.
La table liste des filles avec l'ID d'une "fille" qui est sa mère et un commentaire.
Le formulaire comporte basiquement des champs pour renseigner cette table et un sous-formulaire tableau qui fait la liste des filles de la fille affiché au formulaire (le test fait est : affiche les lignes dont id_mère = id_fille)

Jusque là, ça fonctionne bien : J'arrive à voir qui a qui comme fille :bravo:
img_fille.jpg


Mais là où ça se complique, c'est que je voudrai que lorsque l'on double-clic sur une ligne du tableau (affichant les filles) l'id de la ligne soit utilisé comme index du formulaire principal et ainsi afficher les informations de la fille cliqué.

Pour le moment, j'ai tenté des macros mais sans grand succès.
S'il y en a parmi vous qui ont des suggestions, ça serait super sympa :bravo:

Voici ma base exemple :
affiliation.odb
(12.94 Kio) Téléchargé 8 fois
Dernière édition par micmac le 09 Avr 2018 21:07, édité 1 fois.
Raison: Balisage dans le premier message SVP
LibreOffice 5.0.4.2 - Windows 10
djipe
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 04 Nov 2016 21:55

Re: [Base] Changer l'ID du formulaire sur double-clic

Messagepar Piaf » 07 Avr 2018 18:57

Re
A tester
Code : Tout sélectionner   AgrandirRéduire
Sub Main(oEv as Object)
Dim Grille as Object, vueGrille as Object, rst As Object, oForm as Object
Dim EnCours as Object, Identifiant as Integer
   If oEv.ClickCount = 2 Then
      Grille = oEv.source.model
      vueGrille = thisComponent.CurrentController.getControl(grille)
      If UBound(vuegrille.Selection) = 0 Then
         rst = Grille.Parent.createResultSet
         Identifiant = rst.getint(1)   
      Else
         MsgBox("Vous devez sélectionner UNE ligne du contrôle de table")
         Exit Sub
      End If
      oForm = Grille.Parent.Parent
      rst = oForm.CreateResultSet
      rst.BeforeFirst
      Do while rst.Next()
         EnCours = rst.columns.getByName("id_fille")
         If EnCours.Int = Identifiant Then
            oForm.moveToBookmark(rst.Bookmark)
            thisComponent.CurrentController.getControl(oForm.getByName("txtfille")).setFocus
            Exit Do
         End if
      Loop   
   End If   
End Sub
Il faut double-Cliquer sur le marqueur d'enregistrement du contrôle de table.
A+
Pièces jointes
affiliation.odb
(14.54 Kio) Téléchargé 12 fois
Libre Office Version: 6.1.5 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5596
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Base] Changer l'ID du formulaire sur double-clic

Messagepar djipe » 07 Avr 2018 20:07

Piaf a écrit:Re
A tester
Code : Tout sélectionner   AgrandirRéduire
...

A+


Merci !
C'est parfaitement fonctionnel ! ! ! :bravo: :super:

Par avance, désolé d'être désagréable... Je vais essayer modifier ce script pour essayer d'employer une approche un poil plus sexy que la boucle. :marto:
Quoiqu'il en soit, là, j'ai un script fonctionnel.
Dès que j'ai quelque chose d'opérationnel sans la boucle, je poste. Ca pourra servir pour d'autres.
LibreOffice 5.0.4.2 - Windows 10
djipe
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 04 Nov 2016 21:55

Re: [Base] Changer l'ID du formulaire sur double-clic

Messagepar djipe » 08 Avr 2018 18:57

Je crois que j'ai mon architecture un peu plus sexy comme je le souhaitais :bravo:
Code : Tout sélectionner   AgrandirRéduire
Sub Main(oEv as Object)
   Dim oForm_source, oForm_dest as Object
   oForm_source=oEv.Source.Model.Parent.getbyname("id_fille")
   oForm_dest=ThisComponent.DrawPage.Forms.getByName ("Formulaire").GetByName("id_fille_a_afficher")
   oForm_dest.Value=oForm_source.Value

   oForm_dest.commit
   ThisComponent.DrawPage.Forms.getByName ("Formulaire").GetByName("Fille").reload
   End Sub
   
   
Sub Afficher_fille(oEv as Object)
Dim EnCours as Object, Identifiant as Integer
   If oEv.ClickCount = 2 Then
      Main(oEv)
      End if
End Sub


Mais je dois encore travailler ce code pour qu'il soit en mesure d'ouvrir les données concernant les mères.
Aussi, je pense qu'il doit être perfectible pour me passer de la lecture et écriture dans les champs. Si vous avez des mots clefs et/ou infos à me donner, je suis preneur (récupérer et modifier l'ID de formulaires) :)

Merci à Piaf !

affiliation2.odb
(25.17 Kio) Téléchargé 9 fois
LibreOffice 5.0.4.2 - Windows 10
djipe
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 04 Nov 2016 21:55

Re: [Base] Changer l'ID du formulaire sur double-clic

Messagepar Piaf » 08 Avr 2018 21:55

Bonjour
Tu réinventes un peu l'eau chaude [Base] Sélection d'enregistrement avec une liste déroulante :)
Filles.png
Code : Tout sélectionner   AgrandirRéduire
Sub Main(oEv as Object)
Dim oForm_source as Object, Identifiant as Integer
   If oEv.ClickCount = 2 Then
      oForm_Source = oEv.Source.Model.Parent
      Identifiant = oForm_Source.Columns.getByName("id_fille").getInt
      ThisComponent.DrawPage.Forms.getByName ("fFilles").Columns.getByName("refFille").UpdateInt(Identifiant)
      ThisComponent.DrawPage.Forms.getByName ("fFilles").getByName("refFille").refresh
      ThisComponent.DrawPage.Forms.getByName("fFilles").getByName ("sfmFilles").reload
   End If
End Sub
A+
Pièces jointes
affiliation2.odb
(16.11 Kio) Téléchargé 11 fois
Libre Office Version: 6.1.5 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5596
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

[Résolu] Re: [Base] Changer l'ID du formulaire sur double-cl

Messagepar djipe » 09 Avr 2018 20:57

Piaf a écrit:Bonjour
Tu réinventes un peu l'eau chaude [Base] Sélection d'enregistrement avec une liste déroulante :)

Je me doute effectivement que toutes mes problématiques ont déjà été traitées par ailleurs :mrgreen:
Le plus dur au début est de savoir comment rechercher où ça a été affiché :fou: Mais je pense progresser en la matière.

Quoiqu'il en soit, merci pour ton aide.

Sur ton dernier jus, j'ai apporté une modification supplémentaire. Je ne la trouve pas totalement sexy, mais elle répond totalement au cahier des charges que je me suis fixé.
Axes à améliorer si j'en trouve le courage :
- Masquer le triangle de la zone de liste id_mere
- Trouver comment me passer du champ formaté fmtid_mere dans ma macro pour le supprimer

Voici mon final :
affiliation3.odb
(25.98 Kio) Téléchargé 12 fois

Il suffit de cliquer sur la mère pour l'ouvrir ;)
Encore merci !
LibreOffice 5.0.4.2 - Windows 10
djipe
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 04 Nov 2016 21:55

Re: [Résolu][Base] Changer l'ID du formulaire sur double-cli

Messagepar djipe » 15 Avr 2018 14:20

Bonjour,

Je réveille ce fil par ce qu'il y a un détail qui me chagrine...
Dans l'exemple de base du dernier post, on a la zone de liste relative à "id_mere" qui présente un triangle alors que ses paramètres disent "non" à "liste déroulante".
Cf. Photos ci-dessous :
Zone de liste.jpg
Propriétés.jpg

Au delà du coté esthétique, le problème en en fait tout autre :
L'exemple du post précédent m'a servi pour développer un formulaire de base pro. Mais lorsque je configure tout de la même manière (j'ai sûrement dû louper quelque chose), sur ma base pro, je n'ai pas ce triangle qui finalement m'arrange bien.

Quelqu'un a-t-il une idée du pourquoi du comment ?
LibreOffice 5.0.4.2 - Windows 10
djipe
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 19
Inscrit le : 04 Nov 2016 21:55

Re: [Résolu][Base] Changer l'ID du formulaire sur double-cli

Messagepar Oukcha » 15 Avr 2018 16:54

Bonjour,

djipe a écrit:il y a un détail qui me chagrine...[...] un triangle

Détail qui n'a donc pas grand chose à voir avec le titre de ce fil, un nouveau fil serait sans doute bienvenu.

Cordialement
                                        
:arrow: A lire avant tout ! Image
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
 
Message(s) : 3043
Inscrit le : 06 Oct 2008 09:03


Retour vers Macros et API

Qui est en ligne ?

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