TKSoft-Online

Einlesen von Dateien in eine MS-Access Datenbank PDF Drucken E-Mail
( 8 Votes )
MS-Access Bsp. DB's - Bsp. Downloads Datei und System
  
Donnerstag, den 03. Januar 2008 um 01:00 Uhr

Problemstellung:

Einlesen von Dateien, mit ohne ohne Unterverzeichnissen und Filterfunktion.

Voraussetzungen:

Das Bsp ist unter A00-A07lauffähig.

Funktionsweise:

Zur Funktionsfähigkeit wird die VBEx32.DLL benötigt. Diese muss sich im WindowsSystem-Verzeichnis
befinden und muss nicht registiert werden.

Desweiteren kommt in der Bsp-DB das ActiveX-Control sevListbox zum Einsatz.
Dieses Control wurde bei Installation registriert.
Es ist aber nur für das DEMO hier erforderlich, da man im Control komfortabel Spalten sortieren
kann und auch die Spaltenbreite automatisch angepasst wird.

Die Sub ReadFilesArray liest alle Dateien ein und schreibt diese in die Tabelle tbl_Files.
Dafür werden einige Funktionen der VBEx32.DLL aufgerufen.

Public Sub ReadFilesArray(strFolder As StringOptional intSubfolder As Integer = 0, _
                          Optional strFilter As String = "*.*")
'*******************************************
'Name:      ReadFilesArray   (Sub) benötigt die VBEx32.DLL
'Purpose:   Ermittelt alle Dateien aus einem Verzeichnis und schreibt diese in ein Array
'Author:    Thomas Keßler
'Date:      Januar 26, 2003, 09:01:34
'Inputs:    strFolder=Pfad, intSubfolder=mit Subfolder=1 ohne=0
'           strFilter=Dateifilter setzen
'Output:
'*******************************************

Dim db As DAO.Database, rs As DAO.Recordset
Dim varElement As Variant
Dim lCount As Long
Dim nBytes As Currency

' Löscht den Inhalt der Tabelle "tbl_Files"
CurrentDb.Execute "DELETE * FROM tbl_Files;"

' zunächst Anzahl Dateien ermitteln
lCount = VBEX_FileCount(strFolder, intSubfolder, strFilter, nBytes)

    If lCount = -1 Then
        MsgBox "Keine Dateien enthalten, keine CD eingelegt oder Laufwerk nicht bereit." _
               & vbNewLine & "Bitte legen Sie eine CD ein", vbCritical + vbOKOnly, "Fehler..."
        Exit Sub
    Else
        ' Array dimensionieren
        ReDim sFiles(lCount) As String

        ' Dateinamen ermitteln
        lCount = VBEX_FileList(strFolder, intSubfolder, strFilter, sFiles(), nBytes)

        'Neuen Inhalt in die Tabelle übertragen...
        Set db = CurrentDb()
        Set rs = db.OpenRecordset("tbl_Files", dbOpenDynaset)
        DoCmd.Echo False, "Bitte warten..., die Tabelle 'Files' wird mit Daten gefüllt"
        For Each varElement In sFiles()
            rs.AddNew
            rs("Datei") = strFolder & varElement
            rs("Dateigrösse") = FileLen(strFolder & varElement)
            rs("Dateidatum") = FileDateTime(strFolder & varElement)
            If GetAttr(strFolder & varElement) And vbReadOnly Then rs("ReadOnly") = -1
            If GetAttr(strFolder & varElement) And vbHidden Then rs("Hidden") = -1
            If GetAttr(strFolder & varElement) And vbSystem Then rs("System") = -1
            If GetAttr(strFolder & varElement) And vbArchive Then rs("Archiv") = -1
            If GetAttr(strFolder & varElement) And 2048 Then rs("Komprimiert") = -1
            rs.Update
            DoEvents
        Next
    End If
    DoCmd.Echo True
    MsgBox "Es wurden " & lCount + 1 & " Dateien eingelesen.", vbInformation + vbOKOnly, "Erfolg"
    rs.Close
    db.Close
End Sub



Folgende Werte werden ermittelt und in die DB geschrieben: 1. kompletter Pfad und Dateiname
2. Dateigrösse in Bytes
3. Dateidatum
4. Die Attribute "ReadOnly", "Versteckt", "System", "Archiv" und "Komprimiert"

