Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Business Objects > SDK
SDK Forum d'entraide pour la programmation des outils BO par des API (VBA, ASP, Java)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/05/2008, 10h46   #1
Invité de passage
 
Inscription : mai 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 3
Points : 0
Points : 0
Par défaut [5.1.8][VBA] Créer une requête BO (via Macro depuis Excel)

Bonjour,

Je possède BO V.5.1.8 . Je ne peux pas utiliser VBA avec le BO que je possède. J'utilise donc VBA depuis Excel. Mes connaissances en BO sont bonnes et je débute en VBA.

J'aimerais créer une requête sur BO, grâce à VBA utilisé depuis Excel. Je ne sais pas si cela est possible. Je vous explique cependant ce que je dois faire...


La requête que je dois créer est très simple:

- affichage de numéros de sinistre et de numéros d'immatriculation
- condition: numéros de sinistre dans la liste X

La liste X est du type: numéro1;numéro2;numéro3 . Je possède cette liste X dans la cellule B1 d'une feuille Excel.

Il faudrait donc que, à partir de VBA-Excel, je puisse créer cette requête, copier la liste X dans la condition de cette requête et lancer la requête ainsi créée.



Est-il possible de créer de telles requêtes BO depuis VBA-Excel?
Si non, une fois qu'un rapport est ouvert, est-il possible d'ouvrir l'éditeur de requête de BO et de modifier la requête du rapport (afin de mettre la bonne liste X présente dans la cellule B1, j'aurai en effet besoin plus tard de relancer cette requête avec une liste X différente), toujours grâce à VBA-Excel?


Je sais, depuis VBA-Excel, ouvrir BO et ouvrir un rapport. Voici le code que j'ai récupéré sur le net:

Code :
1
2
3
4
5
6
7
 Sub openBO()
Dim objBO, objrep
SET objBO = CreateObject("BusinessObjects.Application")
objBO.LoginAs , , True
SET objrep = objBO.Documents.Open("monchemin\monrapport.rep")
objBO.Visible = True
End Sub
Je bloque pour créer ou bien pour modifier la requête BO présente dans monrapport.rep . Peut-être faut-il passer en SQL? J'ai tenté de créer des Query en utilisant leur propriété SQL mais en vain. Voici le code que j'ai eu en m'inspirant d'autres codes chopés sur le net:

Code :
1
2
3
4
5
6
7
 Dim req AS Query
Dim chaine AS String
chaine = "moncodeSQL"
SET req = objBO.createquerydef()
req.Sql = chaine
req.Close
objrep.Refresh
Ce code doit être bourré d'erreurs! J'obtiens le message suivant: "Erreur d'exécution 438: propriétée ou méthode non gérée par cet objet"
J’ai essayé de mettre objrep.createquerydef(), même message d’erreur. Je sais bien que objBO et objrep ne sont pas des objets « connection » ou « database » mais je n’avais pas d’autre idée…

Quelqu’un aurait-il une idée ou un conseil à me donner ? Je vous remercie d’avance
Bretonnie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2008, 16h31   #2
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 185
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 185
Points : 2 724
Points : 2 724
Bonjour,
J'ai deux questions :
  • Pourquoi ne peux tu pas utiliser VBA en V5 ?
  • Pourquoi ne pas faire un fournisseur de données qui récupère ta feuille Excel ?
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 14h48   #3
Invité de passage
 
Inscription : mai 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 3
Points : 0
Points : 0
Bonjour,
  • Pourquoi ne peux tu pas utiliser VBA en V5 ?

    Je pense que l'entreprise dans laquelle je suis à configuré BO de sorte qu'on ne puisse pas utiliser VBA. Du coup je n'y ai pas accès. Je ne peux donc utiliser VBA que grâce à Excel.

  • Pourquoi ne pas faire un fournisseur de données qui récupère ta feuille Excel ?

    Et bien, j'ai déjà créé la requête qui m'intéresse en mettant en condition une certaine liste de numéros de sinistre. Cette requête se trouve dans un rapport et elle fait appel à des données se trouvant dans un univers, disons A. J'ai ensuite essayé ce que tu m'as dit: j'ai créé un fournisseur de données d'après ma feuille excel (ce fournisseur contient donc une cellule dans laquelle il y a la liste X). Cependant, une fois le fournisseur de données créé (nommé F1) je ne vois pas comment il est possible de modifier ma première requête en mettant comme condition:

    numéro de sinistre DansListe [la liste X qui est dans la cellule 1 du fournisseur F1]

    car en effet lorsque je vais dans "l'éditeur de fournisseur de données" correspondant à ma requête, je ne peux accèder qu'aux classes et objets de mon univers A et en aucun cas aux données se trouvant dans le fournisseur de données F1.

