Page 1 sur 1

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

Publié : 07 avr. 2018 19:20
par djipe

La modération vous 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é 66 fois

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 ! ! ! :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.

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 :bravo:

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 !
affiliation2.odb
(25.17 Kio) Téléchargé 65 fois

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 :)
Filles.png

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
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é 67 fois
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 :
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 ?

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