- Startseite
- Neuigkeiten
- Über mich
- Referenzen
- Beispiele
- Artikel
- Vorträge
- Tools
- Access-Tipps
- Excel-Tipps
- Spielereien
- Kontakt
- Impressum
- Datenschutz
Meine Projekte:
Es ist eine neue, verbesserte
Version 2.0
zum Download verfügbar.
Das Importieren von Daten in eine Datenbank
Wie Sie Daten häufig importieren, ohne die Datenbank mehr als nötig aufzublähen.
Wenn man regelmäßig Daten in eine Datenbank importiert und wieder löscht, bläht sich die Datenbank immer weiter auf, bis man sie komprimiert und damit den freien Platz wieder freigibt. Mit ein paar Zeilen Code kann man den Platzverbrauch auf die größte zu importierende Datenmenge beschränken.
Statt jedes Mal die vorhandenen Daten zu löschen und neue einzufügen, kann man auch die vorhandenen Daten überschreiben. Müssen mehr Sätze eingefügt werden als vorhanden, werden diese angehängt. Bei weniger Sätzen werden die überzähligen geleert. Bei der Auswahl muss man nur noch beachten, dass die leeren Datensätze nicht mit angezeigt werden.
Die Einlese-Prozedur
Private Sub sBilderEinlesen() Dim dbs As Database Dim rst As Recordset Dim lngTblCount As Long Dim lngFileCount As Long Dim lngPicCount As Long Dim strPfad As String Dim strDatei As String Set dbs = CurrentDb Set rst = dbs.OpenRecordset("tblBilder") ' Tabelle öffnen If Not rst.EOF Then ' Immer erst zum letzten DS gehen, rst.MoveLast ' bevor man die Anzahl feststellt rst.MoveFirst End If lngTblCount = rst.RecordCount ' Anzahl vorhandene DS in Tabelle strPfad = Me!txtPfad ' Pfad setzen. strDatei = Dir(Me!txtPfad, vbDirectory) ' Erste Datei im Verzeichnis abrufen Do While strDatei <> "" ' Solange noch Dateien da sind, einlesen ' Aktuelles und übergeordnetes Verzeichnis ignorieren. If strDatei <> "." And strDatei <> ".." Then ' Mit bit-weisem Vergleich sicherstellen, dass es kein Verzeichnis ist. If (GetAttr(strPfad & strDatei) <> vbDirectory) Then lngFileCount = lngFileCount + 1 If Right(strDatei, 3) = "jpg" Or _ Right(strDatei, 4) = "jpeg" Or _ Right(strDatei, 3) = "gif" Or _ Right(strDatei, 3) = "tif" Or _ Right(strDatei, 3) = "bmp" Or _ Right(strDatei, 3) = "png" Or _ Right(strDatei, 3) = "wmf" Then lngPicCount = lngPicCount + 1 If lngPicCount < lngTblCount Then ' Wenn schon DS in der Tabelle sind, diese überschreiben rst.Edit rst!bil_Name = strDatei rst.Update rst.MoveNext ElseIf lngPicCount = lngTblCount Then rst.Edit rst!bil_Name = strDatei rst.Update Else ' sonst neue DS einfügen rst.AddNew rst!bil_Name = strDatei rst.Update End If End If End If End If strDatei = Dir Loop Do While lngPicCount <= lngTblCount ' alle übrigen DS auf NULL setzen lngPicCount = lngPicCount + 1 If lngPicCount < lngTblCount Then rst.Edit rst!bil_Name = Null rst.Update rst.MoveNext ElseIf lngPicCount = lngTblCount Then rst.Edit rst!bil_Name = Null rst.Update End If Loop DoEvents Me!lstBilder.Requery ' Liste mit Tabellendaten füllen/erneuern DoEvents If Me!lstBilder.ListCount > 0 Then ' wenn Bilder vorhanden sind Me!lstBilder = Me!lstBilder.ItemData(0) ' erstes Bild wählen Call sBildAnzeigen ' Bild anzeigen Else ' sonst Me!lstBilder.RowSource = "" ' Bildauswahl löschen Me!picBild.Picture = "" ' Bild löschen End If On Error Resume Next rst.Close dbs.Close Set rst = Nothing Set dbs = Nothing End Sub
Tipp
Wenn Sie die Dateien nicht dauerhaft in der Datenbank benötigen, können Sie auch mit einer temporären "Tabelle" arbeiten. In der Tippdatenbank Dateien auflisten mit einem temporären Recordset zeige ich ein Beispiel, bei dem sogar das Anzeigen mehrerer Dateiparameter und das Sortieren nach Dateiname oder Parameter möglich ist.
Download
Import für Access 2016 (und neuer)
(Datei: Import.zip, ca. 60 KB)
Bitte denken Sie daran, dass Sie die Datei(en) nach dem Download Zulassen müssen.
Hier steht, warum und wie.
