Initiation laborieuse à Base - Le retour

Bonjour à tous,

Me revoilà avec ma "petite base" (initiation en Noël et Nouvel an ...)

Je souhaiterais associer l'ouverture du formulaire nommé "Principal" à l'ouverture de la base via outils / personnaliser / événements

La ligne ci dessous me ramène une erreur

ThisDatabaseDocument.FormDocuments.getByName( "Principal" ).open

Un grand merci pour votre aide

Bonjour,

Je souhaiterais associer l'ouverture du formulaire nommé "Principal" à
l'ouverture de la base via outils / personnaliser / événements

1. La macro

(récupérée je ne sais plus trop où)

Sub Demarrage(evt As Object)

Dim oConnexion AS Object
Dim props(0) As New com.sun.star.beans.PropertyValue

ThisDatabaseDocument.CurrentController.connect("","")
oConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
ThisComponent.FormDocuments.loadComponentFromURL("Principal","", 0, props())
End Sub

2. Il faut associer cette macro à l’évènement « ouverture de la base »

Outils / Personnaliser, onglet Évènements, ligne Ouvrir un document. Cliquer Macro et naviguer jusqu’à la macro à exécuter.

3. Vérifier que l'exécution des macros est autorisée

menu Outils / Options, branche OpenOffice.org / Sécurité, bouton Sécurité des macros. Là, passer de Niveau de sécurité élevée (valeur par défaut) à Niveau de sécurité moyen

Bonne année 2012 !

Un grand merci Jean Francois, cela fonctionne.

Très bonne année 2012 !!!

-------- Message original --------
Sujet : Re: [fr-users] Initiation laborieuse à Base - Le retour
Pour : users@fr.libreoffice.org

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transational//EN">

Bonjour, J'ai aussi pas mal galéré pour pouvoir ouvrir automatiquement un formulaire à l'ouverture d'une base. J'utilise la méthode suivante (LibreOffice 3.4.4, Mac OS 10.6) : Dans Outils / personnaliser / Evénement : macro Demarrage sur l'événement Ouvrir le document. Macro Demarrage : Sub Demarrage( )     Dim ObjTypeWhat     Dim ObjName As String Rem ouverture du formulaire principal        ObjTypeWhat = com.sun.star.sdb.application.DatabaseObject.FORM     ObjName = "Form-GestionVdi" 'The name of the form you want to open at Base start-up, this needs to exist.     If ThisDatabaseDocument.FormDocuments.hasbyname(ObjName) Then 'Check the form exists             ThisDataBaseDocument.CurrentController.Connect() 'If the form exists connect to the database             ThisDatabaseDocument.CurrentController.loadComponent(ObjTypeWhat, ObjName, FALSE) 'Open the form         Else             MsgBox "This is embarrassing, sorry, can't find the requested form to open!"+chr(10)+"Form Name = " & ObjName + chr(10)+"Check the details." , 48, "DS4A SBM encountered a problem!"     End if End Sub
---- Message d'origine ----

Bonjour

ac2s-software wrote

J'utilise la méthode suivante...

Quelques remarques en complément...

Le test prévu par ac2s-software dans sa procédure est utile, qui vérifie
l'existence du formulaire avant de tenter de l'ouvrir.

Sinon, la procédure la plus courte serait quelque chose comme :

Sub PysOpen
ThisDatabaseDocument.CurrentController.connect("","")
PysForm = ThisDatabaseDocument.FormDocuments.getByName("F_Client").open
End Sub

Je voulais surtout insister sur le fait que la méthode .open permet de
renvoyer l'objet formulaire (dans la variable PysForm pour cet exemple).

Cette technique permet de manipuler (masquer, afficher, etc.) ensuite le
formulaire par programme via la variable qui le "représente", durant la
durée de vie de cette dernière (la variable peut être globale).

Appliquée à la méthode loadComponent cela donnerait par exemple :

sub PysOpen1

dim PysConn as object
dim PysProp(0) As New com.sun.star.beans.PropertyValue

PysConn = ThisDatabaseDocument.DataSource.getConnection("","")

PysProp(0).Name = "ActiveConnection"
PysProp(0).Value = PysConn

PysForm =
ThisDatabaseDocument.FormDocuments.loadComponentFromURL("F_Client",
"_blank", 0, PysProp())

end sub

Cordialement
Pierre-Yves