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 21/09/2011, 11h55   #1
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 10
Points : 1
Points : 1
Par défaut Impossible d'éxécuter une requête deux fois.

Bonjour,

je ne peux pas exécuter deux fois une requête en VBA.
J’obtiens un message d'erreur:

Erreur d'execution '130'
Unable to open this document, not authorized.

Voici mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub PersonelsGarde()
 
     Dim strOutputFileName AS String
 
     Dim objBO AS busobj.Application
     Dim docBO AS busobj.Document
     Dim dpBO AS busobj.DataProvider
        'création objet application
    Set objBO = CreateObject(Class:="businessobjects.application")
    'login : "user","mot de passe", "mode offline"
    'objBO.LoginAs "GE", "", False
    'objBO.Visible = True
    objBO.Interactive = False
 
    'ouverture de mon rapport BO
    Set docBO = objBO.Documents.Open("\\spare2\Projet\SPM\requetes\personnels de garde.rep")
    'Application.ActiveDocument.DataProviders(1).Queries(1).ADD "Jour de garde", "jourdegarde", "equal to", "19/09/21"
    Application.ActiveDocument.VARIABLES("Jour de garde").Value = "21/09/2011"
    'raffraichissement du rapport
    docBO.Refresh
    'sauvegarde du rapport raffraichi
    'docBO.Save
 
    'sélection du premier fournisseur de données
 
    SET dpBO = docBO.DataProviders.Item(1)
    'déclaration de mon chemin de création du CSV
    strOutputFileName = "\\spare2\projet\spm\imports\personnels.csv"
 
    Call dpBO.ConvertTo(5, 0, strOutputFileName)
    docBO.Close
    'fermeture et désinstanciation des objets
    'appBO.Quit
    Set dpBO = Nothing
    Set docBO = Nothing
    Set objBO = Nothing
 
 
 
End Sub
Il semblerai que le fichier .rep ne se ferme pas correctement, ou qu'un objet ne soit pas "désinstancié".
En effet j'obtiens le même message d'erreur si j'ouvre la requête et je la referme avant d'exécuter la macro.

Par avance, merci pour votre aide.
oliv134 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 14h06   #2
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 10
Points : 1
Points : 1
En fait je ne peux même pas exécuter deux requêtes de fichier différents à la suite.
je suis obligé à chaque fois de redémarrer BO.
oliv134 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 14h07   #3
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 281
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 281
Points : 5 703
Points : 5 703
Bonjour,

Je vous propose de vérifier s'il n'y a pas une possibilité de saisir une propriété au moment où vous sauvegardez le rapport (pour tous les utilisateurs)

Ensuite, il y a quelque chose que je ne comprends pas :
Vous ouvrez un rapport BO existant, vous ajoutez une condition au DP avant de sauvegarder et de fermer.
Mais si vous réexécutez la requête, une autre condition viendra s'ajouter à celle préalablement créée.
Je pense donc qu'il faudrait d'abord faire un remove de la condition précédente si elle existe.
Attention également dans votre code, je ne vois pas la collection Conditions après Queries.
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 08h56   #4
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 10
Points : 1
Points : 1
Bonjour Tom,

merci pour vos infos.
Je reposte le code épuré car javais omis de supprimer certaines lignes.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Sub PersonelsGarde()
 
     Dim strOutputFileName AS String
 
     Dim objBO AS busobj.Application
     Dim docBO AS busobj.Document
     Dim dpBO AS busobj.DataProvider
 
    ' création objet application
    Set objBO = CreateObject(Class:="businessobjects.application")
    objBO.Interactive = False
 
    ' ouverture de mon rapport BO
    SET docBO = objBO.Documents.Open("\\spare2\Projet\SPM\requetes\personnels de garde.rep")
    Application.ActiveDocument.VARIABLES("Jour de garde").Value = "21/09/2011"
 
    ' raffraichissement du rapport
    docBO.Refresh
 
 
    'sélection du premier fournisseur de données
 
    SET dpBO = docBO.DataProviders.Item(1)
    'déclaration de mon chemin de création du CSV
    strOutputFileName = "\\spare2\projet\spm\imports\personnels.csv"
 
    Call dpBO.ConvertTo(5, 0, strOutputFileName)
    docBO.Close
    'fermeture et désinstanciation des objets
    SET dpBO = Nothing
    SET docBO = Nothing
    SET objBO = Nothing
 
 
 
End Sub
Je ne vois pas où j'ajoute une condition au DP dans mon code.
Je ne veux pas sauvegarder le rapport, mais juste exporter son résultat.
Ce code plante toujours.
oliv134 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 09h54   #5
Responsable Business Intelligence
 
Avatar de TomDuBouchon
 
Homme Thomas Cochin
Consultant en Business Intelligence
Inscription : juin 2009
Messages : 3 281
Détails du profil
Informations personnelles :
Nom : Homme Thomas Cochin
Âge : 29
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : juin 2009
Messages : 3 281
Points : 5 703
Points : 5 703
Bonjour,

Pour la condition, oubliez ce que j'ai dit, je n'avais pas fait attention au fait qu'elle était en commentaire.

A la réflexion, je pense que c'est la création de l'objet application qui pose problème. En effet, il n'y a nul besoin de créer une application puisque celle-ci est déjà ouverte...

De plus, sur l'application de la valeur sur la variable, il vaut mieux utiliser DocBo plutôt que ActiveDocument.

Attention également à bien remettre la propriété Interactive à True une fois le code terminé.

Je vous propose donc le code suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub PersonelsGarde()
 
     Dim strOutputFileName AS String
 
     Dim docBO AS busobj.Document
     Dim dpBO AS busobj.DataProvider
 
    Application.Interactive = False
 
    ' ouverture de mon rapport BO
    SET docBO = Application.Documents.Open("\\spare2\Projet\SPM\requetes\personnels de garde.rep")
    docBO.VARIABLES("Jour de garde").Value = "21/09/2011"
 
    ' raffraichissement du rapport
    docBO.Refresh
 
    'sélection du premier fournisseur de données
    SET dpBO = docBO.DataProviders.Item(1)
    'déclaration de mon chemin de création du CSV
    strOutputFileName = "\\spare2\projet\spm\imports\personnels.csv"
 
    Call dpBO.ConvertTo(5, 0, strOutputFileName)
 
    'fermeture et désinstanciation des objets
    docBO.Close
    Application.Interactive = True
    SET dpBO = Nothing
    SET docBO = Nothing
 
End Sub
__________________
Pensez à consulter les FAQs BI, les Tutoriels BI et à effectuer des Recherches.
Un message vous a aidé ? Votez en cliquant sur
Votre problème est résolu ? Merci de l'indiquer en cliquant sur le bouton
Vous souhaitez contribuer à la rubrique BI ? Contactez-moi ou un autre responsable de l'équipe BI par MP.
TomDuBouchon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 11h09   #6
Invité de passage
 
Inscription : avril 2011
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2011
Messages : 10
Points : 1
Points : 1
Bonjour Tom.

Merci pour toutes ces précisions.

Ton code est correct et fonctionne parfaitement.

Merci encore.

Bonne journée?
oliv134 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h00.


 
 
 
 
Partenaires

Hébergement Web