[Résolu][Base] Enregistrer et fermer un formulaire
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- Membre enthOOusiaste
- Messages : 437
- Inscription : 26 nov. 2006 11:29
- Localisation : Les Corbières
[Résolu][Base] Enregistrer et fermer un formulaire
Bonjour à tous,
Je travaille avec une base de données. J'utilise une table qui me permet de stocker des paramètres, il n'y donc qu'un seul enregistrement dans cette table. J'interagis sur cette table via un formulaire. Je veux une fois que j'ai modifié un paramètre (valeur d'un champ) pouvoir enregistrer et fermer ce formulaire via un seul bouton. Actuellement je suis obliger d'utiliser la croix de fermeture et évidemment une boîte de dialogue s'ouvre me demandant si je veux enregistrer les modifications, ce que je fais : ce n'est vraiment pas ergonomique.
J'ai donc créé un bouton auquel je voulais assigner une action du type "valider" (comme dans une boîte de dialogue) mais ce type d'action n'existe pas. Il faut donc que j'y assigne une macro combinant l'action "enregistrer" puis "fermer". Je sais fermer un formulaire par contre comment faire pour l'enregistrer ?
J'ai cherché sur le web et je n'ai trouvé aucune macro qui pourrait convenir (il y a eu une question similaire sur le forum en 2006 mais sans réponse : http://user.services.openoffice.org/fr/ ... 651#p18651).
Pourriez-vous m'éclairer ?
Merci pour vos réponses.
Thierry
Je travaille avec une base de données. J'utilise une table qui me permet de stocker des paramètres, il n'y donc qu'un seul enregistrement dans cette table. J'interagis sur cette table via un formulaire. Je veux une fois que j'ai modifié un paramètre (valeur d'un champ) pouvoir enregistrer et fermer ce formulaire via un seul bouton. Actuellement je suis obliger d'utiliser la croix de fermeture et évidemment une boîte de dialogue s'ouvre me demandant si je veux enregistrer les modifications, ce que je fais : ce n'est vraiment pas ergonomique.
J'ai donc créé un bouton auquel je voulais assigner une action du type "valider" (comme dans une boîte de dialogue) mais ce type d'action n'existe pas. Il faut donc que j'y assigne une macro combinant l'action "enregistrer" puis "fermer". Je sais fermer un formulaire par contre comment faire pour l'enregistrer ?
J'ai cherché sur le web et je n'ai trouvé aucune macro qui pourrait convenir (il y a eu une question similaire sur le forum en 2006 mais sans réponse : http://user.services.openoffice.org/fr/ ... 651#p18651).
Pourriez-vous m'éclairer ?
Merci pour vos réponses.
Thierry
Dernière modification par ThierryM le 06 sept. 2008 18:40, modifié 1 fois.
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Re: [Base] Macro pour enregistrer et fermer un formulaire
Bonjour
Code : Tout sélectionner
option explicit
Sub PysFermer(PysEvent)
PysEvent.source.model.parent.updateRow
thiscomponent.currentController.Frame.close(true)
End Sub
-
- Membre enthOOusiaste
- Messages : 437
- Inscription : 26 nov. 2006 11:29
- Localisation : Les Corbières
Re: [Base] Macro pour enregistrer et fermer un formulaire
Merci Pierre-Yves,
Je viens de trouver dans la partie "Suprême de code" un post de Dude concernant l'ouverture et la fermeture de formulaire : http://user.services.openoffice.org/fr/ ... =15&t=6355 mais il semblerait qu'il manque la macro permettant justement de quitter un formulaire dans la base exemple de Dude.
J'applique (une fois de plus) ta macro et te tiens au courant.
À bientôt,
Thierry
Rajout : il semblerait que cela soit une issue http://user.services.openoffice.org/en/ ... =20&t=7750
Je viens de trouver dans la partie "Suprême de code" un post de Dude concernant l'ouverture et la fermeture de formulaire : http://user.services.openoffice.org/fr/ ... =15&t=6355 mais il semblerait qu'il manque la macro permettant justement de quitter un formulaire dans la base exemple de Dude.
J'applique (une fois de plus) ta macro et te tiens au courant.
À bientôt,
Thierry
Rajout : il semblerait que cela soit une issue http://user.services.openoffice.org/en/ ... =20&t=7750
Dernière modification par ThierryM le 06 sept. 2008 13:57, modifié 1 fois.
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?
-
- Membre enthOOusiaste
- Messages : 437
- Inscription : 26 nov. 2006 11:29
- Localisation : Les Corbières
Re: [Base] Macro pour enregistrer et fermer un formulaire
Resalut Pierre-Yves,
Je viens de tester ta macro. Pas de problème au premier enregistrement. Par contre quand je réouvre mon formulaire "Paramétrage", j'ai mes zones de listes qui ont leur contenu écrit avec des caractères sur un fond bleu et lorsque je clique à nouveau sur le bouton, j'obtiens un message d'erreur comme quoi il n'y a pas de script (No Script).
Ci-joint une base exemple simplifiée :
Je viens de tester ta macro. Pas de problème au premier enregistrement. Par contre quand je réouvre mon formulaire "Paramétrage", j'ai mes zones de listes qui ont leur contenu écrit avec des caractères sur un fond bleu et lorsque je clique à nouveau sur le bouton, j'obtiens un message d'erreur comme quoi il n'y a pas de script (No Script).
Ci-joint une base exemple simplifiée :
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?
-
- Membre enthOOusiaste
- Messages : 437
- Inscription : 26 nov. 2006 11:29
- Localisation : Les Corbières
Re: [Base] Macro pour enregistrer et fermer un formulaire
Je viens de trouver quelques éclaircissements ici : http://www.oooforum.org/forum/viewtopic ... 564#288564.
En fait, il semblerait qu'il y ait un problème avec ThisComponent...
Voilà le code proposé sur le lien ci-dessus (à adapter et à tester) :
Si on regarde chaque macro ouvre un formulaire (à l'aide de 3 fonctions définies en premier)... et elle le ferme aussi (ce que je ne comprends pas) avec
En fait, il semblerait qu'il y ait un problème avec ThisComponent...
Voilà le code proposé sur le lien ci-dessus (à adapter et à tester) :
Code : Tout sélectionner
function OpenForm( formContainer as variant, oConnection as variant, sFormName as string) as variant
Dim aProp(1) As New com.sun.star.beans.PropertyValue
aProp(0).Name = "ActiveConnection"
aProp(0).Value = oConnection
aProp(1).Name = "OpenMode"
aProp(1).Value = "open"
OpenForm = formContainer.loadComponentFromURL(sFormName,"_blank",0,aProp())
end function
function getFormsTC() as variant
getFormsTC = thisComponent.Parent.getFormDocuments
end function
function getConnectionTC() as variant
getConnectionTC = thisComponent.Drawpage.Forms(0).ActiveConnection
end function
sub OpenClienten ( oev as variant )
sFormName = "Cliënten"
OpenForm( getFormsTC, getConnectionTC, sFormName )
thisComponent.parent.FormDocuments.getByName(curFormName (thisComponent)).dispose()
end sub
sub OpenRelaties ( oev as variant )
sFormName = "Relaties"
OpenForm( getFormsTC, getConnectionTC, sFormName )
thisComponent.parent.FormDocuments.getByName(curFormName (thisComponent)).dispose()
end sub
sub OpenFinancien ( oev as variant )
sFormName = "Financiën"
OpenForm( getFormsTC, getConnectionTC, sFormName )
thisComponent.parent.FormDocuments.getByName(curFormName (thisComponent)).dispose()
end sub
sub OpenInstellingen ( oev as variant )
sFormName = "Instellingen"
OpenForm( getFormsTC, getConnectionTC, sFormName )
thisComponent.parent.FormDocuments.getByName(curFormName (thisComponent)).dispose()
end sub
Code : Tout sélectionner
thisComponent.parent.FormDocuments.getByName(curFormName (thisComponent)).dispose()
Ajout :
En fait, Code : Tout sélectionner
J'ai trouvé la fonction "curFormName" manquante : Code : Tout sélectionner
|
Dernière modification par ThierryM le 06 sept. 2008 18:24, modifié 1 fois.
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?
-
- RespOOnsable forum
- Messages : 12230
- Inscription : 08 nov. 2005 16:23
- Localisation : Caen, France
Re: [Base] Macro pour enregistrer et fermer un formulaire
On vous rappelle que le terme "Macro" est implicite et n'a pas besoin d'être mentionné.
Merci de ne pas poster plusieurs messages à la suite !
Le bouton "Editer" à la droite du message permet d'y remédier.
Merci de ne pas poster plusieurs messages à la suite !
Le bouton "Editer" à la droite du message permet d'y remédier.
-
- Membre enthOOusiaste
- Messages : 437
- Inscription : 26 nov. 2006 11:29
- Localisation : Les Corbières
Re: [Base] Enregistrer et fermer un formulaire
Ça y est j'ai pu contourner le problème.
En fait en fermant le formulaire par le biais du currentcontroller.frame, il y a un problème lorsque l'on recharge le formulaire fermé de cette façon.
Voici donc le code trouvé sur http://www.oooforum.org/forum/viewtopic ... 290#272290 fourni par Evgenych.
Peut-être pourrait-on le mettre en "suprême de code" ?
À bientôt,
Thierry
En fait en fermant le formulaire par le biais du currentcontroller.frame, il y a un problème lorsque l'on recharge le formulaire fermé de cette façon.
Voici donc le code trouvé sur http://www.oooforum.org/forum/viewtopic ... 290#272290 fourni par Evgenych.
Code : Tout sélectionner
REM ***** BASIC *****
option explicit
Function curFormName (o as object) as string
'Fonction qui permet de récupérer le nom du formulaire
Dim args as object, i as integer
args = o.getArgs
for i = lBound(args) to uBound(args)
if args(i).name = "DocumentTitle" then
curFormName = args(i).value
exit for
end if
next
End Function
Sub FermerFormulaireDansBase(oEvent)
oEvent.source.model.parent.updateRow 'met à jour l'enregistrement
thisComponent.parent.FormDocuments.getByName(curFormName (thisComponent)).dispose()'ferme le formulaire
end sub
À bientôt,
Thierry
LibreOffice Version: 7.6.2 / Linux Mint Mate Edition 21.2 / Pourquoi privilégier les formats de fichiers ouverts ?
-
- NOOuvel adepte
- Messages : 14
- Inscription : 02 juin 2016 15:51
Re: [Résolu][Base] Enregistrer et fermer un formulaire
Bonjour à tous,
Je rencontre un petit problème avec la macro présentée par Thierry : quand j'utilise
J'ai une erreur qui s'affiche me disant que "l'argument n'est pas facultatif" en me sélectionnant le args= 0.getArgs
Quelqu'un aurait une idée?
Merci beaucoup,
Tiago
Je rencontre un petit problème avec la macro présentée par Thierry : quand j'utilise
Code : Tout sélectionner
REM ***** BASIC *****
option explicit
Function curFormName (o as object) as string
'Fonction qui permet de récupérer le nom du formulaire
Dim args as object, i as integer
args = o.getArgs
for i = lBound(args) to uBound(args)
if args(i).name = "PECM" then
curFormName = args(i).value
exit for
end if
next
End Function
Quelqu'un aurait une idée?
Merci beaucoup,
Tiago
Open office 4.1.2
Windows XP
Windows XP
-
- MOOdérateur
- Messages : 1139
- Inscription : 01 oct. 2008 16:54
Re: [Résolu][Base] Enregistrer et fermer un formulaire
Nettoyez votre PC du piratage, utilisez des logiciels libres à chaque lavage.
Une seule dose de OpenOffice suffit à éliminer durablement toute trace de MS-Office.
Une seule dose de OpenOffice suffit à éliminer durablement toute trace de MS-Office.