Est-il possible de faire une requête en utilisant des données qui se trouvent dans un autre fournisseur de données? Ce serait vraiment bien mais je ne vois pas comment cela est possible. Peut-être pensais-tu à autre chose en me parlant du fournisseur de données, mais je ne vois pas quoi. (Mes connaissances en BO sont "bonnes" pour des tâches pas trop complexes, je me suis mal exprimée, désolée!) Je te remercie de ton aide.
Bretonnie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 00h38   #4
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 185
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 185
Points : 2 724
Points : 2 724
Citation:
Envoyé par Bretonnie Voir le message
Bonjour,
  • Pourquoi ne peux tu pas utiliser VBA en V5 ?

    Je pense que l'entreprise dans laquelle je suis à configuré BO de sorte qu'on ne puisse pas utiliser VBA. Du coup je n'y ai pas accès. Je ne peux donc utiliser VBA que grâce à Excel.
  • Pourquoi ne pas faire un fournisseur de données qui récupère ta feuille Excel ?

    Et bien, j'ai déjà créé la requête qui m'intéresse en mettant en condition une certaine liste de numéros de sinistre. Cette requête se trouve dans un rapport et elle fait appel à des données se trouvant dans un univers, disons A. J'ai ensuite essayé ce que tu m'as dit: j'ai créé un fournisseur de données d'après ma feuille excel (ce fournisseur contient donc une cellule dans laquelle il y a la liste X). Cependant, une fois le fournisseur de données créé (nommé F1) je ne vois pas comment il est possible de modifier ma première requête en mettant comme condition:

    numéro de sinistre DansListe [la liste X qui est dans la cellule 1 du fournisseur F1]

    car en effet lorsque je vais dans "l'éditeur de fournisseur de données" correspondant à ma requête, je ne peux accèder qu'aux classes et objets de mon univers A et en aucun cas aux données se trouvant dans le fournisseur de données F1.
Est-il possible de faire une requête en utilisant des données qui se trouvent dans un autre fournisseur de données? Ce serait vraiment bien mais je ne vois pas comment cela est possible. Peut-être pensais-tu à autre chose en me parlant du fournisseur de données, mais je ne vois pas quoi. (Mes connaissances en BO sont "bonnes" pour des tâches pas trop complexes, je me suis mal exprimée, désolée!) Je te remercie de ton aide.
Malheureusement, ce n'est possible qu'à partir de la version 6

As tu essayé de synchroniser tes deux requêtes ?
Dans le Gestionnaie de données ...
Puis :
Comment n'afficher que les lignes communes des requêtes synchronisées ?
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2008, 22h52   #5
Invité de passage
 
Inscription : mai 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 3
Points : 0
Points : 0
Bonjour,

Le problème de synchroniser les requêtes puis de n'afficher que les lignes qui sont communes aux deux requêtes est le suivant (si j'ai bien compris le principe de la synchronisation): cela suppose que ma première requête affiche TOUS les numéros de sinistres possibles et les numéros d'immatriculation associés. Ainsi, comme la deuxième requête contient les numéros de sinistre qui m'intéressent, je pourrai avoir seulement ces numéros de sinistre et leur numéro d'immatriculation. Cependant il est impossible d'afficher tous les numéros de sinistre sans mettre de condition de temps (sinon j'aurai tous les sinistres de ma base de données depuis qu'elle a été créée!!!), et je ne peux pas mettre cette condition de temps pour différentes raisons.

Comme je n'ai pas BO version 6 pour utiliser les données d'un autre fournisseur et comme la synchronisation ne me semble pas judicieuse pour mon problème, il faut que je trouve une autre solution. J'en reviens donc à mon idée de départ: est-il possible de modifier les conditions d'une requête existante grâce à VBA-Excel? Autrement dit, si cela est possible, comment, depuis VBA-excel, ouvrir l'éditeur de requête et modifier dans la condition les valeurs que peut prendre un objet? (tout en sachant que la valeur que je veux attribuer à cet objet est stockée dans une feuille excel...).

Je te remercie pour tes conseils
Bretonnie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2008, 12h35   #6
Rédacteur
 
Avatar de Bruno2r
 
Bruno ROMAN-RUIZ
Inscription : décembre 2006
Messages : 2 185
Détails du profil
Informations personnelles :
Nom : Bruno ROMAN-RUIZ
Âge : 57

Informations professionnelles :
Secteur : Santé

Informations forums :
Inscription : décembre 2006
Messages : 2 185
Points : 2 724
Points : 2 724
Citation:
Envoyé par Bretonnie Voir le message
Bonjour,
  • Pourquoi ne pas faire un fournisseur de données qui récupère ta feuille Excel ?

    Et bien, j'ai déjà créé la requête qui m'intéresse en mettant en condition une certaine liste de numéros de sinistre. Cette requête se trouve dans un rapport et elle fait appel à des données se trouvant dans un univers, disons A. J'ai ensuite essayé ce que tu m'as dit: j'ai créé un fournisseur de données d'après ma feuille excel (ce fournisseur contient donc une cellule dans laquelle il y a la liste X). Cependant, une fois le fournisseur de données créé (nommé F1) je ne vois pas comment il est possible de modifier ma première requête en mettant comme condition:
Pour pouvoir synchroniser tes deux requêtes, il faut que ta liste dans excel ne soit pas dans une cellule unique (1 seule ligne ramenée), mais en colonne (une colonne numéro de sinistre et autant de lignes que de numéros)
__________________
Précisez la VERSION ! Règles du forum Business Objects et FAQ BO
"A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"
Bruno2r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h55.


 
 
 
 
Partenaires

Hébergement Web