Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: DominoAndy am 03.03.03 - 18:35:38

Titel: Skriptproblem -> Absturz
Beitrag 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



Titel: Re:Skriptproblem -> Absturz
Beitrag von: doliman am 03.03.03 - 20:36:52
Hi,

schick' mir mal die DB damit ich reinschauen kann.
Titel: Re:Skriptproblem -> Absturz
Beitrag von: ata am 03.03.03 - 22:43:11
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
Titel: Re:Skriptproblem -> Absturz
Beitrag von: DominoAndy am 03.03.03 - 23:22:49
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
Titel: Re:Skriptproblem -> Absturz
Beitrag von: ata am 03.03.03 - 23:28:37
@DominoAndy

... hast du es mit meiner Variante des EditDocument versucht - ich vermute den Unruhestifter im dritten Parameter...

ata
Titel: Re:Skriptproblem -> Absturz
Beitrag von: DominoAndy am 03.03.03 - 23:43:30
@ata

...werde es morgen so versuchen, danke Dir erstmal !!!

Andy
Titel: Re:Skriptproblem -> Absturz
Beitrag von: DominoAndy am 04.03.03 - 09:33:18
@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  ???

Titel: Re:Skriptproblem -> Absturz
Beitrag von: ata am 04.03.03 - 11:12:00
... 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  ;)
Titel: Re:Skriptproblem -> Absturz
Beitrag von: DominoAndy am 04.03.03 - 15:06:51
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