Comment initialiser une collection de docs ?

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

Comment initialiser une collection de docs ?

Messagepar Seve » 29 Jan 2004 à 15:52

Bonjour,Dans un bouton, j'ai écrit un scipt qui ajoute des docs un par un à une collection de docs avec la méthode AddDocument. Lorsque je lance le script, j'ai un avertissement : "Object variable not set". Comment puis-je initialiser ma collection de docs pour qu'elle soit vide au départ ?Merci d'avance.
Seve
 

Re: Comment initialiser une collection de docs ?

Messagepar oguruma » 29 Jan 2004 à 16:36

pour ce genre d'erreur il est nécessaire de voir le contexte, peux-tu poster ton source (si pas indiscret), c'est plus simple comprendre par la suite car en général ce genre d'erreur intervient quand un objet n'est pas initialisé.exemple tu accède au champ nom de l'objet doc et doc n'est pas initialisémessagebox doc.nom(0)si tu préalable il te manque un set doc=.... (soit view.getfirstdocument ou getdocumentbykey(cle) ou autre type d'instruction renvoyant un objet de type doc)il en est de même avec collection (si tu l'as appelé de cette manière) tu dois avoir au préalable un set collection====> vérifie si tous tes objets sont bien instanciés
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE

Re: Comment initialiser une collection de docs ?

Messagepar Seve » 29 Jan 2004 à 16:45

Je n'ai pas d'instruction de type set collection =...En effet, je souhaite que la collection soit vide au départ pour pouvoir ensuite ajouter mes docs un à un. Pour être plus clair, je suis dans un masque qui contient deux champs : DateDébut et DateFin et un bouton qui contient le script en question. Ce script est destiné à créer une collection de docs à partir d'une vue, en ne gardant que les docs créés entre DateDébut et DateFin.Sub Click(Source As Button) ' Déclarations Dim s As New NotesSession Dim db As NotesDataBase Dim view As notesview Dim doc As NotesDocument Dim col As NotesDocumentCollection Dim uiws As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim DateDebut As String Dim DateFin As String Dim DateEvt As String Dim DateTimeDebut As NotesDateTime Dim DateTimeFin As NotesDateTime Dim DateTimeEvt As NotesDateTime ' Initialisation des variables Set db = s.CurrentDatabase Set view = db.getview("NbHeures") Set col = db.AllDocuments Set doc = view.getfirstdocument Set uidoc = uiws.currentdocument DateDebut = uidoc.FieldGetText("DateDebut") DateFin = uidoc.FieldGetText("DateFin") Set DateTimeDebut = New NotesDateTime(DateDebut) Set DateTimeFin = New NotesDateTime(DateFin) If Not Doc Is Nothing Then While Not Doc Is Nothing DateEvt = Cstr(doc.date(0)) Set DateTimeEvt = New NotesDateTime(DateEvt) ' Test si date comprise entre date début et date fin If DateTimeEvt.TimeDifference(DateTimeDebut) < 0 Then Else If DateTimeEvt.TimeDifference(DateTimeFin) > 0 Then Else ' Ajoute le doc à la collection de docs Call col.AddDocument(doc) Call col.PutAllInFolder( "AgendaParDate" ) End If End If ' Passage au doc suivant Set Doc = view.getnextdocument(Doc) Wend End If Call uidoc.Refresh End Sub
Seve
 

Re: Comment initialiser une collection de docs ?

Messagepar oguruma » 29 Jan 2004 à 18:12

En fait ton code n'est pas cohérent par rapport à ce que tu souhaites ; dans ton post tu indiques que tu veux partir d'une collecton vide.Or cette collection est fondée sur set col=db.AllDocumentsL'objet col contient tous les documents de la base.Ensuite dans ton code, tu démarres d'une que tu relis pour insérer tes documents dans la collection. Il y va forcément y avoir des doublons.Je me demande de plus pourquoi tu souhaites partir d'une collection ?si j'ai bien compris... mais bon (mais neurones sont peut-être usées !)ton document en ligne (UI) permet de définir des règles de filtrage. Celles-ci sont fondées les dates.Les documents sources sont issus de la vue NbHeures.Pourquoi ne fais tu pas doc.PutInFolder("AgendaParDate" ), ainsi tu fais l'ajout un à un.J'en termine ma remarque sur le plan algo...es-tu certain que la vue NbHeures existe bien comme tu l'as écrite ?afin de voir que tu les objets soient bien instance, je te recommande de dérouler ton code en pas avec la mise au point LS et vérifier dans l'onglet variables que tous les objets soient bien initialisés (twistie vert)je n'apporte pas vraiement dans un premier de réponse sur ton script ou à ton problème....je fais déjà ce post mais je continue mes investigations sur ton problème et je reviendrai vers toi si j'ai d'autres infostiens moi informé de tes recherches et surtout si mon analyse correspond bien à ce que tu veux faire...@+
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE

Re: Comment initialiser une collection de docs ?

Messagepar oguruma » 29 Jan 2004 à 18:22

étrange...ton code:Set doc = view.getfirstdocumentSet uidoc = uiws.currentdocumentDateDebut = uidoc.FieldGetText("DateDebut")DateFin = uidoc.FieldGetText("DateFin")Set DateTimeDebut = New NotesDateTime(DateDebut)Set DateTimeFin = New NotesDateTime(DateFin)If Not Doc Is Nothing ThenWhile Not Doc Is Nothing remarque :--- le If et le While font la même chose... c'est donc redondant ! -- la condition est Not Doc Is Nothing dans les deux lignes...ton souhait :à priori tu souhaites sortir si la vue est vide (très bonne idée) dans ce cas je feraiSet doc = view.getfirstdocumentif doc is nothing then messagebox "aucun document à intégrer dans le dossier",16,"Documentation"exit subend if... par exemple...et hop ! on sort !idem pour tester la présence de ta vueif view is nothing then messagebox "la vue NbHeures est inconnue"exit subend if
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE

Re: Comment initialiser une collection de docs ?

Messagepar Seve » 30 Jan 2004 à 09:32

Merci pour les remarques qui m'ont permis d'améliorer le code.Sinon, j'ai trouvé une solution... J'ai créé la collection en faisant une recherche (méthode search) qui n'aboutit à rien. Ma collection existe bien, mais il n'y a pas de docs dedans.J'ai juste un peu détourné le problème !
Seve
 

Re: Comment initialiser une collection de docs ?

Messagepar Droad » 30 Jan 2004 à 11:38

Une autre approche qui évite l'accés à une vue (donc probablement +rapide): Dim session As New NotesSession Dim db As NotesDatabase Dim doc As NotesDocument Dim coll As NotesDocumentCollection Set db = session.currentDatabase Set doc = db.getProfileDocument("Nawak") Set coll = doc.responses ' Vide puisque pas de doc réponse ' Pour le fun For i=0 To 5 Dim newDoc As New NotesDocument(db) Call newDoc.save(True,False) Call coll.AddDocument(newDoc) Next Print "coll.Count = " & coll.count Call coll.removeall(True)[%sig%]
Droad
 

Re: Comment initialiser une collection de docs ?

Messagepar Seve » 30 Jan 2004 à 11:48

Effectivement, ça me simplfifie drpôlement les choses. Merci !
Seve
 


Retour vers Développement

cron