Domino 9 und frühere Versionen > Entwicklung
Scriptoptimierung
Don Pasquale:
Hallo Leute,
ich habe folgende Funtion das QueryOpen Ereignis des Ordners eigene Dokumente hinterlegt (bzw. ic rufe diese Funktion aus meiner Library.
Das Skript ist nicht besonders performant, aber es funktioniert.
Hat jemand eine Idee, wie ich das Skript verbessern könnte ?
Das braucht ungefähr 6 Sekunden, bei genausovielen Dokumenten in der View "(e4vwinternmitarbeiter)"
Hat jemand eine Idee ?
Vielen Dank
Don Pasquale
--- Code: ---Function OrdnerEigeneDokumenteAktualisieren
Dim ws As NotesUiWorkspace
Dim workspace As New NotesUiWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim user As String
user = session.UserName
Dim view As NotesView
Dim temp As Variant
Dim dc As NotesDocumentCollection
Dim uidoc As NotesUIDocument
Dim doc As notesdocument
Set view = session.Currentdatabase.GetView("(e4vwInternMitarbeiter)")
Set dc = view.GetAllDocumentsByKey(user, True)
Set doc = dc.GetFirstDocument
While Not doc Is Nothing
Call doc.PutInFolder( "Eigene Dokumente" )
Set doc = dc.getnextdocument(doc)
Wend
Set view = session.Currentdatabase.GetView( "Eigene Dokumente" )
Call workspace.ViewRefresh
End Function
--- Ende Code ---
tower:
Function OrdnerEigeneDokumenteAktualisieren
Dim ws As NotesUiWorkspace
Dim workspace As New NotesUiWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim user As String
user = session.UserName
Dim view As NotesView
Dim temp As Variant
Dim dc As NotesDocumentCollection
Dim uidoc As NotesUIDocument
Dim doc As notesdocument
Set view = session.Currentdatabase.GetView("(e4vwInternMitarbeiter)")
Set dc = view.GetAllDocumentsByKey(user, True)
Set doc = dc.GetFirstDocument
While Not doc Is Nothing
Call doc.PutInFolder( "Eigene Dokumente" )
Set doc = dc.getnextdocument(doc)
Wend
Set view = session.Currentdatabase.GetView( "Eigene Dokumente" )
Call workspace.ViewRefresh
End Function
die fetten Zeilen sind meiner meinung nach unnötig
tower:
Set view = session.Currentdatabase.GetView("(e4vwInternMitarbeiter)")
geht einfacher mit
set view = db.GetView("(e4vwInternMitarbeiter)")
weil, db hast du schon belegt...
Don Pasquale:
Hallo Uwe,
vielen Dank, das habe ich glatt übersehen,
leider beeinflusst es die Performanz nicht besonders.
Ich vermute mal, das vor allem das PutInFolder so lange dauert
hmm
Don Pasquale
eknori:
So, hab auch mal ein bisschen rumoptimiert:
Hab auch gleich ne SUB draus gemacht; eine Funktion ohne Rückgabewert macht irgendwie keinen Sinn.
Sub OrdnerEigeneDokumenteAktualisieren
Dim ws As New NotesUiWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim dc As NotesDocumentCollection
user$ = s.UserName
Set db = s.CurrentDatabase
Set view = db.GetView("(e4vwInternMitarbeiter)")
Set dc = view.GetAllDocumentsByKey(user$, True)
'oder gleich mit
' Set dc = view.GetAllDocumentsByKey(s.UserName, True)
Call dc.PutAllInFolder( "Eigene Dokumente" )
Set view = db.GetView( "Eigene Dokumente" )
Call ws.ViewRefresh
End Sub
Gegebenenfalls kann man dieses ganze DIM zeugs auch aus der Sub rausnehmen und in den Deklarationsteil packen.
Dann brauchst du den Kram nicht bei jeder Sub oder Function neu zu definieren.
dann hätte man idealerweise folgende Sub
Sub OrdnerEigeneDokumenteAktualisieren
Set db = s.CurrentDatabase
Set view = db.GetView("(e4vwInternMitarbeiter)")
Set dc = view.GetAllDocumentsByKey(s.UserName, True)
Call dc.PutAllInFolder( "Eigene Dokumente" )
Set view = db.GetView( "Eigene Dokumente" )
Call ws.ViewRefresh
End Sub
eknori
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln