IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDK Discussion :

[VBA]Business Objects et PHP


Sujet :

SDK

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut [VBA]Business Objects et PHP
    Bonjour,

    Je suis stagiaire dans une boite et on m'a demandé de créer des requêtes avec BO. On m'a ensuite demandé de créer une page en PHP permettant d'avoir accès au rapport produit par BO en lançant les requêtes (en cliquant sur un bouton de la page par exemple), même par une personne n'ayant pas BO installé sur son PC, et par la suite de les enregistrer au format excel ou powerpoint, ou encore avoir la possibilité de modifier les requêtes créées.
    Est-ce possible et si oui comment si prendre ?
    J'ai entendu parler de Crystal Reports, est-ce utile pour mon problème ? A quoi sert-il ?

    Merci et à bientôt.
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    C'est n'importe quoi ce qu'ils te demandent. Soit on utilise BO, soit on fait son propre sytème de reporting...

    Bon heureusement il existe des solutions "bricolées" qui te permettront de faire ça quand même.

    Déjà, quelle version de BO ?

    Ensuite il existe Webi (et infoview, le portail de documents) pour ouvrir, rafraichir et enregistrer des requêtes via le web. C'est un produit développé par BusinessObjects qui permet de se passer du client lourd (enfin presque mais ça devrait suffire).

    Si les rapports ne doivent pas être générés en temps réels, tu peux aussi faire tourner un BCA (automate de BO) ou une macro VBA qui génère les rapports la nuit et en fait des fichiers Excel. Derrière tu peux rendre ces fichiers excel disponibles au téléchargement, ou en faire du .txt, du .html, etc.

    Pour les conversions de format, l'idéal serait même de sortir tes données en .xml puis de faire des conversions à la volée avec du xsl (conversion en html, txt, pdf, rtf) mais pour générer du xml il te faudra forcément passer par une moulinette en VBA.

    Sinon il y a ce post qui peut t'intéresser : http://www.developpez.net/forums/sho...d.php?t=235797
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    merci pour tes réponses.

    J'en ai parlé avec des collègues au bureau et ils sont d'accord avec toi : c'est n'importe quoi ce qu'il me demande.
    Sinon pour te répondre j'ai BO version 6.5.1.
    Je vais essayer de jeter un oeil sur Webi et BCA mais si c'est aussi facile à trouver des explications sur le net que BO c'est pas gagner...
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  4. #4
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Ben demande ici au pire

    Bon si tu poses bien à plat ce qu'on te demande exactement et ton niveau de connaissance du système (BDD, BO, VBA, PHP, etc.) on devrait pouvoir te sortir une solution aux petits oignons.

    Par contre, et ça il FAUT que tes clients en soient conscients, ça sera TOUJOURS une forme plus ou moins aboutie de bricolage, et ils le paieront en terme de maintenance et d'évolutivité.
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    ok merci de bien vouloir me filer un coup de main...
    Alors pour commencer cela fait 1 mois que je crée des requêtes (stats sur les taux de service de la boite par exemple) avec BO sur différentes tables de la BDD de la boite ou je travaille (JDBC = oracle thin).
    Mais mes supérieurs hiérarchiques ne veulent pas avoir à installer ni à ouvrir BO pour les consulter : ils veulent que j'intègre une partie, en php par exemple, sur un site déjà créé par quelqu'un de la boite qui contiendrai l'ensemble de mes requêtes et n'avoir qu'à cliquer sur un bouton pour afficher les résultats raffraichies (sans avoir à se logger eux-mêmes sous BO). Je tiens à préciser que certaines de mes requêtes nécessites de rentrer des paramètres.
    Voilà...
    En ce qui concerne mes connaissances, je connais BO depuis 1 mois de façon autodidacte. J'ai des connaissances en SQL (les requêtes que je crée sous BO ne sont que des select), en C/C++, JAVA. Par contre je ne connais rien a PHP et VBA (je suis en contrat de professionnalistaion et je devrai étudier le PHP d'ici peu...).
    J'espère avoir été assez clair.
    A part ça j'ai regardé BOBatchConverter qui est assez intéressant mais ne permet pas de rentrer des paramètres pour les requêtes (il se contente de rafraichir les données précédentes) et je suis obligé de démarrer BO "à la main" pour qu'il fonctionne. Sinon je suis en train de regarder Webi de plus près mais est-il gratuit ?
    Mes collègues me conseille cependant de trouver une alternative (créer les requêtes en C??) car ils pensent que ça va être une vraie usine à gaz et que le serveur risque de planter à chaque fois qu'on lancera des stats, ce qui n'est pas faux...
    En tout cas merci à ceux qui vont essayer de se pencher sur mon pb et je vous tient au courant de mon évolution.
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  6. #6
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Alors... euh... comment dire ça poliment... tes boss sont un peu à côté de la plaque. J'adore les gens qui chopent des petits jeunes et qui leur demande de faire des trucs impossibles parce que ça les fait chier que l'éditeur du logiciel leur dise que c'est impossible...

    Si n'importe qui peut venir rafraichir n'importe quelle requête sans se logger ça sert à quoi l'identification ? Et la confidentialité ?

    Parti comme c'est parti, je ne suis pas sûr qu'il ne vaille mieux pas récupérer les requêtes générées par BO et les mettre en dur dans une page PHP et ensuite t'occuper de l'affichage des résultats toi même.

    Alors dans tous les cas, je pense qu'il est difficile d'intégrer le rafraichissement de rapports BO de manière native dans un intranet. MAIS pour ne pas dire de bêtises, et si ta boîte paye bien ses liences BO, n'hésite pas à téléphoner au support BO pour t'assurer qu'il n'existe pas une solution toute prête pour ça.

    S'ils te disent que non, tu as toujours des solutions mais qui feront obligatoirement appel à 2 ou 3 technologies, ce qui multiplie par autant les risques de bug.

    Exemple :
    l'utilisateur sur son site web clique sur "Rafraichir et afficher" du rapport nommé A :
    -> ton serveur d'appli fait appel à une fonction en VBA et lui passe "A"
    --> la fonction en VBA ouvre le document "A.rep" , le rafraichit et le sauvegarde sous "A.pdf", "A.txt" et "A.xls"
    --> la fonction en VBA renvoie "ok"
    -> le serveur d'appli envoie une page (générée dynamiquement) proposant le téléchargement de "A.pdf", "A.txt" et "A.xls".

    Je suis d'accord, c'est une usine à gaz, mais si quelqu'un connaît une meilleure manière de commander BO à partir du web en 6.5.1 ...
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 74
    Points : 70
    Points
    70
    Par défaut
    Salut,
    Je suis le développeur de BoBatchConverter.
    J'ai lu que tu dois "démarrer BO à la main pour qu'il fonctionne". Peux tu m'en dire plus sur ce phénomène.
    Normalement, tu n'as pas à le faire : lancer bobatchconverter.exe te lance l'instance de BO automatiquement ! Il est actuellement utilisé pour le refresh d'une centaine de reports en conjonction avec un outil de schedling (at) et il a un comportement idéal.
    Mais dis m'en plus afin que je vois ce que je peux faire, bien entendu.
    Et puis, le refresh avec paramètres sera bientot codé !! J'ai juste un peu de taffe par ailleurs en ce moment !

    Vincent Teyssier
    vteyssier@decisionsystems-studio.fr
    www.open-bi.blogspot.com

  8. #8
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Salut Vincent,
    désolé de répondre seulement 1 semaine après mais j'étais en formation.
    Pour que BOBatchConverter marche, je dois ouvrir BO avant de lancer la commande. Dans ce cas, ça marche. Sinon, si BO n'est pas ouvert, j'ai une erreur :


    Initializing engine
    You will log with profile : TONY
    You will convert document : R:\_BO\BOBatchConverter\TEST\incidents_dih.rep
    Destination path will be : R:\_BO\BOBatchConverter\
    You asked for single document convertion
    Creating BO application
    Logging to BO application
    WARN : Unable to connect to BO. Le serveur a généré une exception. (Exception de
    HRESULT : 0x80010105 (RPC_E_SERVERFAULT))

    Exception non gérée : System.Runtime.InteropServices.COMException (0x80010108):
    L'objet invoqué s'est déconnecté de ses clients. (Exception de HRESULT : 0x80010
    108 (RPC_E_DISCONNECTED))
    à System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlag
    s flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
    à busobj.IApplication.Quit()
    à BOBatchConverter_v2.Convert_module.Open_BO_Application(String User, String
    Pwd)
    à BOBatchConverter_v2.Convert_module.Main()

    et une fenêtre d'erreur s'affiche : BO Batch Converter a rencontré un problème et doit être fermé. Nous vous prions de nous excuser pour le désagrément encouru.

    Je vais essayer de réinstaller le logiciel et retester mes requêtes.
    Encore merci pour ton logiciel (en attendant la version avec paramètres...).
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 74
    Points : 70
    Points
    70
    Par défaut
    Hello,
    Peux tu me dire quelle est ta version de BO ?
    XI ou 6.5.x ?
    Je m'attache à ton pb car il est inédit.

    La version avec paramètre "devrait" être releasée la semaine prochaine ...

    Merci
    Vincent

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Salut,

    Ma version de BO est la 6.5.1.
    Je n'arrive toujours pas à faire marcher BOBatchConverter sans lancer BO au préalable. J'ai testé la version 1.2 et 1.4...

    Merci de t'intéresser à mon problème.
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  11. #11
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Bonjour à tous.

    Comme BOBatchConverter ne marche toujours pas sur mon poste, je me suis mis au VBA et grâce à de précieuses aides et sources sur le net, je me suis créer une petite application qui, une fois le fichier .rep choisi, me le convertit en HTML, PDF ou XLS et le sauvegarde sur mon poste.
    Lors de la conversion, le rapport est rafraichi avant d'être afficher. J'ai une inputbox qui me demande d'entrer des valeurs pour le rafraichissement.
    Ma question est donc : existe-t-il un moyen en VBA d'avoir comme sous BO la liste des valeurs possibles (qui il me semble est lié au fichier .lov) ? Je souhaiterai afficher une liste (par exemple dans l'inputbox qui demande la valeur) des valeurs possibles lorsqu'il n'y en a pas trop bien sur...
    Dans VBA, il y a une fonction lié à BO qui est Variable.Item.PossibleValues. Est-ce qu'elle a un lien avec ce que je demande ? Comment l'utiliser ?

    Merci pour vos aides
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  12. #12
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Moi je fais comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Dim Item1Array
     
    Dim doc As Report
     
    Application.Interactive = False
     
    'Initialisation des objets
     
    Set ClientList = Application.Universes("VENTE", "Univers").Classes("CLIENT").Classes("INFOS CLIENT").Objects("Numéro Client").ListOfValues
     
    ClientList.Refresh
     
    Item1Array = ClientList.Values
     
    ' Execution
    For i1 = 1 To UBound(Item1Array)
     
    Application.ActiveDocument.Variables.Item(1).Value = Item1Array(i1)
    Application.ActiveDocument.Refresh
     
    Next i1
     
    Application.Interactive = True
    la partie importante c'est évidemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set ClientList = Application.Universes("VENTE", "Univers").Classes("CLIENT").Classes("INFOS CLIENT").Objects("Numéro Client").ListOfValues
     
    ClientList.Refresh
     
    Item1Array = ClientList.Values
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  13. #13
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Salut nuke_y,

    merci pour ta réponse, ça semble ressemblé à ce que je cherche.
    Cependant, j'ai du mal à comprendre les paramètres à mettre dans les Classes et dans Objects. De plus, je souhaiterai faire une fonction générale pour tous types de paramètres : il me semble que dans ton cas cela va retourner la liste des valeurs des numéros Client de la table INFOS CLIENT... et je voudrai que cette fonction s'applique pour chacune de mes valeurs, sans créer chaque cas particulier un à un. Le problème est : y a t-il moyen de gérer cette ligne de commande avec ma variable myDoc.Variables.Item(i).Name ou myDoc.Variables.Item(i).Value plutôt que par exemple "Numéro Client" ??
    J'espère que je suis suffisament clair (on est vendredi et le cerveau commence à plus trop bosser).
    Pour finir je cherche des tuto ou des liens qui me permettrait de comprendre comment faire des échanges entre HTML et VBA : pour mon travail je souhaiterai avoir une page (HTML ou PHP (plutôt HTML car je ne connait pas encore le PHP)) qui contient des liens désignant chaque requête, une fois un lien cliqué ma fonction en VBA lance BO, me renvoie une page en HTML (ou PHP),contenant les valeurs avec une ComboBox des valeurs possibles (liste des valeurs) et un bouton "envoyé". Une fonction VBA attend que je clique sur envoyé pour rafraichir le document BO et le sauvegarde au format choisi.
    J'espère que ce que j'explique est compréhensible et faisable (sinon je devrai trouvé un autre moyen).

    Merci et à la prochaine...
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  14. #14
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Effectivement, ma solution implique d'écrire les objets en dur. Tu peux variabiliser un peu ça, mais tu n'auras pas la flexibilité que tu recherches.

    Sinon un lien html qui lance du VBA qui ouvre BO je ne pense pas que ce soit faisable. Imagine la sécurité si n'importe quel lien HTML peut exécuter du code sur ton ordinateur. Maintenant il existe peut-être des solutions...
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Pour les rapports que tu dois afficher :
    - ont-ils plusieurs prompts?
    - Combien d'occurences existe-t-il pour chaque prompt (mon but est d'estimer le nombre de sorties potentielles qui doit etre la combinatoire des prompts)

    Si ce nb n'est pas trop grand, je pense que l'idéal pourrait être de coder en VBA, non pas le rafraichissement pour chaque occurrence, mais 1 seul refresh puis n filtres avec sauvegarde du fichier en .xls .pdf Etc dans un repertoire partagé. les fichiers sont nommés avec le nom des parametres d'entrées.

    Dans ce cas, tu lances un fois par nuit avec AT la génération des rapports en batch et en journée, les reports sont super rapide a afficher : ouverture du bon pdf...

    Je dois avoir du code qui ressemble a ca (mais pour 1 seul prompt...).
    Dis moi si ca t'interesse. je regarde...

  16. #16
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Ben s'il voulait du multi-prompt il aurait fallu le dire. A l'origine mon code permettait de faire du multi -prompt
    Il vaut mieux monopoliser son intelligence sur des bêtises que sa bêtise sur des choses intelligentes.

  17. #17
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Salut à tous,

    Je n'utilise jamais de @prompt. J'utilise par contre des @valeur (je pense que c'est la même chose !?!).
    Donc pour répondre à msimon, j'ai environ 180 requêtes dont environ 2 tiers ont des @valeur (généralement entre 1 et 6 par requêtes). De plus, la plupart du temps, ce sont des dates et parfois il y en a 35000 dans la base de données, donc je ne veux pas la liste de valeurs de celles-ci. Par contre j'ai d'autres valeurs dont je souhaiterai avec la liste des possibilités(environ 20 pour les plus grandes).

    En espérant avoir répondu à ta question.
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  18. #18
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Désolé, je corrige mon dernier message :
    je n'utilise pas des @valeur mais des @variable.
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

  19. #19
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 196
    Points : 62
    Points
    62
    Par défaut
    Salut,

    Je viens enfin de trouver comment avoir la fenêtre sous BO qui me permet de choisir mes variables avec leur liste de valeurs. Il suffit de lui laisser la main grâce à la commande BOApp.Interactive = True...
    Il me reste plus qu'à trouver le moyen de lancer mon exe depuis une page PHP ou HTML...
    Quand tu regardes vers le Nord, t'as le "Sud au cul" ...

Discussions similaires

  1. VBA et Business Object
    Par benlakhel dans le forum Débuter
    Réponses: 1
    Dernier message: 04/06/2014, 09h56
  2. vba excel business object
    Par vincentdar dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/07/2010, 16h04
  3. [VBA] business object et selection block
    Par munity dans le forum SDK
    Réponses: 7
    Dernier message: 20/09/2007, 20h25
  4. VBA business object et selection block
    Par munity dans le forum Général VBA
    Réponses: 0
    Dernier message: 18/09/2007, 14h34
  5. [Librairies] PHP et Business object
    Par jcachico dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 02/11/2005, 10h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo