[Résolu][Base] Création d'un Formulaire Autonome

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
DUME06
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 05 oct. 2021 18:16

[Résolu][Base] Création d'un Formulaire Autonome

Message par DUME06 »

Bonjour à vous tous
Dans un précédent message" Dude " m'avait conseillé d'utiliser des macros dans les formulaires. :)
Je ne suis vraimant pas un expert et pour la première fois j'ai donc effectué un test.
***** A partir du formulaire Fmenu (formulaire d’accueil) j'ai voulu ouvrir avec des boutons 1) le formulaire Enregistrement (Enregistrement-Contact) puis 2) le formulaire de consultation (Fiche-Contact).
Çà fonctionne parfaitement bien pour le 1) :super: ; mais j'ai un message d'erreur sur le 2) : :fou: ???
Cela est certainement du à une erreur de syntaxe dans l'écriture de la macros!! et je ne sais pas quelle correction appliquée ?...
SVP; pouvez-vous m'aider à résoudre ce PB... en fichier joint vous trouverez la capture Écran..
CaptureXXXX.JPG
En vous remerciant par avance pour votre compréhension et votre aide; je vous souhaite un bon dimanche..
Cordialement
DUME06
Dernière modification par micmac le 13 oct. 2021 21:36, modifié 3 fois.
Raison : La balisa [Résolu] doit être placée AVANT la balise [Base]
LibreOffice 7.1, Windows 7 et LinuxMint 20.2
plonge
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 297
Inscription : 09 sept. 2010 21:06

Re: Formulaire: création de Macros

Message par plonge »

Bonjour DUM06,
La bonne formulation pour ouvrir de multiple formulaires depuis un formulaire général et d'utiliser la commande thisDatabaseDocument seul, exemple

Code : Tout sélectionner

Sub OuvirFormulaireTexte
   thisDatabaseDocument.FormDocuments.getByName( "Texte" ).open
End Sub
Regarde ce fil https://forum.openoffice.org/fr/forum/v ... 26&t=48567 et les macros de 'Routine' ainsi que les propriétés du formulaire Menu.
Cordialement
plonge
La modération vous a écrit: Code mis entre balises [code] pour faciliter la lecture

LO version 7.4.5.1 sous windows 10 et 11 standard, java 1.8.0_341
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9223
Inscription : 28 août 2010 10:45

Re: [Base] Création d'un Formulaire Autonome

Message par micmac »

Bonjour,

Sujet déplacé dans la bonne section du forum et balisé.

Le titre de votre question n'est pas assez explicite ou ne reflète pas le problème que vous décrivez :
<Formulaire: création de Macros>
Nous l'avons donc modifié. En effet, lors d'une recherche, ce sujet risquait de passer inaperçu et donc de ne pas aider d'autres personnes ayant le même problème que vous. Des termes implicites comme macro n'ont pas besoin d'être mentionnés.

Voici quelques astuces pour avoir un titre optimum : https://forum.openoffice.org/fr/forum/v ... 1002#p1002

La prochaine fois, pensez à bien choisir les termes du titre de votre question. N'oubliez pas qu'un titre clair et précis augmente vos chances d'obtenir des réponses plus rapidement.

Merci de votre collaboration pour nous aider à rendre optimale la qualité de ce forum.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Avatar de l’utilisateur
DUME06
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 05 oct. 2021 18:16

Re: [Base] Création d'un Formulaire Autonome

Message par DUME06 »

La bonne formulation pour ouvrir de multiple formulaires depuis un formulaire général et d'utiliser la commande thisDatabaseDocument seul, exemple

Code : Tout sélectionner Agrandir
Sub OuvirFormulaireTexte
thisDatabaseDocument.FormDocuments.getByName( "Texte" ).open
End Sub

Regarde ce fil viewtopic.php?f=26&t=48567 et les macros de 'Routine' ainsi que les propriétés du formulaire Menu.
Merci infiniment " Plonge " pour ton aide....
J'ai donc recréé mes Macros et çà marche super bien :super:
Ensuite j'ai dupliqué mon menu pour le rendre interactif (sans ouvrir la base) ...et la macro ne fonctionne plus ??? ci joint le message d'erreur !!!
CaptureXXXX.JPG
Merci par avance pour ta serviabilité et ton aide.
Bien amicalement
DUME06
LibreOffice 7.1, Windows 7 et LinuxMint 20.2
Avatar de l’utilisateur
tintin
GourOOu
GourOOu
Messages : 9340
Inscription : 18 juil. 2008 17:29
Localisation : F-Oise + F-Savoie

