Zone Combinée - mauvais affichage

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.
sfrediere
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 04 juil. 2012 11:38

Zone Combinée - mauvais affichage

Message par sfrediere »

Bonjour,

je n'ai pas trouvé de poste répondant à ma question... Je pense avoir bien cherché.

Alors en faite, dans ma base, j'ai un formulaire qui s'appelle fEntretiens.
Ce formulaire a pour but d'enregistrer de nouveaux entretiens concernant des Porteurs de Projets, auxquels peuvent participer des Personnes Ressources.

Je voudrais que dans ce formulaire, on puisse grâce à une zone combinée décider de sélectionner un Personne Ressource déjà enregistrée dans la base OU rentrer le nom, prénom et organisme d'une nouvelle personne ressource.

Or, si je fait une zone de liste, je ne peux pas rajouter de Personne Ressource. Si je fait une zone combinée, je peux rajouter un nouveau nom. MAIS !

Deux problèmes :
1. le nom ne s'enregistre pas dans la table des personnes ressources (T_Personnes_Ressources).
2. Le formulaire ne m'affiche non pas le nom que je viens de taper mais un numéro... ???

Quelqu'un aurait il une solution ?

Merci d'avace
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par sfrediere le 23 juil. 2012 13:32, modifié 2 fois.
LibreOffice3.3.0, Mac OS X version 10.5.6
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Zone Combinée - mauvais affichage

Message par jeanmimi »

Bonjour,
L'exemple de base du forum pour ajouter un nouvel enregistrement choisit tout simplement d'ouvrir un formulaire par clic sur bouton, formulaire qui permet de saisir les nouveaux enregistrements (dans l'exemple, il s'agit de participants à une compétition sportive).
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
sfrediere
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 04 juil. 2012 11:38

Re: Zone Combinée - mauvais affichage

Message par sfrediere »

jeanmimi a écrit :Bonjour,
L'exemple de base du forum pour ajouter un nouvel enregistrement choisit tout simplement d'ouvrir un formulaire par clic sur bouton, formulaire qui permet de saisir les nouveaux enregistrements (dans l'exemple, il s'agit de participants à une compétition sportive).
Je n'ai pas précisé c'est vrai, mais je voudrais ne pas avoir à ouvrir un nouveau formulaire (c'est plus confortable pour l'utilisateur, plutôt que de clicker sur +, rajouter une Personne Ressource dont ils ne veulent que le nom sans les coordonnées, revenir dans le formulaire initial, resélectionner les participants)
LibreOffice3.3.0, Mac OS X version 10.5.6
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Zone Combinée - mauvais affichage

Message par jeanmimi »

Dans l'exemple, l'ouverture du deuxième formulaire ne sert que lorsque tu veux créer un nouvel enregistrement dans la table, pas lorsque tu veux sélectionner un enregistrement déjà existant.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
sfrediere
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 04 juil. 2012 11:38

Re: Zone Combinée - mauvais affichage

Message par sfrediere »

Oui je sais... Je ne vois pas en quoi cela contredit mon message précédent ??

Est ce que sinon tu pourrais juste m'expliquer le principe de la zone combinée ? peut être que je ne sais juste pas l'utiliser.
LibreOffice3.3.0, Mac OS X version 10.5.6
alchemy
Membre lOOyal
Membre lOOyal
Messages : 48
Inscription : 12 juil. 2012 07:51

Re: Zone Combinée - mauvais affichage

Message par alchemy »

Bonjour,

hum. as tu essayé ce lien :
http://user.services.openoffice.org/fr/ ... 17&t=23198
est-ce que cela correspond ?

ou bien de rechercher dans l'aide ou les tutos ?

cdlt
Aoo 3.4.1 sur windows 7 à jour
sfrediere
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 04 juil. 2012 11:38

Re: Zone Combinée - mauvais affichage

Message par sfrediere »

