Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: DominoAndy am 03.03.03 - 18:35:38
-
Hallo Leute,
habe ein Problem mit einem Skript von mir. Dies soll aus einer anderen Datenbank eine Vorlage zum auswählen bereitstellen und dann ein neues Dokument auf Basis dieser Vorlage erstellen. Leider stürzt in unregelmäßigen Abständen (mind. jeder 3. Versuch scheitert) der Notes-Client dabei ab. Dies ist auch an unterschiedlichen Rechnern so.
Hier der Code:
If ws.Dialogbox(DLG_OPT_NAME, True, True, False, False, False, False, DLG_OPT_TITLE, DlgDoc, True, False) Then
Print "Options..."
' hier werden ein paar Flags gesetzt.
Else
Exit Sub
End If
' Serienmail-Vorlage auswählen
Set coll = ws.PickListCollection( PICKLIST_CUSTOM, False, db.Server, TemplateDb.FilePath, PICK_VIEW, PICK_TITLE, PICK_PROMPT)
If coll.Count = 1 Then
Set TemplateDoc = coll.GetFirstDocument
Set SerialDoc = New NotesDocument( db )
Call TemplateDoc.CopyAllItems( SerialDoc , True )
SerialDoc.form = "SerialMemo"
Call SerialDoc.Save( True, True )
' ### ABSTURZ !!!! : ???
Set SerialUIDoc = ws.EditDocument(True, SerialDoc, False)
End If
Mach ich hier etwas falsch ???
Hoffe, mir kann jemand helfen und schonmal vielen Dank.
Andy
-
Hi,
schick' mir mal die DB damit ich reinschauen kann.
-
kannst du den Code mit den Deklarationen ins Netz hängen, das ist so ein halbes Gebilde...
...zum Erzeugen eines Dokumentes gehe ich einen anderen Weg...
Set doc = db.CreateDocument
... den dritten Parameter bei...
Set uidoc = ws.EditDocument( True , doc)
... lasse ich in der Regel weg - du sagst ja bereits, daß du im Bearbeitungsmodus sein möchtest - da braucht es kein ReadOnly=False - den verwendest du für EditMode = False, damit nicht zusätzlich in den EditMode gewechselt werden kann...
ata
-
O.K. - hier der gesamte Code, er wird in einer Aktion aufgerufen.
'Serienbrief: Optionen und Vorlage
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim session As New NotesSession
Dim coll As NotesDocumentCollection
Dim TemplateDb As NotesDatabase
Dim TemplateDoc As NotesDocument
Dim SerialDoc As NotesDocument
Dim SerialUIDoc As NotesUIDocument
Dim MailingDb As NotesDatabase
Const PICK_VIEW = "LookupTemplatesSerial"
Const PICK_TITLE = "Dokumentvorlagen"
Const PICK_PROMPT = "Wählen Sie eine Dokumentvorlage für diese Seriensendung aus..."
Const DLG_OPT_NAME = "dlgMailingOptions"
Const DLG_OPT_TITLE = "Mailing: Optionen"
Set db = session.CurrentDatabase
Set TemplateDb = session.GetDatabase( db.Server, "b_templates.nsf", False)
' ### Serienbrief: Optionen ###
Dim DlgDoc As NotesDocument
Set DlgDoc = db.CreateDocument
If ws.Dialogbox(DLG_OPT_NAME, True, True, False, False, False, False, DLG_OPT_TITLE, DlgDoc, True, False) Then
Print "Option: Adressauswahl " & DlgDoc.SerialBase(0)
Print "Option: In Adresse protokollieren: " & DlgDoc.SerialLogging(0)
' hier müssen dann FLAGS gesetzt werden....
Else
Exit Sub
End If
DlgDoc.Remove( True )
' ### Serienbrief: Vorlage ###
Set coll = ws.PickListCollection( PICKLIST_CUSTOM, False, db.Server, TemplateDb.FilePath, PICK_VIEW, PICK_TITLE, PICK_PROMPT)
If coll.Count = 1 Then
Set TemplateDoc = coll.GetFirstDocument
Set SerialDoc = New NotesDocument( db )
Call TemplateDoc.CopyAllItems( SerialDoc , True )
SerialDoc.form = "SerialMemo"
Call SerialDoc.Save( True, True )
Set SerialUIDoc = ws.EditDocument(True, SerialDoc, False)
End If
Andy
-
@DominoAndy
... hast du es mit meiner Variante des EditDocument versucht - ich vermute den Unruhestifter im dritten Parameter...
ata
-
@ata
...werde es morgen so versuchen, danke Dir erstmal !!!
Andy
-
@ata
habe nun bei EditDocument den dritten Paramter weggelassen
@doliman
Die Fehlerroutine habe ich auch eingebaut.
Also erstmal Danke an euch. Scheint allerdings nicht wirklich besser
zu werden. Hab es jetzt im Moment natürlich nur bei mir getestet.
Wenn das Teil nicht direkt wie erwähnt Abstürzt, tut Notes das spät.
beim Beenden von Notes. Es kommt dann die gleich Meldung...Speicher verweist auf blabla.....
Ehrlich gesagt bin ich ratlos ???
-
... mir fällt nochmal was auf...
... du verwendest ein DlgDoc, daß du für die Dialogbox verwendest. Nach der Dialogbox machst du einen dlgDoc.remove - wurde das dlgDoc denn gespeichert? erst dann lässt es sich löschen?
... ich denke du gibst dem dlgDoc ein SaveOptions = "0" mit auf den Weg und sparst dir den Remove...
ata ;)
-
Hi !
@ata
habe jetzt auch Deinen zweiten Tip versucht - leider ohne Erfolg.
Den Eintrag "DlgDoc.Remove" hatte ich auch erst gestern hinzugefügt, da ich dachte, es liegt daran, dass irgendwas am Speicher volläuft, bzw. eben unnötig hängen bleibt.
Spätestens wenn ich nach dem Erstellen eines Serienbriefs Notes schieße, bekomme ich diesen Fehler.
Vielleicht doch noch eine Idee ?
Andy