Re: [Base] Création d'un Formulaire Autonome

Message par tintin »

Bonjour,
[b][color=#404080]DUME06[/color][/b] a écrit :ci joint le message d'erreur
Plutôt qu'une copie écran, fournissez à la place un fichier complet dépersonnalisé et au format ODF permettant de reproduire ce que vous décrivez. Cela augmentera vos chances d'obtenir une réponse adaptée.
AOO 4.1.15 et LibO stable 7.6.5 / macOS Intel 13.6.5 Ventura
Adoptium-temurinJDK-jre_1.8.0_402 / Firefox/Safari/Thunderbird /Time Machine+cloneCCC
Tutoriels du forum pour macOS
Pour sauvegarder vos documents c'est ceinture ET bretelles
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 944
Inscription : 19 août 2018 07:20

Re: [Base] Création d'un Formulaire Autonome

Message par Dolev »

Bonjour,
DUME06 a écrit :et la macro ne fonctionne plus ??? ci joint le message d'erreur
Traduction de : The following Basic script could not be found
Le script Basic suivant ne peut être trouvé.

En clair, tu fais appel à une macro qui n'existe pas dans le document.
Open Office 4.1.15 sous Windows 11
Avatar de l’utilisateur
DUME06
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 05 oct. 2021 18:16

Re: [Base] Création d'un Formulaire Autonome

Message par DUME06 »

Bonsoir Tintin et Dolev
Je vous remercie infiniment pour votre célérité et votre aide.
Comme je vous le disais dans mon post précédent tout fonctionne parfaitement bien à partir de la base ouverte....
Dans mon exemple TEST , j’accède à une table VUE (qui m'a permis d'incorporer le calcul de l'age des contacts)..
J'ai pensé que l'erreur venait peut-être de là :tesfou:; j'ai donc refait un test avec la BASE d'origine => toujours la même erreur en formulaire autonome. :oops:
Comme l'a préconisé 'TINTIN' ; je vous joins mon fichier (BDEXEMPLE - Dumé.odt)
BDEXEMPLE - Dumé.odt
(58.32 Kio) Téléchargé 50 fois
En vous renouvelant tous mes remerciements pour votre compréhension et vos conseils. je vous souhaite une bonne soirée.
Bien amicalement
DUME06
LibreOffice 7.1, Windows 7 et LinuxMint 20.2
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 944
Inscription : 19 août 2018 07:20

Re: [Base] Création d'un Formulaire Autonome

Message par Dolev »

Re,

Je vais me répéter :
Dolev a écrit :En clair, tu fais appel à une macro qui n'existe pas dans le document.
Le document joint confirme ce fait :
Capture.PNG
Open Office 4.1.15 sous Windows 11
Avatar de l’utilisateur
DUME06
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 05 oct. 2021 18:16

Re: [Base] Création d'un Formulaire Autonome

Message par DUME06 »

Bonjour DOLEV
Merci pour ton rappel; j'avais bien lu, mais je n'ai pas compris pour quelle raison je retrouve bien les macros quand la base est ouverte et plus à partir du formulaire autonome ????
En fichiers joints tu trouveras :
1) Gestion des Macros interrogé à partir de la base ouverte .ODB
CaptureAAA.JPG
2) Gestion des Macros interrogé à partir du Formulaire .ODT
CaptureBBB.JPG
Que faut-il faire pour les voir apparaitre avec le Formulaire .ODT et sélectionner la macro pour le paramètrage :?: :?:
En te renouvelant tous mes remerciements pour ta serviabilité; je te souhaite une bonne journée
Bien amicalement
DUME06
LibreOffice 7.1, Windows 7 et LinuxMint 20.2
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 944
Inscription : 19 août 2018 07:20

Re: [Base] Création d'un Formulaire Autonome

Message par Dolev »

Re,
Il faut logiquement copier les macros présentes dans ton ODB et les coller dans ton ODT.
Tu as ce tutoriel à lire : https://forum.openoffice.org/fr/forum/v ... =8&t=40146
Open Office 4.1.15 sous Windows 11
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: [Base] Création d'un Formulaire Autonome

Message par jeanmi2403 »

