Set Doc = View.GetDocumentByKey(KEY, True) ne s'initialise p

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Set Doc = View.GetDocumentByKey(KEY, True) ne s'initialise p

Messagepar mortanium » 22 Juin 2010 à 18:12

Bonjour,

Je dois construire une application qui recherche toutes les bases mail présent sur plusieurs serveurs et vérifier si il existe une fiche personne dans le NAB.

Dans un deuxième temps, j'ai un agent qui croise les informations entre le NAB et mon application.
C'est à dire que je recherche dans le NAB si une fiche personne serait absente de mon appli , dans ce cas là, je crée un nouveau document dans mon appli.
C'est là que je rencontre un problème.
Set Doc = View.GetDocumentByKey(KEY, True) ne s'initialise pas alors que tout me semble correct.

Voici le code que j'utilise :

Sub Initialize
Dim Session As NotesSession
Dim Db As NotesDatabase
Dim View As NotesView
Dim Doc As NotesDocument

Dim ViewPeople As NotesView
Dim DocPeople As NotesDocument

Dim DbNAB As New NotesDatabase( "", "" )
Dim ViewNAB As NotesView
Dim DocNAB As NotesDocument

Dim NABSrv, NABDb, NABView, EXTENSION, NABFORM, KEY As String
Dim Flag As Boolean

Set Session = New NotesSession
Set Db = Session.CurrentDatabase
Set View = Db.GetView("Admin\01 - Setup")
Set Doc = View.GetFirstDocument

'## Récupération des paramètres de profile
NABSrv = Doc.NAB_Admin_Serv(0)
NABDb = Doc.NAB_Annuaire(0)
NABView = Doc.NAB_View_Users(0)

'## Test Ouverture du NAB
Flag = DbNAB.Open(NABSrv,NABDb)
If Flag = False Then
Exit Sub
End If

'## Accès au premier document utilisateur du NAB
Set ViewNAB = DbNAB.GetView(NABView)
Set DocNAB = ViewNAB.GetFirstDocument

'## Accès aux documents suivants des utilisateurs du NAB
While Not DocNAB Is Nothing
NABFORM = DocNAB.Form(0)
If NABFORM<>"Person" Then
Goto SUIVANT
End If
EXTENSION = Right$(Ucase$(DocNAB.MailFile(0)),4)

If EXTENSION<>".NSF" Then
KEY= Cstr(Ucase$(DocNAB.FirstName(0)+" "+DocNAB.LastName(0)+"-"+DocNAB.MailServer(0)+"!!"+DocNAB.MailFile(0)+".nsf"))
Else
KEY= Cstr(Ucase$(DocNAB.FirstName(0)+" "+DocNAB.LastName(0)+"-"+DocNAB.MailServer(0)+"!!"+DocNAB.MailFile(0)))
End If

Set ViewPeople = Db.GetView("(VPeople)")
Set DocPeople = ViewPeople.GetDocumentByKey(KEY, True)
If (DocPeople Is Nothing) Then
'Msgbox ("creation doc")
DocPeople.Form = "People"
DocPeople.DbTitle = DocNAB.FirstName(0)+ " " + DocNAB.LastName(0)
DocPeople.FullName = DocNAB.FullName(0)
DocPeople.FirstName = DocNAB.FirstName(0)
DocPeople.LastName = DocNAB.LastName(0)
DocPeople.ShortName = DocNAB.ShortName(0)
DocPeople.Location = DocNAB.Location(0)
DocPeople.MailServer = DocNAB.MailServer(0)
DocPeople.MailPath = DocNAB.MailFile(0)
DocPeople.MailForwarding = DocNAB.MailAddress(0)
DocPeople.DbOnServer = DocNAB.MailServer(0)
DocPeople.DbMailPath = DocNAB.MailFile(0)
DocPeople.Clef =KEY
Call DocPeople.Save(True,False)
Else
'Msgbox ("suivant")
End If

