[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 !

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

Messagepar DUME06 » 10 Oct 2021 07:29

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 édition par micmac le 13 Oct 2021 20:36, édité 3 fois.
Raison: La balisa [Résolu] doit être placée AVANT la balise [Base]
LibreOffice 7.1, Windows 7 et LinuxMint 20.2
Avatar de l’utilisateur
DUME06
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 10
Inscrit le : 05 Oct 2021 17:16

Re: Formulaire: création de Macros

Messagepar plonge » 10 Oct 2021 08:12

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   AgrandirRéduire
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.
Cordialement
plonge

La modération vous a écrit: Code mis entre balises [code] pour faciliter la lecture

LO version 7062 sous windows 10 standard, java 1.8.0_291
plonge
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 281
Inscrit le : 09 Sep 2010 20:06

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

Messagepar micmac » 10 Oct 2021 09:02

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 : viewtopic.php?p=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.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 7668
Inscrit le : 28 Août 2010 09:45

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

Messagepar DUME06 » 10 Oct 2021 10:17

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
DUME06
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 10
Inscrit le : 05 Oct 2021 17:16

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

Messagepar tintin » 10 Oct 2021 10:22

Bonjour,
DUME06 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.11 et LibO stable 7.1.6 / macOS 11.6 Big Sur.
OpenJDK_temurin_1.8.0_302 / Firefox / Safari / Thunderbird / Time Machine
Pour la sauvegarde de vos documents c'est ceinture ET bretelles
Avatar de l’utilisateur
tintin
GourOOu
GourOOu
 
Message(s) : 7618
Inscrit le : 18 Juil 2008 16:29
Localisation : F-Oise + F-Savoie

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

Messagepar Dolev » 10 Oct 2021 10:41

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.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 362
Inscrit le : 19 Août 2018 06:20

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

Messagepar DUME06 » 10 Oct 2021 18:18

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é 10 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
DUME06
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 10
Inscrit le : 05 Oct 2021 17:16

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

Messagepar Dolev » 10 Oct 2021 20:00

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.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 362
Inscrit le : 19 Août 2018 06:20

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

Messagepar DUME06 » 11 Oct 2021 05:45

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
DUME06
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 10
Inscrit le : 05 Oct 2021 17:16

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

Messagepar Dolev » 11 Oct 2021 11:47

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/viewtopic.php?f=8&t=40146
Open Office 4.1.11 sous Windows 10 pro
Avatar de l’utilisateur
Dolev
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 362
Inscrit le : 19 Août 2018 06:20

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

Messagepar jeanmi2403 » 11 Oct 2021 15:07

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.1.6 et AoO 4.1.10 sur Windows 10 x64 & Ubuntu 20.04
LibO 7.2.1 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmi2403
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 938
Inscrit le : 18 Jan 2008 10:02
Localisation : Val de Marne

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

Messagepar DUME06 » 11 Oct 2021 18:51

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
DUME06
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 10
Inscrit le : 05 Oct 2021 17:16

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

Messagepar jeanmi2403 » 11 Oct 2021 20:50

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.1.6 et AoO 4.1.10 sur Windows 10 x64 & Ubuntu 20.04
LibO 7.2.1 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmi2403
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 938
Inscrit le : 18 Jan 2008 10:02
Localisation : Val de Marne

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

Messagepar DUME06 » 12 Oct 2021 08:27


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é 9 fois

BDEXEMPLE - Dumé.odt
(60.1 Kio) Téléchargé 8 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
DUME06
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 10
Inscrit le : 05 Oct 2021 17:16

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

Messagepar Dude » 12 Oct 2021 08:31

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
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 22768
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar jeanmi2403 » 12 Oct 2021 15:55

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   AgrandirRéduire
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   AgrandirRéduire
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é 11 fois

Bonne journée,
Jean-Michel
LibO 7.1.6 et AoO 4.1.10 sur Windows 10 x64 & Ubuntu 20.04
LibO 7.2.1 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmi2403
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 938
Inscrit le : 18 Jan 2008 10:02
Localisation : Val de Marne

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

Messagepar DUME06 » 12 Oct 2021 18:10

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
DUME06
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 10
Inscrit le : 05 Oct 2021 17:16

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

Messagepar jeanmi2403 » 12 Oct 2021 18:46

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.1.6 et AoO 4.1.10 sur Windows 10 x64 & Ubuntu 20.04
LibO 7.2.1 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmi2403
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 938
Inscrit le : 18 Jan 2008 10:02
Localisation : Val de Marne

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

Messagepar jeanmi2403 » 13 Oct 2021 18:22

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   AgrandirRéduire
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   AgrandirRéduire
   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.1.6 et AoO 4.1.10 sur Windows 10 x64 & Ubuntu 20.04
LibO 7.2.1 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmi2403
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 938
Inscrit le : 18 Jan 2008 10:02
Localisation : Val de Marne


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)