Hé bien non je ne l'avais pas vu, mais à la rigueur cela ne fait que confirmer ce que je pensais au départ : c'est bien ça l'objectif d'une zone de liste. Pouvoir piocher dans une liste, et pouvoir également saisir.
Retour donc case départ : pourquoi est ce que ma zone de liste n'affiche que des chiffres ?
Mais dans les tutos on ne parle que de "zone de liste", pas de l'utilisation des "zones combinées".
Merci pour ce lien.
LibreOffice3.3.0, Mac OS X version 10.5.6
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Zone Combinée - mauvais affichage

Message par jeanmimi »

sfrediere a écrit :pourquoi est ce que ma zone de liste n'affiche que des chiffres ?
J'imagine que ce sont les ID des enregistrements ou des numéros qui ne peuvent pas être modifiés ou des numéros d'une table où il n'y pas de noms ?
Pour avoir une Boite combinée avec affichage des noms, tu pourrais tester cette structure à condition qu'elle soit fonctionnelle et qu'elle ne cherche pas à enregistrer une donnée là où ce n'est pas possible :
Formulaire_fEntretiens.jpg
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
sfrediere
Membre OOrganisé
Membre OOrganisé
Messages : 53
Inscription : 04 juil. 2012 11:38

Re: Zone Combinée - mauvais affichage

Message par sfrediere »

mmmmh... Ca ne marche pas non plus ... Je suppose qu'il ne doit pas être possible de créer une boite combinée devant remplir un champ de clé secondaire, tout en affichant non pas la clé secondaire mais le nom et prénom.
Qu'importe ce n'est pas très grave. Merci quand même.
LibreOffice3.3.0, Mac OS X version 10.5.6
Sonioh
Fraîchement OOthentifié
Messages : 6
Inscription : 16 févr. 2023 11:33

Re: Zone Combinée - mauvais affichage

Message par Sonioh »

Bonjour,

Ce message date un peu mais il mérite une réponse au moins pour ceux qui se posent la même question (comme moi il y a quelque temps). J'ai trouvé une méthode pour palier à ce probleme dans le guide base chapitre macro mais le code est complexe car fait pour automatiser tous les combobox d'un formulaire. Je l'ai decortiqué pour comprendre comment il fonctionnait et arriver à des macros plus digeste.
Avec la combobox, il y a un problème lorsqu'on cherche à afficher, choisir, ajouter un élément d'une table [COULEUR: ID, Nom] qui n'est pas la table de reference de notre formulaire [VOITURE: ID, ID_Couleur].

Au lieu de m'afficher le nom de ma couleur, la combobox m'affiche l'ID correspondant...

Voici la solution:
Dans le formulaire Voiture lié à la table VOITURE,
il faut créer un champ numérique ID_Couleur lié à ID_Couleur
et un champ zone combinée ZC_Couleur lié aussi à ID_Couleur, Type de contenu de liste: SQL, Contenu de liste: SELECT "Nom" FROM "COULEUR" ORDER BY "Nom"

Dans un module macro, il faut une procédure pour afficher le nom de la couleur choisie, la procédure doit être associée à l'evenement "apres le changement d'enregistrement" du formulaire Voiture.

Code : Tout sélectionner

