Page 1 sur 1

Agent planifié d'extraction d'une vue

MessagePublié: 19 Juil 2011 à 15:30
par clementbp
Bonjour

Je viens de créer un agent qui extrait une vue d'une base lotus située sur le serveur et je voudrais enregistrer au format excel cette extraction sur un autre serveur du domaine.

Quand j'exécute maunuellement cet agent, aucun soucis le fichier est bien enregistré au bon endroit.

Par contre je voudrais planifier cette agent pour qu'il s'éxecute chaque nuit, mais là problème, l'agent me renvoit une erreur.

L'erreur se situe au moment de l'enregistrement du fichier.

Merci de votre aide

MessagePublié: 19 Juil 2011 à 15:39
par Raziel
DEux choses :
1. Dans les propriété de l'agent tu dois avoir "3. Autorisé opérations à accès limité avec droits d'administration complet".

2. Comme tu écrit sur un autre seveur, il faut que le serveur sur lequel tourne l'agent ai les droits sur le serveur cible. Pour cela, dans le doc serveur cible, onglet sécurité, mettre le serveur source comme serveur accrédité.

MessagePublié: 19 Juil 2011 à 16:14
par clementbp
Merci pour ta réponse

Pour le 1er point, j'ai fais la modification et rien n'a changer.

Pour le point 2, j'ai essayé de modifier l'adresse de destination du fichier en mettant le nom du serveur mais apparement ça ne fonctionne pas.

Comment faire pour être sur de la validité de l'adresse que je mets dans le code?

Peut on savoir si c'est un problème de droit ou un problème d'adresse ?

MessagePublié: 19 Juil 2011 à 16:16
par Raziel
Si lorsque tu le lance en manuel le fichier se crée bien sur le serveur cible alors c'est plus un pb de droit.

As tu vérifié le paramétrage du serveur cible ? As tu une erreur dans la log du serveur exécutant l'agent ?

MessagePublié: 19 Juil 2011 à 22:53
par roubech
le serveur Domino A est lancé en tant que service windows sur la machine A et essaye d'écrire sur un partage situé sur la machine B
c'est un pb de droit windows
le compte utilisé pour lancer le service est par défaut un compte admin local, qui ne peux pas accéder aux ressources reseau
une solution consiste à lancer le service avec un compte du domaine qui a les droits necessaires

MessagePublié: 20 Juil 2011 à 08:12
par Raziel
roubech a écrit:le serveur Domino A est lancé en tant que service windows sur la machine A et essaye d'écrire sur un partage situé sur la machine B
c'est un pb de droit windows
le compte utilisé pour lancer le service est par défaut un compte admin local, qui ne peux pas accéder aux ressources reseau
une solution consiste à lancer le service avec un compte du domaine qui a les droits necessaires


Je n'y avais pas pensé... :lol:

MessagePublié: 31 Août 2011 à 17:05
par clementbp
Bonjour à tous

Je me suis remis dans mon agent que je voudrais planifier et exécuter sur mon serveur.

Le problème viens du moment ou il doit enregistrer en direct sur le serveur il ne trouve pas le chemin.

Je ne pense pas que cela vienne des droits car c'est sur le meme serveur.

Si quelqu'un à une idée !!!

Sub Initialize

Dim Session As New NotesSession
Dim db As NotesDatabase
Dim dataview As NotesView
Dim vwNav As NotesViewNavigator
Dim XLApp As Variant
Dim XLWorkBook As Variant
Dim ActiveWorkBook As Variant
Dim Sheet As Variant
Dim ligne As Long
Dim colonne As Long
Dim K As Variant
Dim Nbcolonne As Integer
Dim c As NotesViewColumn
Dim XlSheet As Variant
Dim entry As NotesViewEntry

Dim colvals As Variant
Dim scope As String
Dim doc As NotesDocument
On Error Goto Erreur


' Initialisation de la session, base actuelle et vue
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dataview = db.GetView("CBP-vExtractionDAC Planning") 'SPECIFIER ICI LE NOM DE LA VUE

Set vwNav=dataview.CreateViewNav


Print "PASSAGE 1 OK"

' initialisation de l'objet OLE ou Instance OLE
' ouverture de l'application Excel sans ouverture de classeur
Set XLApp = CreateObject("Excel.Application")
XLApp.Visible = True
XLApp.DisplayAlerts = False
Set XLWorkBook=XLApp.Workbooks.Add
Set ActiveWorkBook=XLApp.ActiveWorkBook
Set Sheet=ActiveWorkBook.ActiveSheet
Sheet.Name = "DAC" ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''NOM DE LA FEUILLE


Print "PASSAGE 2 OK"

'1. Ecriture du titre des colonnes


Nbcolonne=dataview.ColumnCount ' Récupère le nombre de colonne de la vue
ligne=1 ' On se place sur la première ligne
colonne=1

Set XlSheet=CreateObject("Excel.Sheet")

For K=1 To Nbcolonne
Set c=dataview.columns(K-1)
Sheet.Cells(ligne,colonne) = c.title
colonne = colonne + 1
Next K

Set entry=vwnav.GetFirstDocument


'Stop

Print "PASSAGE 3 OK"

'2. Renseigne les valeures des champs du document


ligne=2 ' On se place sur la deuxième ligne
colonne=1 'On se remet sur la premiere colonne


Do While Not (entry Is Nothing)

For colonne=1 To Nbcolonne
colvals=entry.ColumnValues(colonne-1)
scope=Typename(colvals)
Select Case scope
Case "EMPTY"
Sheet.Cells(ligne,colonne) =""
Case "STRING( )"
Sheet.Cells(ligne,colonne) =""
Case Else
Sheet.Cells(ligne,colonne) ="" + colvals
End Select


Next colonne

ligne=ligne+1

Set entry = vwnav.getnextdocument(entry)

'Stop

Loop ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''COPIE TOUTS LES VALEURS DE LA VUE


Print "PASSAGE 4 OK"



On Error GoTo Erreur2

''''''''''''''''''''''''''''' MISE EN FORME ''''''''''''''''''''''''''''''

XLApp.Range("A1:IV1").Select 'selectionne les cellules de B2 à IV2
XLApp.Selection.FONT.Bold = True 'mets la selection en gras
XLApp.Selection.Font.Size = 11 'mets la selection en police 11

Sheet.Columns.AutoFit 'calcul automatiquement la largeure des colonnes

'Aligne les cellules horizontalement et verticalement

XLApp.Range("A1:IV" & ligne).Select
Const xlCenter = -4108 'défini la constante qui permet de centré le texte
XLApp.selection.HorizontalAlignment = xlCenter
XLApp.selection.VerticalAlignment = xlCenter


Print "PASSAGE 5 OK"


'MISE A JOUR DES FICHIERS DAC SAVE ET DAC



'Sauvegarde le fichier avec la date du jour dans
'DateDuJour = Right(Date, 4) & "-" & Mid(Date, 4, 2) & "-" & Left(Date, 2)

'On Error GoTo Erreur3
XlApp.ActiveWorkBook.SaveAs "C:\Temp\Workflows_DAC"

On Error GoTo Erreur4

'XLApp.ActiveWorkBook.Close 'Ferme le fichier
'XLApp.Quit
Exit Sub


Print "PASSAGE 6 OK"


Erreur:

'XLApp.Quit
'MsgBox "PROBLEME PENDANT L'EXTRACTION DES DAC " & "( Ligne : " & ligne-1 & " Colonne : " & colonne-1 & " )",16," ERREUR !"
'Resume Fin


Erreur2:


'Stop
'XLApp.Quit
'MsgBox "PROBLEME PENDANT L'EXTRACTION AU NIVEAU DE LA MISE EN FORME"
'Resume Fin

Erreur3:
'XLApp.Quit
MsgBox "PROBLEME DANS L'ADRESSE"
Resume Fin

Erreur4:
XLApp.Quit
MsgBox "PROBLEME A LA FIN"
Resume Fin


Fin:
End Sub

MessagePublié: 31 Août 2011 à 17:11
par Raziel
C'est lorsque tu exécute cette commande que ton programme se plante :
XlApp.ActiveWorkBook.SaveAs "C:\Temp\Workflows_DAC"

Quel message d'erreur obtient tu ?
Tu a vérifié le niveau de sécurité d'exécution de ton agent ? Pour ce type, tu dois avoir la valeur 3 "Autoriser opérations à accès limiter avec droits d'administration complets"

MessagePublié: 31 Août 2011 à 18:53
par roubech
Excel est installé sur le serveur pour exécuter ce code ?
Set XLApp = CreateObject("Excel.Application")

MessagePublié: 01 Sep 2011 à 10:45
par clementbp
Oui j'ai installé Excel sur le serveur.
Quand je prend la main sur le serveur je vois bien le fichier excel se remplir

Mais comme dit Raziel c'est à la ligne XlApp.ActiveWorkBook.SaveAs "C:\Temp\Workflows_DAC" que ça plante

Au niveau des sécurité je suis bien en niveau 3

Auriez vous une idée pour faire cela éventuellement d'une autre manière !!!!

MessagePublié: 01 Sep 2011 à 10:49
par Raziel
Pour moi c'est un problème de droit d'écriture sur le répertoire.

Dans ta gestion d'erreur, fait afficher la ligne ainsi que le code est le libellé de l'erreur afin que l'on puisse récupérer tout ça dans la log du serveur.

MessagePublié: 01 Sep 2011 à 20:59
par roubech
+1 pour un print du grenre dans la gestion d'erreur "Erreur n°" & err & " a la ligne " & erl & " : " & error

et en plus du niveau de droit dans les propriétés de l'agent, il faut des droits pour exécutéer les agents non restrictifs au niveau du doc serveur pour le signataire de l'agent ou le serveur si planifié