TKSoft-Online

Suchen und Einlesen von Dateien mit MS-Access II PDF Drucken E-Mail
( 2 Votes )
MS-Access Bsp. DB's - Bsp. Downloads Datei und System
  
Freitag, den 03. Juli 2009 um 18:12 Uhr

Problemstellung:

Nun war aus den Kommentaren zu entnehmen das diese Lösung Schwierigkeiten mit großen Dateimengen hat.
Also habe ich selbst eine DLL geschrieben, die wie ich hoffe, dieses Manko behebt.
Gerade unter A2007 wo die"Application.FileSearch-Methode" fehltist diese DLL ein wichtiges Hilsmittel.
Es sind noch ein paar andere Sachen in dieser DLL integriert, zu denen ich noch komme.
 

Voraussetzungen:

Das Bsp ist unter A00-A07 lauffähig.
Getestet unter WinXP, Win Vista 32Bit und Win7 64Bit
Die "tk_FileFunc.dll" ist eine VB6 ActiveX-DLL deshalb muss diese im System registriert werden.
Das übernimmt das Setup des Downloads.
Bei manueller Weitergabe muss die "tk_FileFunc.dll" mittels regsvr32.exe im System registriert werden.
 
Funktionsweise:

Folgende Funktionen sind in der DLL derzeit vorhanden:
 
- kompletter Datei- und Verzeichnis Dialog
- Suchen und Einlesen von Dateien mit und ohne Unterverzeichnissen und Wildcards
- Dateifunktionen wie Kopieren, Verschieben und Löschen auf API-Basis
- Verzeichnisse anlegen auch mit mehreren Unterverzeichnissen.
 
Dafür sind in der DLL 3 Klassen enthalten:
- cls_FileDialogDatei- und Verzeichnis Dialog
- cls_ListFilesSuchen und Einlesen von Dateien mit und ohne Unterverzeichnissen und Wildcards
- cls_FileFuncDateifunktionen wie Kopieren, Verschieben und Löschen auf API-Basis, Verzeichnisse anlegen
Zuerst muss die DLL per Verweis in die DB eingefügt werden
 
1. Datei- und Verzeichnis Dialog
 
Hier ein Bsp zum Aufruf des Verzeichnisauswahl Dialogs:

Private Sub cmd_Folder_Click()
    Dim cFD As New cls_FileDialog
    Dim sFolder As String

    With cFD
        .DialogTitle = "Bitte Startverzeichnis wählen"
        .ShowFolder
        sFolder = .FileName
        If .FileName = "" Then Exit Sub
    End With
End Sub

 
oder Datei Öffnen Dialog:


Private Sub cmd_Folder_Click()
    Dim cFD As New cls_FileDialog
    Dim sFile As String

    With cFD
        .DialogTitle = "Datei öffnen"
        .DefaultDir = "C:\"
        .DefaultExt = "*.mdb"
        .Filter1Text = "Access-Datenbanken"
        .Filter1Suffix = "*.mdb"
        .ShowOpen
        sFile = .FileName
        If .FileName = "" Then Exit Sub
    End With
End Sub

 
Alle weiteren Möglichkeiten können dem Objektkatalog entnommen werden.
 
2. Dateifunktionen
 
 
3. Suchen und Einlesen von Dateien mit und ohne Unterverzeichnissen und Wildcards
 
Kommen wir zum Kernstück der DLL.
Die Klasse cls_ListFiles  dient zum Einlesen der Dateien.
Wobei das Suchergebnis in einer Collection zurück gegeben wird.
In der Bsp-DB wird ein Listview mit dem Ergebnis gefüllt. Ihr könnt aber
genauso ein Listenfeld mittels Wertliste über die AddItem-Methode (ab AXP) füllen.
Hier ist aber darauf zuachten das bei der Werliste bei 4096 Zeichen Schluss ist und
somit bei vielen Dateien zu einer Fehlermeldung führt.
 
So könnte ein Aufruf aussehen:
Es werden alle Datei im Verzeichnis "D:\Daten" inklusive alle Unterverzeichnisse eingelesen.


Private Sub cmd_Folder_Click()

    Dim cLFs As New cls_ListFiles
    Dim x

    x = cLFs.ListFiles("D:\Daten""*.*"True)

End Sub

 
 
Über die Eigenschaft "Count" kann die Anzahl der gefundenen Dateien zurück gegeben werden.

MsgBox "Es wurden " & cLFs.Col_File.count & " Dateien nach den Kriterien gefunden"

 
In der Bsp.-DB ist es etwas komfortabler :
 
Hier sähe der Code dann so aus:

Private Sub cmd_Folder_Click()
    Dim sFolder As String
    Dim sFilter As String
    Dim x
    Dim i As Long

    With cFD
        .DialogTitle = "Bitte Startverzeichnis wählen"
        .ShowFolder
        sFolder = .FileName
        If .FileName = "" Then Exit Sub
    End With
    With oListView
        .ListItems.Clear
        .Refresh
    End With
    If IsNull(Me.txt_Filter) Then
        sFilter = "*.*"
    Else
        sFilter = Me.txt_Filter
    End If

    x = cLFs.ListFiles(sFolder, sFilter, Me.chk_SubFolder)

    MsgBox "Es wurden " & cLFs.Col_File.count & " Dateien nach den Kriterien gefunden"
    For i = 1 To cLFs.Col_File.count
        Set objListItem = oListView.ListItems.Add(, "a" & i, cLFs.Col_File(i))
    Next i
End Sub

 
 
Die For-Next Schleife am Ende durchläuft die Collection und fügt die Einträge dem Listview hinzu. 

Setup tkFileFunc-DLL

Bsp-DB zur Benutzung der tk_FileFunc.dll
Setup enthält folgende Dateien:

tk_FileList.mdb
tkFileFunc.dll

Für MS-Access ab A00-A07
getestet unter WinXP, Win Vista 32Bit und Win7 64Bit



Erstellt am
Dateigröße
Downloads
03.07.2009
329.6 KB
900

Downloads in dieser Kategorie

MS-Access Datei & System

MS-Access Datei & System

 Seite: 1

 Seite: 2


DatumKlicks
Total5507
Di. 2211
Mo. 212
So. 201
Sa. 192
Fr. 1810
Do. 172
Mi. 163
Aktualisiert ( Mittwoch, den 26. Januar 2011 um 07:31 Uhr )
 

Kommentare  

 
0 # Sebmi 2010-08-16 12:29
Hallo TommyK,

vielen Dank für Deine Arbeit, die Beschreibung liest sich sehr vielversprechen d. Leider bekomme ich es nicht zum Laufen. Ich scheine mich irgendwie zu dumm anzustellen. Access schreibt, dass eine unzulässige Verwendung des Schlüsselworts Me vorliege. Der Verweis ist integriert. Könntest Du mir vielleicht weiterhelfen?

Viele Grüße und Danke,
Basti
Antworten | Antworten mit Zitat | Zitieren
 
 
0 # TommyK 2010-08-30 18:27
Hallo Basti,

tut mir leid das ich erst jetzt antworte.

Funktioniert denn die Bsp-DB bei Dir?

Gruß Tommy
Antworten | Antworten mit Zitat | Zitieren
 

Kommentar schreiben


Sicherheitscode
Aktualisieren

Login

Latest Comments

Latest Forum Posts

Mehr »

Download Statistik

41 Kategorien
187 Dateien
173426 Downloads