http://www.tksoft-online.de

ALLE |0-9 |A |B |C |D |E |F |G |H |I |J |K |L |M |N |O |P |Q |R |S |T |U |V |W |X |Y |Z

Themen MS-Access Bsp. DB's Bsp. Downloads Datei und System

Suche nach Schlagwort : MS-Access, VBA, Datei, Attribute


Suchen und Einlesen von Dateien mit MS-Access II PDF Drucken E-Mail
Benutzer Bewertung: / 1
SchlechtSehr gut 
 

Geschrieben von TommyK, am 03-07-2009 16:12

Views : 1539    

Favoriten : Keine

Veröffentlicht in : MS-Access Bsp. DB's, Bsp. Downloads Datei und System

Schlüsselworte : MS-Access, DLL, VBA, Datei, System

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 RC1 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:
Image
- 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
Image 
 
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"

 
Image
 
In der Bsp.-DB ist es etwas komfortabler :
Image
 
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.
 
 
 
 
 

 

Letztes Update : 16-09-2009 17:46

Favoriten Drucken Als E-mail versenden Ähnliche Artikel

Benutzerkommentare  RSS feed Kommentar
 

Durschnittliche Benutzerbewertung

   (0 Stimmen)

 

Keine Kommentare vorhanden

Füge deinen Kommentar hinzu



mXcomment 1.0.6 © 2007-2010 - visualclinic.fr
License Creative Commons - Some rights reserved
Keine Beiträge bisher.

Diskutiere...
Weiter >

Google Site Search

Google
Web TKSoft-Online
Google PageRank modul - Camelpark SEO centrum

Login

Latest Forum Posts

Last Comments

Einlesen von Dateien in eine...
DLL Fehler?
Hallo Swear, das ist keine...
11.02.10 15:37 Mehr...
von TommyK

Einlesen von Dateien in eine...
dll Probleme
Echt gute Programmsequenz. Ich hab nur...
11.02.10 10:40 Mehr...
von Swear

Berechnung von Kalenderwochen...
Falsche KW
Hallo MAG, schreibe: Dann erhälst...
18.01.10 17:10 Mehr...
von TommyK

Berechnung von Kalenderwochen...
Funktion gibt bei mir falsche KW aus.
Hallo, super Danke für den Tipp,...
18.01.10 13:14 Mehr...
von Mag

Passwort Generator
Oh Mann...
Danke Tommy, manchmal scheint man...
08.12.09 06:25 Mehr...
von Uwe

Download Statistik

1 Kategorien:33 1 Files:186 1 Downloads:142080 1 Traffic:
JoomlaWatch Stats 1.2.8_05-dev by Matej Koval