Ouvrir un formulaire en utilisant les donnés d'un autre

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 !
Canardo
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 20 avr. 2006 13:17

Ouvrir un formulaire en utilisant les donnés d'un autre

Message par Canardo »

Bonjour,
Voici ce dont je dispose actuellement :
2 formulaires
Le 1er (nommé "personnes" contient un nom, un prénom, ... ainsi qu'un bouton "visites".
Quand je clic sur ce boutton, cela ouvre the second formulaire.
Le second formulaire (nommé "visites") contient a nom (lecture seule) ainsi qu'un sous formulaire, liste de dates (visites).

Je cherche à faire la chose suivante :
Si le 1er formulaire est positionné sur monsieur Robert, je voudrais qu'un clic sur le bouton "Visites" ouvre le second formulaire, et que celui-ci soit automatiquement positionné sur les visites de monsieur Robert.

Quelqu'un a il une idée de comment faire cela ?
Si oui, je lui serait infiniment reconnaissant de m'en parler !
OOo 2.0.2 sous WinXP SP2 (+ JRE 1.5.0)
poukram
Membre OOrganisé
Membre OOrganisé
Messages : 93
Inscription : 03 avr. 2006 15:50

Message par poukram »

Tes formulaires se trouvent ou ?
Ce sont des fichiers Texte a part ou bien ils appartiennent a ton fichier Base ?

Le code de la macro change en fonction ...

L'idée c'est d'ouvrir le document que tu veux pas macro et de lui appliquer un filtre qui contient la valeur 'M. Robert' en gros.
Libre a toi ensuite d'ajouter un morceau de code pr la fermeture du premier formulaire par exemple.
OOo 2.0.2 sous windows XP
Canardo
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 20 avr. 2006 13:17

Message par Canardo »

Pour l'instant, mes formulaires sont inclus dans le .odt, mais à terme, je pense les en extraire.
Je ne souhaite pas fermer le formualaire "personne", le second serait l'équivalent d'un popup.
Ta solution exploitant un filtre me semble parfaite, tu pourrais me donner des indication de code pour ces macros ?
OOo 2.0.2 sous WinXP SP2 (+ JRE 1.5.0)
poukram
Membre OOrganisé
Membre OOrganisé
Messages : 93
Inscription : 03 avr. 2006 15:50

Message par poukram »

je te conseil de les extrairent dès maintenant alors.

La macro d'ouverture n'étant pas tout a fait la meme ca va t'éviter de te retrouver avec un truc que tu pense terminer a reprendre dans le détail :S

http://user.services.openoffice.org/fr/ ... asc-0.html

tu as de bonnes explications ici mais faut prendre le temps de tester et de réadapter le code.
Changer ce qui doit l'être en fonction de ton programme ou non.

L'idée maitresse c'est ca :

Code : Tout sélectionner

unForm.setPropertyValue("Filter", monFiltre)
unForm.setPropertyValue("ApplyFilter", True) 
change le code autour en fonction de tes besoins
++
OOo 2.0.2 sous windows XP
Canardo
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 20 avr. 2006 13:17

Message par Canardo »

génial, merci beaucoup.
En passant : tu connais qqs site, références, pour les macro associées aux formulaires ? J'ai pas trouvé grand chose de convaincant, et la doc officielle des macros d'OO m'a l'air d'être un joyeux boxon !
OOo 2.0.2 sous WinXP SP2 (+ JRE 1.5.0)
poukram
Membre OOrganisé
Membre OOrganisé
Messages : 93
Inscription : 03 avr. 2006 15:50

Message par poukram »

J'ai trouvé le plus d'infos dans ce forum.
En fouillant tout les topics :S c'est un peu long mais quand tu cherche vraiment une infos. Perso je débute donc il est évident que les questions que je me pose d'autres les ont surement déja posés ..

sinon tu as le site sun :
http://docs.sun.com/app/docs/doc/819-1328?l=fr
qui est pas mal, même si un peu court a mon gout ..

Les HowTo du site officiel :
http://fr.openoffice.org/Documentation/Index.html

Et les HowTo de ce forum.

Pour débuter, 'passer d'access a OOo' ou qqch ds ce gout est pas mal du tout.

le HowTo Andrew Pitonyak est carrement bien aussi par contre pas très aisé a comprendre quand on débute.

Un conseil, quand tu utilise Base ou les formulaires et qu'une chose te semble possible mais que tu ne sais pas comment, ne considère pas comme acquit le fait que Base est capable de le faire.
Cherche de suite ici ou ailleurs si Base est réellement capable de le faire (avec macro par exple) ca t'évitera de devoir changer tes plans et de bousculer ton planning continuellement.
OOo 2.0.2 sous windows XP
Canardo
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 20 avr. 2006 13:17

Message par Canardo »

En tout cas, la doc de l'API est un bordel innommable, assez décourageant. ça change de la doc Java (Sun aussi, pourtant).
OOo 2.0.2 sous WinXP SP2 (+ JRE 1.5.0)
antoskin
Membre OOrganisé
Membre OOrganisé
Messages : 93
Inscription : 18 avr. 2006 10:13

Message par antoskin »

Tu as aussi le livre "Programmation OpenOffice.org 2 Macros et API" de B. Marcelly et L. Godard qui est un peu la "bible" sur les macros!
Windows XP SP 2, OOo 2.0.2
Canardo
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 20 avr. 2006 13:17

Message par Canardo »

Bon, les choses avancent (doucement, mais surement).
J'ai pour l'instant le code suivant :

Code : Tout sélectionner

Function OuvreVisites() as variant

Dim aProp(1) As New com.sun.star.beans.PropertyValue
Dim sVisitesUrl As String, nSheetsUsed As Long
Dim visitesForm As Object

aProp(0).Name = "ActiveConnection"
aProp(0).Value = thisComponent.Drawpage.Forms(0).ActiveConnection
aProp(1).Name = "OpenMode"
aProp(1).Value = "open"

sVisitesUrl = ConvertToURL (CurDir & getPathSeparator() & "fiche-visites.odt")
visitesForm = starDesktop.loadComponentFromURL(sVisitesUrl, "visites", 0, aProp())

end function
Qui me permet d'ouvrir ma fiche "visites".
Il me reste à trouver comment lui passer l'identifiant d'une personne, et à y appliquer le filtre en découlant. L'idéal serait que je n'ai pas à écrire d'autre macro, et que tout puisse se passer dans celle-ci.
OOo 2.0.2 sous WinXP SP2 (+ JRE 1.5.0)
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Ce genre de question devrait être sur le forum "Macros et API"...

La question du passage de la valeur de filtre y a été posée et la réponse donnée !

http://user.services.openoffice.org/fr/ ... c1048.html

cris59
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Canardo
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 20 avr. 2006 13:17

Message par Canardo »

La question concerne des macros assez spécifiques à Base. Du coup la place de la question est discutable. En revanche, j'avoue n'avoir pas pensé à rechercher dans le forum Macros et API. Toutes mes excuses.
OOo 2.0.2 sous WinXP SP2 (+ JRE 1.5.0)
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Pas grave, mais toutes les questions sur les macros concernent aussi une application particulière, et il est plus simple de les regrouper dans ce forum...

Le passage de la valeur de filtre s'applique aussi bien pour les formulaires inclus dans Base que pour les formulaires externes (Writer ou Calc)

cris59
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Canardo
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 20 avr. 2006 13:17

Message par Canardo »

La solution avec les filtres est fonctionnelle, mais induit un inconvénient : elle interdit de fait un parcours linéaire des autres enregistrements que celui visé au départ.
Personne ne voit d'autre possibilité de résoudre mon problème ?
L'idée, ce serait d'utiliser plutôt ce qui, dans l'interface, est appelé "Recherche d'un enregistrement", plutôt que la fonction de filtres ...
OOo 2.0.2 sous WinXP SP2 (+ JRE 1.5.0)
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Là je ne comprends pas, si tu veux connaître les visites de Mr Robert quelle utilité d'aller voir celles de Mr Jule...

cris59
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/
Canardo
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 20 avr. 2006 13:17

Message par Canardo »

ça permet une autre forme de navigation dans les données. Il serait interressant que je permette de parcourir les différentes "fiches visites", pour balayer rapidement les visites de tout les inscrits.
J'ai fait un bouton "débloquer le parcours" dans la fiche fiche visite.
Celui ci se contente d'enlever le filtre.
Mais ceci à deux inconvénients :
- ergonome plus que moyenne, car un clic supplémentaire est obligatoire, et le fonctionement n'est pas très intruitif
- pour appliquer le nouveau filtre, je dois recharger le formulaire. l'enregistrement affiché n'est donc plus celui qui était sépectionné avant. L'utilisateur risque d'être perdu.
Il doit bien être possible d'utiliser cette fonction de recherche via les macros !
OOo 2.0.2 sous WinXP SP2 (+ JRE 1.5.0)
Avatar de l’utilisateur
cris59
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 482
Inscription : 20 mars 2006 15:15
Localisation : Paris

Message par cris59 »

Dans ce cas tu ne mets pas de filtre et,

tu utilises la méthode moveToBookmark pour te déplacer,

et RowCount te donne le nombre total d'enregistrements.

Mais ce n'est pas en relation avec ta question originale...

cris59
WinXP PRO SP2 avec OOo2.2 & Vista avec OOo2.3.1
& Debian avec OOo2.2

http://www.cpserv.net/