[Résolu][Base]Remplir Liste ds dialogue à partir d'une table

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 !
Avatar de l’utilisateur
compalele
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 02 juin 2016 11:52

[Résolu][Base]Remplir Liste ds dialogue à partir d'une table

Message par compalele »

Bonjour,
La modération vous a écrit: Forum francophone

Je suis en train de créer une base de donnée, qui sera principalement pilotée par l'utilisateur final via des boutons dans les formulaires.
Ces boutons permettrons à l'utilisateur de naviguer entre les différents formulaires, d'ajouter ou de modifier des enregistrements, les trier, rechercher, grâce à l'utilisation de macros et de boites de dialogue.


Je voudrais que l'on puisse saisir toutes les données nécessaires dans les zones de texte et zones de liste de la boite de dialogue. Cela implique que les zones de listes soient correctement remplies.
Dans l'idée, des tables contenant les "listes de référence" devaient être utilisées pour gérer ces zones : l'administrateur entre tous les choix possibles dans un champ, qui servira à remplir une zone de liste spécifique.
Dans l'exemple, on voudrait que le champ "Nom" de la table "Clients" soit la référence qui servira à remplir la zone de liste à l'ouverture de la boite de dialogue.

En formalisant, ma question serait : Comment remplir une zone de liste d'une boite de dialogue à partir d'une table ?


A savoir, je ne me suis mis à Base que très récemment, mais après un épluchage intensif du forum, je n'ai trouvé que très peu d'applications utilisant les boites de dialogue dans Base (et je n'ai évidemment pas trouvé la réponse à ma question).

Ci-joint un fichier test, nommé RemplirListeUserform, qui contient :
- une table Client, avec entre autre le champ Nom qui doit servir à remplir la zone de liste
- Un formulaire, qui affiche la table Client et un bouton, qui exécute la macro d'ouverture de la boite de dialogue contenant la zone de liste
- Un test de requête SQL, qui sort le champ Nom de Client
- Un Module (Module1) avec une fonction (pour charger la boite de dialogue) et la macro qui initialise la boite, avant de traiter les données recueillies. Cette macro est commencé, mais vous vous apercevrez qu'il y a des petits trous..


Je ne pourrai consulter vos réponses qu'à partir de demain (14/09/16) matin (heures de bureau), donc ne vous offusquez pas si je met du temps à me manifester.
Je vous remercie par avance.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par compalele le 14 sept. 2016 07:02, modifié 2 fois.
LibreOffice 5.1.5.2 sous Windows 10
Mises à jour peu fréquentes, utilisation professionnelle
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Base]Remplir Liste dans un dialogue à partir d'une tabl

Message par Piaf »

Bonjour
Pas compris l'intérêt de la manip :roll:
A tester

Code : Tout sélectionner

sub BoutonTest (oEv as Object)
Dim strLibrairie as string
Dim strBoite as string
Dim oListeNom as object, oForm as Object, maConnexion as Object, maRequete as Object, resultat as Object
Dim tableauListeNom() as String
	strLibrairie = "Standard"
	strBoite = "BOITE_TEST"
	maConnexion = ThisDatabaseDocument.DataSource.getconnection("","")
	'déclarer objets formulaires
	oForm = oEv.Source.Model.Parent
	NomTable = oForm.Command
	NomChamp = oForm.Columns.getByName("Nom").Name
	'Aller chercher la liste dans la table et la mettre dans un tableau
	strSql = "SELECT """ & NomChamp & """ FROM """ & NomTable & """"
	maRequete = maConnexion.createStatement()
	resultat = maRequete.executeQuery(strSQL)
	i = 0
	While resultat.Next
		reDim Preserve tableauListeNom(i)
		tableauListeNom(i) = resultat.Columns(0).String
		i = i + 1
	Wend
	'charger la boite de dialogue
	oDialogue = OuvreBoite (strLibrairie, strBoite)
	'attribuer la liste du userform à un objet
	oListeNom = oDialogue.getControl("ListeNom")

	'***********************************************
	'La petite partie pas facile où on va chercher la liste, 
	'qui est le champ "Nom" de la table "Clients"
	'aussi le résultat de la requête : [SELECT "Nom" FROM "Client"
	'--> copier plage dans tableau
	'***********************************************	
	'remplir les listes avec les tables dans le userform
	oListeNom.Model.StringItemList = tableauListeNom()
	
		
	
RetourBoite: 'renvoi, utile pour la vérification des données entrantes
	'ouvrir la boite et arrêter la macro si le bouton "annuler" ou la croix a été pressé
	if oDialogue.Execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
		'le bouton OK a été pressé
		If oListeNom.SelectedItem = "" Then
			MsgBox "Aucun nom sélectionné"
		Else	
			MsgBox "Le nom sélectonné dans la liste du dialogue est :" & Chr(13) & oListeNom.SelectedItem & Chr(13) & _
			"Le nom de l'enregistrement actif du contrôle de table est :" & Chr(13) & oForm.Columns.getByName("Nom").getString
		End If	
	else
		MsgBox "Le nom de l'enregistrement actif du contrôle de table est :" & Chr(13) & oForm.Columns.getByName("Nom").getString
   		exit sub 'un bouton autre que OK a été pressé
	end if
end sub
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
compalele
NOOuvel adepte
NOOuvel adepte
Messages : 20
Inscription : 02 juin 2016 11:52

Re: [Base]Remplir Liste dans un dialogue à partir d'une tabl

Message par compalele »

Bonjour et merci Piaf,

L'intérêt d'une base comme mon exemple, aucun. Mais l'utilisation de boites de dialogue et de listes devrait permettre à l'utilisateur pas très confiant par rapport à ses compétences informatiques de gérer la base de données juste en cliquant sur les "petits boutons" mis à sa disposition.

Merci encore, la solution fonctionne ! :super:

Bonne journée.
LibreOffice 5.1.5.2 sous Windows 10
Mises à jour peu fréquentes, utilisation professionnelle