Im Formular wird oben als erstes ein Verzeichnis gewählt:

Im nächsten Schritt wird in der Optionsgruppe fesgelegt ob nur das angegebene Verzeichnis einlesen wird oder einschließlich vorhandener Unterverzeichnisse.

 

Dann erfolgt die Eingabe des Filters.
Bei Nichteingabe wird der Standardwert "*.*" gesetzt.
Es sind aber ein paar Dinge zubeachten die vom Standard der Wildcards abweichen:

Mögliche Eingaben wären z.B.:
*.* ist der Standarwert und liest alle Dateien ein
*.zip würde alle Zip-Dateien einlesen
test*.xls würde alle Excel-Dateien einlesen, die mit test.. beginnen.
?est*.xls würde alle Excel-Dateien einlesen, die mit est.. beginnen, z.B. test..., pest...
Nicht gelesen würde aber ppest... hier müsste ??est*.xls gesetzt werden.
*.md* würde alle Access Dateien, mdb, mda, mde usw. einlesen

 

Mit einem Klick auf den Button "Dateien Einlesen" erfolgt das Einlesen.

Im Listenfeld erfolgt dann die Ausgabe des Ergebnisses:
Die Spaltenbreite passt sich automatisch dem breitesten Eintrag an
Mit einem Klick auf den Spaltenkopf lässt sich jede Spalte sortieren.

Download nur für registrierte User

Einlesen von Dateien

Einlesen von Dateien, mit oder ohne Unterverzeichnissen und Filterfunktion
in eine MS-Access Datenbank
für A00-A03 , A07 nicht getestet

Der Download ist eine Setup.exe
Diese Kategorie erfordert eine Registrierung um Daten downloaden zu können.
Sollten Sie bereits registriert sein, so melden Sie sich bitte an.




Erstellt am
Dateigröße
Downloads
02.01.2008
335.78 KB
3828

 

Downloads in dieser Kategorie

MS-Access Datei & System

MS-Access Datei & System

 Seite: 1

 Seite: 2


DatumKlicks
Total18554
Mi. 0825
Di. 0714
Mo. 0622
So. 055
Sa. 0415
Fr. 0323
Do. 0222
Aktualisiert ( Mittwoch, den 26. Januar 2011 um 07:33 Uhr )
 

Kommentare  

 
0 # tarzanundlucy 2008-02-27 19:02
:-)
funktioniert auch unter Access 2007 problemlos! Jetzt müsste ich nur noch herausfinden, wie man noch weitere Attribute, die im Explorer angezeigt werden, auslesen kann ...

Gruß Marie
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # TommyK 2008-02-27 19:20
@Marie
erstmal danke für den Hinweis das es unter 2007 klappt.
Zitat:
Jetzt müsste ich nur noch herausfinden, wie man noch weitere Attribute, die im Explorer angezeigt werden, auslesen kann

Was meinst Du damit?

Tommy
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # tarzanundlucy 2008-02-27 20:49
Zu meinem o. g. Problem habe ich im Forum einen Thread aufgemacht:

http://www.tksoft-online.de/MS-Access-Fragen-und-Antworten/42-Dateieigenschaften-auslesen.html#42

Und hoffe auf viele Tipps!
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # HastyWheel 2008-09-13 09:57
Hallo Tommy,

habe heute Deine BspDB zum einlesen aller Dateien heruntergeladen . Ich möchte eine große Sammlung von Dateien organisieren (ca 120.000 Dateien in ca 20.000 Foldern/subFoldern. Das Programm läuft zwar problemlos jedoch werden trotz Filter *.* nur 9324 Dateien eingelesen. Gibt es eine Restriktion in der DB?

HastyWheel
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # TommyK 2008-09-13 10:05
Hallo HastyWheel,

Du hast Recht. Das ist schon mehrfach aufgefallen das bei sehr großen Datenmengen es zu Problemen kommt.
Da die DLL aber nicht von mir ist kann ich da nicht viel machen.
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # Philtaer 2009-03-23 04:14
Hallo,

ich suche schon (beinahe) Jahre nach eben einer solchen Lösung.
Das was ich hier nun fand ist schon fast perfekt. Eine echt klasse Lösung!

Leider kenne ich mich speziell mit Access nicht aus...

In der Auflistung selbst ist der Pfad und der Dateiname in getrennten Spalten aufgelistet.
In der ausgegebenen Tabelle später in der die Daten abgelegt werden ist dem aber nicht mehr so.

Ich bräuchte das aber so... wie könnte ich das lösen?

Vielen Dank für hilfreiche Tipps.
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # TommyK 2009-03-23 04:26
Hallo,

sieh Dir mal die Abfrage an auf die Listbox beruht.
Dort wird der komplette Pfad aufgesplittet.
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # Philtaer 2009-03-23 10:26
Hallo!
Hmmm vielleicht wäre es besser ich wende mich hilfesuchend ans Forum?
Wie gesagt. Bin absoluter Neuling was Access angeht...

Den Tipp habe ich gelesen und erstmal geschluckt "(Hä... bitte was?)".
Dann hab ich gegoogelt.
Und dann hab ich ein wenig innerhalb der Datenbank gesucht.

Da habe ich bei den Modulen dann das gefunden:
Beim Modul Modfiles:
1. Ermittelt den Pfad eines übergebenen Dateinamens (Pfad + Dateiname)
2. 'Neuen Inhalt in die Tabelle übertragen.
Ich nehme an ich muss da ein wenig basteln?

Mal sehen was ich eventuell hinbekomme :-)
Danke für den Tipp!
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # TommyK 2009-03-23 10:37
Ja, das wird das Beste sein einen Thread im Forum zu öffnen.
Da kann ich Dir besser helfen.
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # herrbartels 2009-03-25 20:44
die ausgelesenen Daten kann man über das "qry_Files"-Abfrage-File per copy/paste nach EXCEL bringen.

habe das gleiche prob gehabt und so hats dann gut funktioniert und alles ist schön separat in spalten angegeben.
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # herrbartels 2009-03-25 18:07
ich bekomme den export nach EXCEL nicht hin.

ich bräuchte aber den ausgelesenen bestand als .xls-file zur weiteren bearbeitung.

kann mir wer helfen?

VIELEN DANK...
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # Swear 2010-02-11 12:40
Echt gute Programmsequenz .
Ich hab nur leider Folgendes Problem.
Beim debuggen kommt immer der LAufzeitfehler 453: Die dll besitzt keinen Einstiegspunkt. Als ich die dll registrieren wollte, kam genau die gleiche Fehlermeldung. Wenn ich die dll per Verweise hinzufügen will, kommt der Fehler: Verweis auf angegebene Datei kann nicht hinzugefügt werden. Was mach ich falsch?
Gruß
Swear
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # TommyK 2010-02-11 17:37
Hallo Swear,

das ist keine ActiveX-DLL braucht deshalb auch nicht registriert werden.
Die Funktionen werden, wie bei einer richtigen DLL, per Declare-Anweisung
aufgerufen.
s. Modul "mod_files" in der Bsp-DB. Dieses Modul muss mit übernommen werden.
Code:Public Declare Function VBEX_FileCount Lib "vbex32.dll" _
Alias "VBFILECOUNT" ( _
ByVal sPath As String, _
nSubFolder As Integer, _
ByVal sFilter As String, _
nBytes As Currency) As Long
'....
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # WP002 2010-05-24 18:57
Ich hatte schon zahlreiche Share- und Freeware-Programme zum Katalogisieren meiner PC-Heft-CD's getestet, bisher aber keine Lösung finden können, die meinen Vorstellungen annähernd entspricht. Auf der Basis dieser Access-Lösung kann ich nun einen auf meine Bedürfnisse zugeschnittenen Katalog der auf den CD's befindlichen Programme aufbauen. Weitere Einsatzzwecke: Erfassung der auf Festplatten gespeicherten Filme, Download-Listen, Auflistung installierter Programme u.v.a.m.
Antworten | Antworten mit Zitat | Zitieren
 

Kommentar schreiben


Sicherheitscode
Aktualisieren

Login

Latest Comments

Latest Forum Posts

Mehr »

Download Statistik

41 Kategorien
187 Dateien
168515 Downloads