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.
Die Tabelle tblDateien sieht nach dem Einfügen einer Datei wie in Bild 3 aus.