Access macht Installationsarbeit

Raus aus der Tabelle

Um zu prüfen, ob der Import der Datei in die Tabelle auch funktioniert hat, gibt es wohl nur einen einzigen Weg: Man exportiert die Datei und prüft, ob sie mit der Originaldatei übereinstimmt. Da trifft es sich gut, dass Sie ohnehin eine Funktion zum Exportieren von Dateien aus einem OLE-Feld in das Dateisystem benötigen. Listing 2 zeigt die komplette Funktion TabelleIn- Datei im Überblick.

Public Function TabelleInDatei(strDateibezeichnung As String, strDatei As String)
As Long
Dim cnn As ADODB.Connection
Dim rst As New ADODB.Recordset
Dim lngExportdateiID As Long
Dim Buffer() As Byte
Dim lngDateigroesse As Long
On Error GoTo TabelleInDatei_Err
Set cnn = CurrentProject.Connection
rst.Open "SELECT Datei FROM " & TABELLE & " WHERE Dateibezeichnung = '"
& strDateibezeichnung & "'", cnn, adOpenDynamic, adLockOptimistic
lngExportdateiID = FreeFile
lngDateigroesse = Nz(LenB(rst!Datei), 0)
If lngDateigroesse > 0 Then
ReDim Buffer(lngDateigroesse)
Open strDatei For Binary Access Write As lngExportdateiID
Buffer = rst!Datei.GetChunk(lngDateigroesse)
Put lngExportdateiID, , Buffer
Close lngExportdateiID
End If
TabelleInDatei = True
TabelleInDatei_Exit:
rst.Close
Set rst = Nothing
Set cnn = Nothing
Exit Function
TabelleInDatei_Err:
TabelleInDatei = Err.Number
Debug.Print Err.Description
Resume TabelleInDatei_Exit
End Function

Die Funktion hat genau die gleichen Parameter wie die Funktion DateiInTabelle, allerdings dienen sie einem anderen Zweck: Der Parameter strDateibezeichnung legt nicht fest, unter welcher Dateibezeichnung die Datei gespeichert werden soll, sondern ermittelt den Datensatz mit der zu exportierenden Datei. Und der Parameter strDatei gibt an, unter welchem Namen die in dem OLE-Feld der Tabelle enthaltene Datei im Dateisystem gespeichert werden soll.

Der Ablauf der Funktion ähnelt ebenfalls dem der Funktion zum Importieren der Datei – die Daten gehen lediglich den umgekehrten Weg. Daher an dieser Stelle nur eine Kurzbeschreibung: Die Routine öffnet eine Datensatzgruppe mit der angegebenen Dateibezeichnung und erzeugt eine Datei, die anschließend mit dem Inhalt des OLE-Feldes gefüllt werden soll. Das Byte- Array Buffer wird in diesem Fall mit dem Inhalt des OLE-Feldes gefüttert. Die Put-Anweisung schreibt den Inhalt von Buffer in die zuvor geöffnete Datei – fertig!

Mit folgendem Aufruf schreiben Sie die zuvor in der Tabelle gespeicherte Datei in eine neue Datei namens TestExport.txt:

Debug.Print TabelleInDatei("Testdatei", "c:\TestExport. txt")