Page 1 sur 1
[Résolu][Base] Changer l'ID du formulaire sur double-clic
Publié : 07 avr. 2018 19:20
par djipe
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
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
Voici ma base exemple :
Re: [Base] Changer l'ID du formulaire sur double-clic
Publié : 07 avr. 2018 19:57
par Piaf
Re
A tester
Code : Tout sélectionner
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+
Re: [Base] Changer l'ID du formulaire sur double-clic
Publié : 07 avr. 2018 21:07
par djipe
Piaf a écrit :Re
A tester
A+
Merci !
C'est parfaitement fonctionnel ! ! !
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.
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.
Re: [Base] Changer l'ID du formulaire sur double-clic
Publié : 08 avr. 2018 19:57
par djipe
Je crois que j'ai mon architecture un peu plus sexy comme je le souhaitais
Code : Tout sélectionner
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 !
Re: [Base] Changer l'ID du formulaire sur double-clic
Publié : 08 avr. 2018 22:55
par Piaf
Bonjour
Tu réinventes un peu l'eau chaude
[Base] Sélection d'enregistrement avec une liste déroulante Code : Tout sélectionner
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+
[Résolu] Re: [Base] Changer l'ID du formulaire sur double-cl
Publié : 09 avr. 2018 21:57
par djipe
Je me doute effectivement que toutes mes problématiques ont déjà été traitées par ailleurs
Le plus dur au début est de savoir comment rechercher où ça a été affiché
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 :
Il suffit de cliquer sur la mère pour l'ouvrir
Encore merci !
Re: [Résolu][Base] Changer l'ID du formulaire sur double-cli
Publié : 15 avr. 2018 15:20
par djipe
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 :
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 ?
Re: [Résolu][Base] Changer l'ID du formulaire sur double-cli
Publié : 15 avr. 2018 17:54
par Oukcha
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