Bonjour,
Dolev a écrit :Il faut logiquement copier les macros présentes dans ton ODB et les coller dans ton ODT.
Exact, mais ça ne suffira pas, puisque la base n'est pas ouverte, il y aura d'autres erreurs.
Il faudra se connecter à la base.
A lire, le chapitre 9 Macros du guide Base, page 78, qui décrit l'accès à une base depuis un formulaire externe.
Cordialement,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
DUME06
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 05 oct. 2021 18:16

Re: [Base] Création d'un Formulaire Autonome

Message par DUME06 »

Bonsoir à vous
J'ai bien consulté vos liens et essayé de comprendre quelques chose !!
Pour le importations de macros je n'ai trouvé comme explication que de Base.ODS à Base.ODS mais pas de ODS à ODT :?:
J'ai donc simplement recopié mes macros sur .ODT
CaptureAAA.JPG
et malheureusement çà ne fonctionne toujours pas à partir du formulaire autonome : :oops:
CaptureODT.JPG
Encore merci pour vos conseils et votre patience; mais je commence à fatiguer car les PB se cumulent et je ne compte plus les plantages de LIBO (gel) du PC.
Je vous souhaite une bonne soirée
Bien amicalement
DUME06
LibreOffice 7.1, Windows 7 et LinuxMint 20.2
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: [Base] Création d'un Formulaire Autonome

Message par jeanmi2403 »

Bonsoir,
Si vous pouvez nous donner votre base et le fichier avec le formulaire, on devrait pouvoir régler ce problème...
Bonne soirée,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
DUME06
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 05 oct. 2021 18:16

Re: [Base] Création d'un Formulaire Autonome

Message par DUME06 »


Message : par jeanmi2403 » 11 Oct 2021 20:50

Si vous pouvez nous donner votre base et le fichier avec le formulaire, on devrait pouvoir régler ce problème...
Bonjour Jeanmi2403
Tout d’abord ; merci pour votre célérité et votre bienveillance à mon égard.
Comme vous me le demandez , vous trouverez ci-joint: ma Base.ods et mon Formulaire Autonome.odt.
BDEXEMPLE - Dumé.odb
(294.63 Kio) Téléchargé 57 fois
BDEXEMPLE - Dumé.odt
(60.1 Kio) Téléchargé 53 fois
En vous renouvelant mes remerciements; je vous souhaite une très bonne journée.
Bien amicalement
DUME06
LibreOffice 7.1, Windows 7 et LinuxMint 20.2
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25143
Inscription : 03 mars 2006 08:45
Localisation : 127.0.0.1
Contact :

Re: [Base] Création d'un Formulaire Autonome

Message par Dude »

Salut,

Quel est l'intérêt d'avoir un formulaire à l'extérieur de la base ?
Puisque de toute façon, il te faudra ouvrir l'ODB pour y accéder.
Je ne vois aucun bénéfice si ce n'est complexifier la maintenance.

Si tu as besoin de lancer un menu général, il faut tout simplement ouvrir ce formulaire et masquer l'ODB.
C'est ce concept qui est expliqué dans le Wiki (lien fourni dans ta précédente question).
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: [Base] Création d'un Formulaire Autonome

Message par jeanmi2403 »

Bonsoir,
DUME06 a écrit :Pour le importations de macros je n'ai trouvé comme explication que de Base.ODS à Base.ODS mais pas de ODS à ODT :?:
Les macros sont architecturées de la même manière dans tous les modules, pourtant
J'ai donc simplement recopié mes macros sur .ODT
C'est le plus simple. C'est plus délicat quand il y a plusieurs modules et des boîtes de dialogue....
Pour ce qui est du dysfonctionnement,

Code : Tout sélectionner

ThisDatabaseDocument.FormDocuments.getbyname("EnregistrementContact").open
ne peut évidemment pas fonctionner puisque ThisDatabaseDocument n'existe pas car on est dans Writer !!
Il faut donc créer le contexte de base de données, puis accéder au document ODB qui contient le formulaire :

Code : Tout sélectionner

Sub OuvrirFormulaireEnregistrementContact
	stDir = "I:\TrvOpen\Projets\Dépannage-Forum\Bases\" ' Dossier de la base (chez moi)
	stDir = ConvertToUrl(stDir & "BDEXEMPLE-Dumé.odb") ' Nom de la base, j'ai retiré les espaces souvent sources de problèmes...
	oContexteBase = createUnoService("com.sun.star.sdb.DatabaseContext") ' Création du service
	oSourceDonneesCible = oContexteBase.getByName(stDir) 'objet base de données
	oSourceDonneesCible.DatabaseDocument.FormDocuments.getbyname("EnregistrementContact").open