Sub AffichageTxt_ZC
	Dim oForm_Voiture 		As Object
	Dim oZC_Couleur		As Object
	Dim oID_Couleur		As Object
	Dim stNom_Couleur		As String
	Dim inID_Couleur		As Long
	
	Dim oResultat			As Object
	Dim oSourceDonnees		As Object
	Dim oConnexion		As Object
	Dim oSQL_Commande	As Object
	Dim stSQL				As String
	
	oForm_Voiture	=	thisComponent.drawpage.forms.getByName("Voiture")
	oZC_Couleur	=	oForm_Voiture.getByName("ZC_Couleur")
	oID_Couleur	=	oForm_Voiture.getByName("ID_Couleur")
	oZC_Couleur.refresh()
	
	If not isEmpty(oID_Couleur.getCurrentValue()) then		
		oSourceDonnees	=	thisComponent.Parent.CurrentController
		If Not (oSourceDonnees.isConnected()) then
			oSourceDonnes.connect()
		End If
		oConnexion		=	oSourceDonnees.ActiveConnection()
		oSQL_Commande	=	oConnexion.createStatement()
		
		inID_Couleur	=	oID_Couleur.getCurrentValue()
		stSQL		=	"SELECT ""Nom"" FROM ""COULEUR"" WHERE ""ID""=" + inID_Couleur
		oResultat			=	oSQL_Commande.executeQuery(stSQL)
		While oResultat.next
			stNom_Couleur	=	oResultat.getString(1)
		Wend
		oZC_Couleur.Text	=	stNom_Couleur
	Else
		oZC_Couleur.Text	=	""
	End If
End Sub
La deuxième macro a ajouter est celle qui permet d'enregistrer la valeur ecrite ou selectionnée dans la zone combinée: la procédure est liée à l'événenement "Avant l'actualisation" de la zone combinée ZC_Couleur

Code : Tout sélectionner

Sub EnregistrerTxt_ZC
	Dim oForm_Voiture 		As Object
	Dim oZC_Couleur		As Object
	Dim oID_Couleur		As Object
	Dim stNom_Couleur		As String
	Dim inID_Couleur		As Long
	
	Dim oResultat			As Object
	Dim oSourceDonnees		As Object
	Dim oConnexion		As Object
	Dim oSQL_Commande	As Object
	Dim stSQL				As String
	
	oForm_Voiture	=	thisComponent.drawpage.forms.getByName("Voiture")
	oZC_Couleur	=	oForm_Voiture.getByName("ZC_Couleur")
	oID_Couleur	=	oForm_Voiture.getByName("ID_Couleur")

	stNom_Couleur	=	Trim(oZC_Couleur.getCurrentValue())
	
	If (stNom_Couleur<> "") then
		oSourceDonnees	=	thisComponent.Parent.CurrentController
		If Not (oSourceDonnees.isConnected()) then
			oSourceDonnes.connect()
		End If
		oConnexion		=	oSourceDonnees.ActiveConnection()
		oSQL_Commande	=	oConnexion.createStatement()
		inID_Couleur		=	-1
		stSQL			=	"SELECT ""ID"" FROM ""COULEUR"" WHERE ""Nom""='" + stNom_Couleur + "'"
		oResultat			=	oSQL_Commande.executeQuery(stSQL)
		While oResultat.next
			inID_Couleur	=	oResultat.getLong(1)
		Wend
		If inID_Couleur	= -1 then
			stSQL	=	"INSERT INTO ""COULEUR"" (""Nom"") VALUES ('" + stNom_Couleur + "')"
			oSQL_Commande.executeUpdate(stSQL)
			stSQL	=	"CALL IDENTITY()"
			oResultat	=	oSQL_Commande.executeQuery(stSQL)
			While oResultat.next
				inID_Couleur	=	oResultat.getLong(1)
			Wend
		End If
		oForm_Voiture.updateLong(2, inID_Couleur)
	Else
		oForm_Voiture.updateNULL(2)
	End If
	If oForm_Voiture.IsNew then
		oForm_Voiture.insertRow()
	Else
		oForm_Voiture.updateRow()
	End If
End Sub
Et voila normalement ca doit fonctionner.
LibO 7.3.4.2
HSQLDB externe
Windows 10.0
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 10105
Inscription : 28 août 2010 08:45

Re: Zone Combinée - mauvais affichage

Message par micmac »

Sonioh a écrit : 20 avr. 2023 13:48 Ce message date un peu...
Exact. Il date du 23 juil. 2012.
Votre réponse fait appel aux macros qui n'ont pas de raison d'être dans cette section.
De plus le demandeur n'a pas reparu depuis le 11 sept. 2012 11:42

Déterrage = verrouillage .
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS