Page 1 sur 1

[Résolu][Base] Rapport ouvert avec une liste de formulaire

Publié : 27 avr. 2012 11:40
par mimi6505
Bonjour,

Travaillant sur ma base, je souhaiterais ouvrir un rapport « ListingFonction » à partir d'une liste déroulante sur mon formulaire « Menu_General ».

Malheureusement, je bute sur une « Erreur d'exécution Basic : Type : com.un.star.conbtainer NoSuchElementExcept » sur cette ligne :

Code : Tout sélectionner

ctrlListeChoix = oForm.getByName("ListeRap")
J'ai beau tout vérifier, le nom de ma liste déroulante est bon.

Ce que je ne comprends pas :marto: , c'est qu'en créant un formulaire test « TestFormulaireDeRecherche » avec uniquement une zone de liste et un bouton, toujours pour ouvrir le même rapport, la procédure passe cette ligne mais bute sur une autre « Erreur d'exécution Basic : Propriété ou méthode non-trouvée : reports» et elle s'arrête sur cette ligne :

Code : Tout sélectionner

.Filter="""Option"" ='" & ChoixOption & "'"
Sur cette ligne je ne suis pas certain de ma méthode. :oops:

Désolé si je piétine, mais j'avance tout doucement dans l'évolution des macros.

Je vous laisse ma base ci-dessous.

Pourriez-vous me dire où se situe mon problème ?

D'avance, merci. :super:

mimi6505

Openoffice.org 3.2.1
Windows XP Professionnel

Re: [Base] Ouvrir un rapport avec un liste dans un formulair

Publié : 27 avr. 2012 12:17
par JPL
Bonjour,

pour progresser plus rapidement dans l'écriture de macros, je vous invite à découvrir l'extension Access2Base.

Après installation, il vous suffira d'écrire l'instruction

Code : Tout sélectionner

OpenReport("nom-du-rapport")
pour obtenir l'ouverture du rapport désigné. Il est même superflu de respecter la casse.

La documentation de cette instruction est ici, accompagnée de beaucoup d'autres.

En espérant que ceci pourra vous aider.

Re: [Base] Rapport ouvert avec une liste de formulaire

Publié : 27 avr. 2012 12:56
par Piaf
Bonjour

teste cette macro sur le bouton de TestFormulaireDeRecherche

Code : Tout sélectionner

Sub Rapport(oEv as Object)
Dim oForm as Object, ctrlListeChoix as Object, maConnexion as Object, oRapport as Object
Dim ChoixOption as string, strSQl as String
 	oForm = oEv.Source.Model.Parent	
	ctrlListeChoix = oForm.getByName("ListeRap")
	If ctrlListechoix.currentvalue<>"" then	
		ChoixOption = ctrlListeChoix.currentvalue
	Else
		MsgBox("Vous devez sélectionner une entrée dans la liste",64)
		Exit sub
	End If
       strSQL = "SELECT ""Postulant"".*, ""Options"".""Option"", ""TableTitre"".""Titre"", ""Options"".""ID"", ""TableTitre"".""IdTitre"", ""PostulantsOptions"".""ID_Postulant"" FROM ""PostulantsOptions"", ""Postulant"", ""Options"", ""TableTitre"" WHERE ""PostulantsOptions"".""ID_Postulant"" = ""Postulant"".""ID"" AND ""PostulantsOptions"".""ID_Option"" = ""Options"".""ID"" AND ""PostulantsOptions"".""ID_titres"" = ""TableTitre"".""IdTitre"" AND ""Options"".""Option"" ='" &  ChoixOption &"'"'
       maConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
       maConnexion.queries.getByName("RequêtePourRapport").Command = strSQL
       oRapport = ThisDataBaseDocument.ReportDocuments.getByName("ListingFonction").open()
    End Sub
Un peu de mal à tester, je n'ai pas Windows et tu fais appel à une dll dans ton code.

Pour JPL : Base a ces propres spécificités, et je ne suis pas certain que vouloir en faire un clone d'Access aide à les comprendre.
A+

Re: [Base] Rapport ouvert avec une liste de formulaire

Publié : 27 avr. 2012 14:07
par mimi6505
Re-bonjour,

Merci à JPL car je sais que cela vient d'une bonne intention. :super:

A Piaf, merci, ce code fonctionne très bien sur le bouton du formulaire de test, MAIS, j'ai essayé de le placer sur le bouton du formulaire "Menu_General", malheureusement, il bute toujours sur la même ligne, à savoir :

Code : Tout sélectionner

ctrlListeChoix = oForm.getByName("ListeRap")
Je n'en vois pas la raison, alors qu'à part le nom et la mise en page du formulaire, les 2 zones de liste sont identiques.

Mais ton code fonctionne très bien.

Merci

Re: [Base] Rapport ouvert avec une liste de formulaire

Publié : 27 avr. 2012 15:19
par Dude
Salut,
Piaf a écrit :Un peu de mal à tester, je n'ai pas Windows et tu fais appel à une dll dans ton code.
+1 Ton fichier est inexploitable en l'état sur plateforme Linux ou MacOS.

Si tu as à maximiser une fenêtre, tu poses du code Basic : http://user.services.openoffice.org/fr/ ... =maximiser
mimi6505 a écrit :Je n'en vois pas la raison, alors qu'à part le nom et la mise en page du formulaire
Regarde le navigateur de formulaire, ListeRap est dans un formulaire nommé "Formulaire" et non dans "MenuGeneral".
Tu devrais utiliser XRay pour voir où tu te trouves et appeler les bonnes méthode et propriété de tes objets.

Re: [Base] Rapport ouvert avec une liste de formulaire

Publié : 27 avr. 2012 15:50
par JPL
A propos de:
Dude a écrit:
Ton fichier est inexploitable en l'état sur plateforme Linux ou MacOS.
Si tu as à maximiser une fenêtre, tu poses du code Basic : viewtopic.php?f=8&t=2836&hilit=maximiser
depuis OpenOffice 3.3 les objects de type com.sun.star.comp.framework.Frame.ContainerWindow ont les propriétés IsMaximized et IsMinimized qui, quand mises à la valeur TRUE, resp. maximisent et minimisent la fenêtre correspondante.
En outre ceci fonctionne également sous Windows + OO et sous Linux avec LibreOffice. Je n'ai pas essayé avec MacOS.

Cordialement.

Re: [Base] Rapport ouvert avec une liste de formulaire

Publié : 27 avr. 2012 17:31
par Piaf
Bonsoir
Dude a écrit :Ton fichier est inexploitable en l'état sur plateforme Linux ou MacOS.
il faut donc se donner la peine d'aller voir le fichier en question, dans lequel on peut voir

Code : Tout sélectionner

Declare Function ShowWindow Lib "user32" _
    (ByVal lHwnd As Long, _
    ByVal lCmdShow As Long) As Boolean
je ne pense pas que la librairie user32 soit implémentée dans Linux (et j'ose espérérer qu'elle ne le sera jamais) ni dans MacOS
A+

Re: [Base] Rapport ouvert avec une liste de formulaire

Publié : 30 avr. 2012 08:31
par mimi6505
Bonjour,

Merci à vous trois, je vais prendre les conseils de chacun et essayer d'évoluer en fonction de ceux-ci. :P

Bonne journée.

mimi6505 :super: