vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Dateien schreiben und lesen - Was ist die schnellste Zugriffsmethode? 
Autor: tomybyte
Datum: 20.11.19 15:10

Für eine VBA Anwendung müssen laufend Daten ausgetauscht werden. Dies soll durch eine Transfer-Datei geschehen. Dazu werden Daten aus dieser Datei zum Start der Anwendung eingelesen und am Ende wieder in die gleiche Datei geschrieben. Optional auch auf Befehl soll dieser Vorgang ausgeführt werden können.

Mit dem Open-Befehl gibt es die Möglichkeit, auf Dateien von VBA aus zuzugreifen.
Z.B.
Open [Filepath] For [Modus] As #1
Der Unterschied liegt vor allem im Zugriffs-Modus. Hier gibt es Input, Output, Append, Random usw.
Der Zugriff erfolgt dann über entsprechende Methoden zum Lesen und Schreiben.

Dazu gibt es aber noch direkte Zugriffsmöglichkeiten über Read, ReadLine, Write, WriteLine als Zugriffsmethode des FileSystemObjects der Scripting Bibliothek

Meine Frage: Welcher Ansatz liefert dafür die beste Performance, d.h. erfolgt der Datenaustausch am schnellsten?

Oder wäre es am sinnvollsten den Austausch über XML zu steuern und den XML File wie eine Datenbank einzubinden, dann könnten Daten direkt gelesen und ggf. geändert werden.

Danke und Gruß
Tom
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien schreiben und lesen - Was ist die schnellste Zugriffsmethode? 
Autor: effeff
Datum: 20.11.19 23:01

Wie wäre es mit einer schlichten INI-Datei?

https://www.vbarchiv.net/workshop/details.php?id=21

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien schreiben und lesen - Was ist die schnellste Zugriffsmethode? 
Autor: Wobi
Datum: 21.11.19 03:08

Hallo Tom,
die entscheidende Frage was für dein Problem am sinnvollsten ist, kann man nur beantworten wenn man Informationen über die Häufigkeit und die Datenmenge hat was da gespeichert werden soll. Und wie groß die Datei im Laufe der Zeit werden soll.

Irgendwann bietet sich eine Datenbank an anstatt einer Textdatei oder ähnlichem. (Ini Datei ist schon mal gut)

Beschreibe doch mal genauer dein Problem.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien schreiben und lesen - Was ist die schnellste Zugriffsmethode? 
Autor: tomybyte
Datum: 21.11.19 11:22

Hallo Frank,

danke für deine Rückmeldung.
Problem ist hier nicht der richtige Begriff.
Es handelt sich um eine Anwendung in/für Outlook. Dieses liest beim Start von anderen Office Anwendungen erstellte Termine (Appoinments) ein, aktualisiert mit diesen Daten den aktuellen Kalender und schreibt beim Schließen ggf. erfolgte Änderungen in Outlook zurück. Der Einfachheit halber wird immer die komplette Datei gelesen und auch komplett zurückgeschrieben.
Für 100 Einträge sollte das noch kein Problem machen. Wenn man allerdings eine Anwendung entwickelt, ist es sinnvoll, sich Gedanken über mögliche Performance-Bremsen und Bottlenecks zu machen. So suche ich einfach nach dem schnellsten Zugriffsverfahren.

Eine Datenbank scheidet eher aus. Microsoft selbst speichert ja alles für Outlook in der PST/OST Datei und verwendet keine Datenbank. Letztlich finden auch Datenbankzugriffe auf Dateiebene statt.

Zurzeit mach ich das einfach über eine Textdatei, die mit Input/Input$(LOF(1), #1) komplett eingelesen und entsprechend geschrieben wird. Zurzeit reicht dies. Wollte wissen was schneller wäre.
Der XML Ansatz hätte den Vorteil, dass nur Nodes gelesen und geschrieben werden müssen und nicht die ganze Datei.

Gruß Tom
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien schreiben und lesen - Was ist die schnellste Zugriffsmethode? 
Autor: tomybyte
Datum: 21.11.19 16:46

Danke effeff. Eine Ini Datei für Kalender-Daten (siehe meine Antwort auf Franks Beitrag) kam mir bislang nicht in den Sinn, aber vielleicht wäre der Zugriff über die Windows-API tatsächlich sehr schnell. Müsste ich mal testen.
PS: Lautet der ostfriesische Spruch nicht eigentlich "Eala Frya Fresena"
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien schreiben und lesen - Was ist die schnellste Zugriffsmethode? 
Autor: Wobi
Datum: 22.11.19 01:36

Hallo Tom,
du hast natürlich recht, dass es schneller ist nur einen Teil schreiben/lesen zu müssen als die Gesamte Datei.
Also dein XML oder INI Ansatz ist schon ok. Noch weiter optimieren könntest du evtl. indem du die Dateigröße dahingehend minimierst, dass bei dem Kalender nur aktuelle bzw. in Zukunft liegende Termine eingelesen werden und geschrieben werden.

Da könntest du mit zwei Dateien arbeiten, eine für den täglichen Gebrauch und eine zu Archivzwecken wenn jemand mal einen Termin von vor x Jahren aufrufen möchte.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien schreiben und lesen - Was ist die schnellste Zugriffsmethode? 
Autor: effeff
Datum: 22.11.19 20:34

//Eine Datenbank scheidet eher aus. Microsoft selbst speichert ja alles für Outlook in der PST/OST Datei und verwendet keine Datenbank.//

Könnte es sein, dass das aus Microsoft-Sicht dann doch Datenbanken sind?

100 Einträge ist nicht viel, aber auch nicht wenig. Ich würde dann tatsächlich XML oder SQLite nehmen.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien schreiben und lesen - Was ist die schnellste Zugriffsmethode? 
Autor: tomybyte
Datum: 23.11.19 12:20

Danke effeff für die Rückmeldung.
effeff schrieb:
Zitat:

//Eine Datenbank scheidet eher aus. Microsoft selbst
speichert ja alles für Outlook in der PST/OST Datei und
verwendet keine Datenbank.//
Könnte es sein, dass das aus Microsoft-Sicht dann doch
Datenbanken sind?

Intereassante Frage.
Überhaupt wäre es interessant mal verschiedene Ansätze zu implementieren und die Performance zu messen. Leider gibt das Budget dieses Projektes das nicht her und meine Zeit ist knapp.
Danke und Gruß
Tom
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel