Autor Thema: VBA COM Anbindung wird immer langsamer  (Gelesen 2829 mal)

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
VBA COM Anbindung wird immer langsamer
« am: 22.10.18 - 14:48:13 »
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
     
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

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.873
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: VBA COM Anbindung wird immer langsamer
« Antwort #1 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...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.277
  • Geschlecht: Männlich
Re: VBA COM Anbindung wird immer langsamer
« Antwort #2 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
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
Re: VBA COM Anbindung wird immer langsamer
« Antwort #3 am: 22.10.18 - 15:34:28 »
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...

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

Produziert das das gleiche Problem?
Wenn ja wie kann ich das umgehen?
« Letzte Änderung: 22.10.18 - 15:45:23 von etofi »

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
Re: VBA COM Anbindung wird immer langsamer
« Antwort #4 am: 22.10.18 - 15:39:56 »
unterdrücke mal die Ausgabe in Access durch:
Code
Application.Echo False
'-- Code / Felder schreiben
Application.Echo true

Ok ich versuche es mal und berichte ob es was bringt.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: VBA COM Anbindung wird immer langsamer
« Antwort #5 am: 22.10.18 - 15:53:57 »
Das Script sieht ja ganz gut aus. Wenn es immer noch nicht besser wird, würde ich den Teil auskommentieren, der die Daten schreibt.

Ist es dann immer noch langsam, liegt es am Lesen aus Notes, ist es dann schnell, liegt es am Schreiben in Access. Dann suchst Du zumindest in der Nähe des Problems.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.277
  • Geschlecht: Männlich
Re: VBA COM Anbindung wird immer langsamer
« Antwort #6 am: 23.10.18 - 17:07:26 »
Vielleicht sind ja auch 7.000 Tabellen in Access einfach zu viel des Guten? Ich würde die Tabellen nach Dokumententyp/Form unterteilen, aber da ich deine Anforderungen nicht kenne ist es nur eine Idee ;)
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
Re: VBA COM Anbindung wird immer langsamer
« Antwort #7 am: 23.10.18 - 17:08:36 »
Vielleicht sind ja auch 7.000 Tabellen in Access einfach zu viel des Guten? Ich würde die Tabellen nach Dokumententyp/Form unterteilen, aber da ich deine Anforderungen nicht kenne ist es nur eine Idee ;)

Sind ja auch nicht 7.000 Tabellen sondern eine Tabelle mit 7000 Datensätzen  ;)

Offline Gutierrez

  • Aktives Mitglied
  • ***
  • Beiträge: 112
Re: VBA COM Anbindung wird immer langsamer
« Antwort #8 am: 25.10.18 - 15:18:38 »
Hallo etofi,

wird in der Schleife NotesDocumentCollection.Count abgefragt? Verlangsamt auch. Einmal vorher in einer Variablen speichern.

Sonst in der Schleife evtl. Listen oder Objekte mit Listen, die nicht korrekt freigegeben werden?

Beste Grüße
Gutierrez

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
Re: VBA COM Anbindung wird immer langsamer
« Antwort #9 am: 25.10.18 - 17:58:29 »
Hallo etofi,

wird in der Schleife NotesDocumentCollection.Count abgefragt? Verlangsamt auch. Einmal vorher in einer Variablen speichern.

Sonst in der Schleife evtl. Listen oder Objekte mit Listen, die nicht korrekt freigegeben werden?

Beste Grüße
Gutierrez

Ne das ist es nicht.

Das Script sieht ja ganz gut aus. Wenn es immer noch nicht besser wird, würde ich den Teil auskommentieren, der die Daten schreibt.

Ist es dann immer noch langsam, liegt es am Lesen aus Notes, ist es dann schnell, liegt es am Schreiben in Access. Dann suchst Du zumindest in der Nähe des Problems.

Der Hinweis war gut. Das eigentliche Auslesen geht sehr viel schneller wenn ich es ohne das Schreiben in die Access Tabellen mache.
Muss also am Schreibvorgang noch was optimieren.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz