Domino 9 und frühere Versionen > ND9: Entwicklung

VBA COM Anbindung wird immer langsamer

(1/2) > >>

etofi:
Hallo zusammen,

ich lese ca 7.000 Datensätze mit 70 Feldern in VBA über COM Anbindung ein und schreibe jedes Dokument in eine Access Tabelle weg.

Die Session erstelle ich folgendermaßen:


--- Code: ---'Starten einer  Notessession
Set objNotes = New NotesSession
objNotes.Initialize
--- Ende Code ---
     
Am Anfang geht das recht zügig aber je mehr Sätze eingelesen werden desto langsamer wird es.
Woran kann das liegen? Gibt es nen Befehl mit dem ich nach jedem Datensatz Cache oder vergleichbares freigeben kann damit es gleichbleibend schnell läuft?

Grüße
Eric

Tode:
Ich vermute mal schwer, dass es NICHT an der Schnittstelle liegt, sondern am umliegenden Code. Ihr habt nicht zufällig ein NotesDocumentCollection.GetNthDocument(x) im Code?

Das hat nämlich GENAU diese Auswirkung bei mehreren Dokumenten: Da steigt die Verarbeitungszeit gefühlt exponentiell an, je mehr Dokumente dazu kommen...

jBubbleBoy:
unterdrücke mal die Ausgabe in Access durch:

--- Code: ---Application.Echo False
'-- Code / Felder schreiben
Application.Echo true

--- Ende Code ---

etofi:

--- Zitat von: Tode am 22.10.18 - 15:02:07 ---Ich vermute mal schwer, dass es NICHT an der Schnittstelle liegt, sondern am umliegenden Code. Ihr habt nicht zufällig ein NotesDocumentCollection.GetNthDocument(x) im Code?

Das hat nämlich GENAU diese Auswirkung bei mehreren Dokumenten: Da steigt die Verarbeitungszeit gefühlt exponentiell an, je mehr Dokumente dazu kommen...

--- Ende Zitat ---

Ne GetNthDocument habe ich nicht drin. Ich mache folgendes:


--- Code: ---'Verweisen auf die gewünschte Datenbank
Set LNdb = objNotes.GETDATABASE(strServerName, strDBName)

If Not LNdb Is Nothing Then

   Set LNGefiltert = LNdb.SEARCH(strFilter, Nothing, 0)

   If Not LNGefiltert Is Nothing Then
   
       'Einlesen des ersten Dokuments
       Set LNDoc = LNGefiltert.GETFIRSTDOCUMENT
           
       While Not LNDoc Is Nothing

HIER WERDEN DIE DATEN IN ACCESS WEGGESCHRIEBEN

Set LNDoc = LNGefiltert.GETNEXTDOCUMENT(LNDoc)
             
       Wend
       
End if

End if
--- Ende Code ---

Produziert das das gleiche Problem?
Wenn ja wie kann ich das umgehen?

etofi:

--- Zitat von: jBubbleBoy am 22.10.18 - 15:02:45 ---unterdrücke mal die Ausgabe in Access durch:

--- Code: ---Application.Echo False
'-- Code / Felder schreiben
Application.Echo true

--- Ende Code ---


--- Ende Zitat ---
Ok ich versuche es mal und berichte ob es was bringt.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln