1 1 1 1 1 1 1 1 1 1 Rating 4.17 (3 Votes)

Problemstellung:
In diesem Bsp hatte ich gezeigt wie ihr mittels der vbex32.dll Dateien in eine MS-Access DB eingelesen werden können.
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 ab A00 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:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
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. 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.
1
2
3
4
5
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. 

 
Dateien:
(0 Stimmen)

Bsp-DB zur Benutzung der tk_FileFunc.dll

Setup enthält folgende Dateien:

tk_FileList.mdb
tkFileFunc.dll
 
ab A00
Datum 05.02.2018
Dateigröße 329.6 KB
Download 1.465

Ähnliche Artikel

Kommentar schreiben

Sicherheitscode
Aktualisieren

Login Form

1.png1.png9.png8.png4.png0.png0.png
Heute71
Gestern75
Diese Woche392
Dieser Monat2054
Total1198400

  • IP: 54.81.102.236
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

1
Online

19. Juli 2018

Letzte Kommentare

  • Trusted Locations Manager

    Tommy Admin 13.07.2018 13:06
    RE: Trusted Locations Manager
    Hallo Matthias, aus Ermangelung einer 64bit Version kann ich das leider nicht prüfen. Tut mir leid. Gruss ...

    Weiterlesen...

     
  • Trusted Locations Manager

    Matthias 13.07.2018 06:48
    Funktioniert nicht
    Habe gerade den TL-Manager installiert. Nach dem Start sagt er mir, dass es kein Office erkennen ...

    Weiterlesen...