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

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] Rapport ouvert avec une liste de formulaire

Messagepar mimi6505 » 27 Avr 2012 12:40

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   AgrandirRéduire
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   AgrandirRéduire
.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
Pièces jointes
CANDIDATURES.odb
(466.86 Kio) Téléchargé 92 fois
Dernière édition par mimi6505 le 30 Avr 2012 09:31, édité 2 fois.
Apache OpenOffice 3.4 sur Windows XP Professionnel
mimi6505
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 52
Inscrit le : 18 Avr 2012 08:00

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

Messagepar JPL » 27 Avr 2012 13:17

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   AgrandirRéduire
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.
Windows 7 / OOo 4.0 / LibO 4.1
Ubuntu 13.10 / LibO 4.1
JPL
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 20
Inscrit le : 17 Mars 2012 11:16

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

Messagepar Piaf » 27 Avr 2012 13:56

Bonjour

teste cette macro sur le bouton de TestFormulaireDeRecherche
Code : Tout sélectionner   AgrandirRéduire
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+
Libre Office Version: 6.1.5 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5544
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

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

Messagepar mimi6505 » 27 Avr 2012 15:07

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   AgrandirRéduire
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
Apache OpenOffice 3.4 sur Windows XP Professionnel
mimi6505
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 52
Inscrit le : 18 Avr 2012 08:00

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

Messagepar Dude » 27 Avr 2012 16:19

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 : viewtopic.php?f=8&t=2836&hilit=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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20478
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar JPL » 27 Avr 2012 16:50

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.
Windows 7 / OOo 4.0 / LibO 4.1
Ubuntu 13.10 / LibO 4.1
JPL
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 20
Inscrit le : 17 Mars 2012 11:16

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

Messagepar Piaf » 27 Avr 2012 18:31

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   AgrandirRéduire
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+
Libre Office Version: 6.1.5 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5544
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

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

Messagepar mimi6505 » 30 Avr 2012 09:31

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:
Apache OpenOffice 3.4 sur Windows XP Professionnel
mimi6505
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 52
Inscrit le : 18 Avr 2012 08:00


Retour vers Macros et API

Qui est en ligne ?

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