Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: botschi am 09.10.06 - 15:32:15
-
Hallo,
ich bastel mir ein Dokument zusammen und will es über einen Knopf in einer Ansicht anzeigen. Das Dok wird nicht gespeichert, sondern soll lediglich zur Anzeige gebracht werden.
Das geht auch.
Wenn ich das Dokument mit
dialogbox = ws.DialogBox("frm_Stundenuebersicht",True,True,False,True,True,True,"Meine Stundenübersicht", curdoc,True) öffnen will, dauert es sehr lange. Bis zu 3 Minuten. Alle vorherigen Zeilen werden sehr schnell abgearbeitet, aber die Dialogbox ist sehr langsam.
Auch wenn ich das Dokument über
Call ws.EditDocument(False,curdoc, True)
öffne, dauert es sehr lange.
Kennt jemand einen Rat, wie ich das schneller öffnen kann? Liegt es am Workspace?
Mittlerweile interessiert mich nur, wie ich es schneller machen kann und nicht die Ursache... Die User beschweren sich bei mir und ich muss gestehen auch nicht zu unrecht >:(
Danke für Rat!
Gruss, Matthias
-
Hi,
um mehr sagen zu können müssen wir schon wissen was du in dem Dokument machst?
Wenn du z.B. viele viele Lookups machst dann dauern die auch entsprechend lange. Das oder aber auch etwas ganz anderes könnte das Problem sein.
Bitte beschreibe mehr.
-
Die Kristallkugel ist leider etwas beschlagen.... :-:
Mehr Input = mehr Output !
-
Hat Dein Form evtl. viele @Dblookup/@DBColumn Felder drin (z.B. in Auswahllisten oder Dialogboxen?)
Wenn Du das Form nicht in der Dialogbox öffnest, wie siehts da aus?
-
Das ist mein Code:
Dim ws As New NotesUIworkspace
Dim s As New NotesSession
Dim curdoc As notesdocument
Dim db As notesdatabase
Dim dialogbox As Variant
Set db = s.CurrentDatabase
Set curdoc = db.CreateDocument
curdoc.form = "frm_Button_Stundenuebersicht"
Dim Arbeitsmonat As notesdocument
Dim ArbeitsmonatView As NotesView
Dim Monat As String
Call monat_ermitteln(Monat)
Set ArbeitsmonatView = db.GetView("viwArbeitsmonat_alle")
Set Arbeitsmonat = ArbeitsmonatView.GetDocumentByKey(s.CommonUserName & Monat & Cstr(Year(Today)), True)
Call Arbeitsmonat.CopyAllItems(curdoc, True)
curdoc.Sollbisgestern = curdoc.arbeitstagebisheute(0) * curdoc.stundenkraft(0)
curdoc.StundenMonat = curdoc.Iststunden(0) - curdoc.Sollbisgestern(0)
curdoc.Gleitzeitsaldo = curdoc.StundenBeginnMonat(0) + curdoc.StundenMonat(0)
dialogbox = ws.DialogBox("frm_Arbeitsmonat_Stundenuebersicht",True,True,False,True,True,False,"Meine Stundenübersicht", curdoc,True)
Über einen Knopf in der Ansicht wird dieser Code ausgeführt. Die DB ist relativ gross (ca 5 GB).
Die Maske hat nur Felder, die berechnet zur Anzeige sind.
-
Hi,
und die Felder berechnen was???
Sich selber?!
-
Ja, die berechnen sich selber.
Ich kann da aber auch bearbeitbare Felder draus machen, da das Dok eh nicht bearbeitbar sein soll.
-
Hi,
wenn du debuggst, dann habe ich das richtig verstanden, das alles in einem Rutsch durchläuft bis zum Codeteil wo der Dialog aufgerufen wird!?
Oder hängt das an der Ansicht?
Warum kannst du nicht die Bezugsdatenbank verkleinern 5GB ist ja schon ein ganzer Haufen, können dort nicht auch Dokumente weg archiviert werden?
-
Richtig, beim debuggen läüft alles zügig, bis zum Aufruf der Dialogbox.
Die Ansicht ist so eingestellt, dass der Index sich manuell aufbaut. Aber auch aus anderen Ansichten heraus dauert es lange.
Ende des Jahres wird ein Grossteil der Dokumente archiviert, vielleicht geht es dann ja etwas schneller...
-
Wir haben die Ursache gefunden, warum sich die Dialogbox so schleppend öffnet.
Es gab eine relativ grosse Hide-When-Formel mit @DBLookup, die aber NICHT aktiviert war. Wir haben sie damals extra nicht entfernt, sondern nur den Haken, falls sie doch noch relevant wird irgendwann.
Ich habe nicht gewusst, dass Hide-When-Formeln auch ausgeführt werden, wenn sie deaktiviert sind!
Jedenfalls rennt das Ding jetzt ;D