End Sub
Et c'est donc oSourceDonneesCible.DatabaseDocument qui tient le rôle de ThisDatabaseDocument, mais pointant cette fois-ci sur la bonne base.
BDEXEMPLE-Dumé.odt
Le Fichier avec la bonne macro...
(59.78 Kio) Téléchargé 64 fois
Bonne journée,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
DUME06
NOOuvel adepte
NOOuvel adepte
Messages : 16
Inscription : 05 oct. 2021 18:16

Re: [Base] Création d'un Formulaire Autonome

Message par DUME06 »

Bonsoir Dude et Jeanmi
Merci à tous les deux pour votre compréhension et votre patience.
J'ai testé vos solutions :
Jeanmi > Dans mon exemple TEST , j’accède à une table VUE (qui m'a permis d'incorporer le calcul de l'age des contacts)..
Avec ta solution j’accède bien au bon formulaire; mais je ne peux plus ajouter ni modifier les contacts. Cela marche pourtant bien en utilisant les formulaires 'Menu' ou 'Enregistrement' dans la base.....
Dude > j'ai appliqué ta solution => çà fonctionne bien; Il ne reste bien affiché à l'écran que le formulaire MENU et la Base est bien masquée..
Par contre LIBO se ferme et il ne se relance plus à partir du raccourci => je dois le relancer à partir du gestionnaire de fichier en cliquant sur la Base..
Cela devient de plus en plus complexe pour moi et je crois que je vais suivre le très bon conseil de Dude => Ouvrir la base et puis simplement utiliser les formulaires..... Comme on dit en Corse "Chi vole troppu nulla ùn ha" (Qui en veut trop n'a rien)
Encore un grand Merci pour votre aide. Vous êtes vraiment Super et Bienveillants..je vous souhaite à tous les deux une bonne soirée.
Bien amicalement
DUME06
LibreOffice 7.1, Windows 7 et LinuxMint 20.2
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: [Base] Création d'un Formulaire Autonome

Message par jeanmi2403 »

Bonsoir,
DUME06 a écrit :Avec ta solution j’accède bien au bon formulaire; mais je ne peux plus ajouter ni modifier les contacts.
Il doit y avoir une autre raison.
Ton formulaire est incomplet, il manque la barre de navigation, qui pourrait permettre cette action.
Mais Il doit falloir reconnecter le formulaire à la base.
Bonne soirée,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 10:02
Localisation : Val de Marne

Re: [Base] [Résolu]Création d'un Formulaire Autonome

Message par jeanmi2403 »

Bonsoir,
Par curiosité, j'ai poussé un peu plus loin mes investigations, en regardant avec Xray les propriétés du formulaire.
Formulaire a un double sens, car il désigne à la fois le document Writer et le formulaire qu'il contient (ou les sous formulaires).
J'ai donc tenté d'accéder au formulaire principal (MainForm) dont on trouve le nom avec le navigateur de formulaires.
On le trouve comme ceci (avec une macro dans la base):

Code : Tout sélectionner

oFormDoc = ThisDatabaseDocument.FormDocuments.getbyname("EnregistrementContact") ' le document Writer
oForm = oFormDoc.getComponent.DrawPage.forms.getbyname("MainForm")
' le formulaire "réel"
On y voit que le formulaire a sa source de données dans la table "Contacts", mais aussi qu'il y a une propriété "ActiveCommand"
qui contient la commande SQL "SELECT * FROM "Contacts"".
Lorsqu’on regarde la même chose quand le formulaire est utilisé depuis l'extérieur de Base :

Code : Tout sélectionner

   oFormDoc = oSourceDonneesCible.DatabaseDocument.FormDocuments.getbyname("EnregistrementContact")
   oForm = oFormDoc.getComponent.DrawPage.forms.getbyname("MainForm")
La source de données est toujours la table "Contacts" mais la propriété AciveCommand est vide. Et comme elle est en lecture seule....perdu.

Conclusion : Base remplit cette commande à notre insu !
On peut donc accéder à toutes les données, tables, vues, requêtes depuis une macro externe (déjà expérimenté), mais pas à travers un formulaire piloté de l'extérieur.
Bonne soirée,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Verrouillé