Access macht Installationsarbeit

Datensatz anlegen

Nach dem Deklarationsteil öffnet die Funktion zunächst eine Datensatzgruppe auf Basis der in der Konstanten TABELLE gespeicherten Tabelle, die entweder keinen Datensatz (falls die Datei das erste Mal importiert wird) oder den Datensatz mit der angegebenen Dateibezeichnung enthält (in einer Zeile):

rst.Open "SELECT Datei, Dateibezeichnung FROM " & TABELLE
& " WHERE Dateibezeichnung = '" & strDateibezeichnung
& "'", cnn, adOpenDynamic, adLockOptimistic

Wenn der Datensatz noch nicht vorhanden ist, legt die Funktionen einen passenden Datensatz an:

If rst.EOF Then
rst.AddNew
End If

Anschließend liest die Funktion die Datei zunächst in ein Byte-Array namens Buffer ein. Dazu weist sie der Variablen lngImportdateiID mit der Funktion FreeFile zunächst eine freie Nummer für den Dateizugriff zu. Nach der Prüfung, ob die angegebene Datei vorhanden ist, öffnet die Funktion sie für lesenden Zugriff:

Open strDatei For Binary Access Read As lngImportdateiID

Dann bereitet die Funktion das Byte-Array für das Aufnehmen der Datei vor, indem sie die Größe der Datei ermittelt und das Byte-Array entsprechend dimensioniert:

lngDateigroesse = FileLen(strDatei)
ReDim Buffer(lngDateigroesse)

Das Einlesen der Datei in das Byte-Array erfolgt schließlich mit der Get-Anweisung:

GetlngImportdateiID, , Buffer

Fehlt noch das Speichern in der Tabelle. Dazu leert die Funktion zunächst das Feld Datei, fügt die Dateibezeichnung in das passende Feld ein und verwendet die AppendChunk-Methode, um den Inhalt des Byte-Arrays Buffer in das OLE-Feld Datei der Tabelle zu schreiben. Die Update-Methode schließlich speichert die Änderungen:

rst!Datei = Null
rst!Dateibezeichnung = strDateibezeichnung
rst!Datei.AppendChunk Buffer
rst.Update

Der folgende Aufruf der Funktion speichert die Datei c:\Test.txt in der Tabelle tblDateien und schreibt gleichzeitig den Wert Testdatei in das Feld Dateibezeichnung:

Debug.Print DateiInTabelle("Testdatei",
"c:\test.txt")

Die Debug.Print-Anweisung sorgt dafür, dass der Rückgabewert der Funktion im Direktfenster ausgegeben wird. Dieser ist entweder -1, wenn keine Fehler auftreten, oder eine entsprechende Fehlernummer.

Bild 3: Die Tabelle tblDateien mit einer ersten Testdatei.
Bild 3: Die Tabelle tblDateien mit einer ersten Testdatei.

Die Tabelle tblDateien sieht nach dem Einfügen einer Datei wie in Bild 3 aus.