SUIVANT :
Set DocNAB = ViewNAB.GetNextDocument(DocNAB)

Wend

End Sub


Merci.
Dernière édition par mortanium le 23 Juin 2010 à 16:31, édité 1 fois.
:scratch:
La seule chose dont on soit sûr, en ce qui concerne l'avenir, c'est qu'il n'est jamais conforme à nos prévisions.
Avatar de l’utilisateur
mortanium
Premier posts
Premier posts
 
Message(s) : 17
Inscrit(e) le : 17 Jan 2008 à 20:46
Localisation : Lyon

Messagepar stloje » 23 Juin 2010 à 08:27

As-tu remarqué s'il y avait une erreur lors de l'exécution?

Lorsque tu traces l'exécution du code, la chaîne de recherche est-elle bonne?

Dernière question : pourquoi tu forces l'affectation à être en string (cstr) quand ce dernier est déjà en string?
Et vive le cambouis! Si t'en as jusque sous les bras, c'est parce que tu as cherché longuement la solution ou tout simplement parce que tu t'es vautré!
Avatar de l’utilisateur
stloje
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 335
Inscrit(e) le : 09 Sep 2008 à 13:18
Localisation : Orléans

Messagepar Michael DELIQUE » 23 Juin 2010 à 08:37

salut

vérifier que :

- la key est bien la permiere colonne de la vue
- la premiere colonne est bien trié
- attentention à la case

oh faite instanciation d'une vue dans une boucle "vade retro satanas" je te raconte pas le temp de traitement
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar mortanium » 23 Juin 2010 à 09:17

Bonjour,

Pour répondre à vos questions :
La vue est trié et la première colonne contient la clé de recherche. Ce champ est calculé à la création du document.
J'ai fait en sorte que ma clé soit créé tout en majuscule.
J'ai rajout Cstr pour être sûre que la chaine soit de type String.

L'objectif est de passé en revue toutes les fiches utilisateurs présente dans le NAB et vérifier que dans ma base elles sont également présente. Si ce n'est pas le cas, je créée le document.

En faisant tourné mon agent en utilisant le debegueur, la ligne suivante :
Set DocPeople = ViewPeople.GetDocumentByKey(KEY,TRUE)
ne s'initialise pas. En continuant le script il s'arrête à la ligne DocPeople.Form = "People" avec l'erreur "Object variable Not Set".
:scratch:
La seule chose dont on soit sûr, en ce qui concerne l'avenir, c'est qu'il n'est jamais conforme à nos prévisions.
Avatar de l’utilisateur
mortanium
Premier posts
Premier posts
 
Message(s) : 17
Inscrit(e) le : 17 Jan 2008 à 20:46
Localisation : Lyon

Messagepar abertisch » 23 Juin 2010 à 09:35

Ah mais c'est normal !!

si le document n'existe pas il faut le créer non ? avec db.Createdocument() :D
"Lotus, il n'y a qu'en rouleaux que ça fait pas mal au cul"
abertisch
Roi des posts
Roi des posts
 
Message(s) : 763
Inscrit(e) le : 25 Oct 2006 à 13:51
Localisation : Suisse

Messagepar LSong » 23 Juin 2010 à 13:12

If (DocPeople Is Nothing) Then
'Msgbox ("creation doc")
DocPeople.Form = "People"


ben s'il n'existe pas c'est qu'il est = nothing ...
faudrait le crée avant de l'utiliser


PS l'art de chercher un probleme la ou il n'y en a pas
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar mortanium » 23 Juin 2010 à 13:38

Oups...
ça doit être un oubli.

Merci ça fonctionne au poil...
:scratch:
La seule chose dont on soit sûr, en ce qui concerne l'avenir, c'est qu'il n'est jamais conforme à nos prévisions.
Avatar de l’utilisateur
mortanium
Premier posts
Premier posts
 
Message(s) : 17
Inscrit(e) le : 17 Jan 2008 à 20:46
Localisation : Lyon


Retour vers Développement

cron