Autor Thema: Script PutInFolder  (Gelesen 4052 mal)

Offline Thorsten Kalweit

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Script PutInFolder
« am: 11.03.09 - 09:42:39 »
Guten Morgen zusammen,

mein Script bricht immer mit der Fehlermeldung "Object variable not set ab". Der Debugger stoppt immer in der Zeile "Set currentDocument = Source.Document".

Woran liegt das?

Zum Hintergrund:
In einer Datenbank zur Archivverwaltung wählt der Benutzer ein Dokument aus einer Auswahlliste aus. Von dem ausgewählten Dokument wird u.a. die DocID in dem Feld "docIDAkte" zwischengespeichert. Sobald der Benutzer auf die Aktion "Als Favorit ablegen" drückt, wird der Agent gestartet, der das unten angehängte Script ausführt.
Dieses Script soll das Dokument anhand der DocID finden und in den Ordner "Meine Akten" (am Besten als Kopie) ablegen.

Vielen Dank im Voraus.
Thorsten

Code
Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim dc As NotesDocumentCollection
	Dim doc As NotesDocument
	Dim Source As NotesUiDocument
	Dim currentDocument As NotesDocument
	
	Set currentDocument = Source.Document
	
	Set db = session.CurrentDatabase
	Set dc = db.FTSearch(currentDocument.GetItemValue("docIDAkte")(0),1)
	Set doc = dc.GetFirstDocument
	While Not(doc Is Nothing)
		Call doc.PutInFolder("Meine Akten",True)
		Set doc = dc.GetNextDocument(doc)
	Wend
End Sub
Viele Grüße
Thorsten

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Script PutInFolder
« Antwort #1 am: 11.03.09 - 09:56:23 »
Ist ja auch klar.

Source ist ja auch nothing.

Deklariert Ja, instanziert Nein.

Mach ein

dim workspace as new ui workspace

set currentdocument = workspace.currentdocument.document
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

BigWim

  • Gast
Re: Script PutInFolder
« Antwort #2 am: 11.03.09 - 09:58:52 »
Hallo Thorsten,

das aktuelle Dokument erhälst Du über die notesuiworkspace-Klasse, also

Dim uiws as new notesuiworkspace
dim source = uiws.currentdocument

Aber bei Agenten mit FrontEnd-Klassen ist immer ein wachsames Auge geboten ....

Markus

Offline Thorsten Kalweit

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re: Script PutInFolder
« Antwort #3 am: 11.03.09 - 10:04:39 »
Hallo zusammen,

vielen Dank für Eure Hilfe. Der Agent arbeitet nun so, wie es sein sollte.

Hier das funktionierende Script:
Code
Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim dc As NotesDocumentCollection
	Dim doc As NotesDocument
	Dim workspace As New Notesuiworkspace
	Dim currentDocument As NotesDocument
	
	Set currentDocument = workspace.currentdocument.document
	
	Set db = session.CurrentDatabase
	Set dc = db.FTSearch(currentDocument.GetItemValue("docIDAkte")(0),1)
	Set doc = dc.GetFirstDocument
	While Not(doc Is Nothing)
		Call doc.PutInFolder("Meine Akten",True)
		Set doc = dc.GetNextDocument(doc)
	Wend
End Sub
Viele Grüße
Thorsten

Driri

  • Gast
Re: Script PutInFolder
« Antwort #4 am: 11.03.09 - 10:07:49 »
Mit Option Declare wärst Du direkt auf den Fehler hingewiesen worden. Das sollte man sich im Programmers Pane als Standard setzen.

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Script PutInFolder
« Antwort #5 am: 11.03.09 - 10:15:28 »
Zitat
Mit Option Declare wärst Du direkt auf den Fehler hingewiesen worden. Das sollte man sich im Programmers Pane als Standard setzen.

Warum wäre er dann auf den Fehler gekommen? War doch alles deklariert .. nur nicht inztantiiert.
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Script PutInFolder
« Antwort #6 am: 11.03.09 - 10:23:44 »
Und ein Fehlerhandling, dann muss man wegen diesen 'Kleinkram' nicht immer debuggen.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Thorsten Kalweit

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re: Script PutInFolder
« Antwort #7 am: 11.03.09 - 10:35:45 »
Leider war ich ein wenig zu vorschnell.

Das Script kopiert nicht das gesuchte Dokument (Akten) in den Ordner, sondern das temporäre, aus dem es aufgerufen wird.

Kennt jemand einen anderen Lösungsansatz?
Viele Grüße
Thorsten

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Script PutInFolder
« Antwort #8 am: 11.03.09 - 10:48:28 »
Das ist ja auch logisch - Du verlangst es ja so: Du suchst nach einem String, der im aktuellen Dokument vorkommt - und dann beschränkst Du das Ergebnis noch auf genau ein Dokument.

Bernhard

Offline Thorsten Kalweit

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re: Script PutInFolder
« Antwort #9 am: 11.03.09 - 10:59:31 »
Ich dachte, dass ich mit FTSearch in der gesamten Datenbank suche.

Ich möchte anhand der DocumentUniqueID und der Form "frmAkte" suchen. ...  :-:
Viele Grüße
Thorsten

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Script PutInFolder
« Antwort #10 am: 11.03.09 - 11:02:19 »
Natürlich sucht FTSearch in der ganzen DB. Dein offenes Dokument gehört aber auch zur DB, oder?  ;)

Warum fasst Du Dein FTSearch syntaktisch nicht strenger und gibst auch die Itemnamen mit an, in denen Du Deine Werte erwartest?

Bernhard

Offline Thorsten Kalweit

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re: Script PutInFolder
« Antwort #11 am: 11.03.09 - 11:38:59 »
öööööhhm ja  ???

Ich mache gerade meine ersten Schritte in Script  ;)
Viele Grüße
Thorsten

Offline Thorsten Kalweit

  • Aktives Mitglied
  • ***
  • Beiträge: 115
  • Geschlecht: Männlich
Re: Script PutInFolder
« Antwort #12 am: 11.03.09 - 11:49:13 »
So!

Habs dann jetzt so gelöst  ;D ... bin sehr stolz auf mich :P Learning by Doing

Code
Sub Initialize
	
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim vc As NotesViewEntryCollection
	Dim workspace As New Notesuiworkspace
	Dim currentDocument As NotesDocument
	Set db = session.CurrentDatabase
	Set currentDocument = workspace.currentdocument.document
	
	Set view = db.GetView("(alleAktenNachDocID)")
	Set vc = view.GetAllEntriesByKey(currentDocument.GetItemValue("docIDAkte")(0))
	Call vc.PutAllInFolder("Meine Akten")
End Sub

... und es funktioniert super
Viele Grüße
Thorsten

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Script PutInFolder
« Antwort #13 am: 11.03.09 - 11:58:12 »
Sauber  ;)

Bernhard

Driri

  • Gast
Re: Script PutInFolder
« Antwort #14 am: 11.03.09 - 13:36:41 »
@Dirk :

Sorry, hatte ich überlesen.  :-[

Schaden kann Option Declare aber trotzdem nicht  ;)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz