Search  

   

Latest News  

Problemstellung:Wenn man Etiketten drucken will steht man oft vor einigen Problemen.1. Man möchte nur ein paar Etiketten drucken und beim nächsten Druck braucht man wieder   ein neues Blatt weil freie...
   

Latest Forumposts  

  • Keine Beiträge vorhanden
   

Kommentare  

Tut mir leid Hella, ich kann Dir nicht folgen? 13.04.2017 - 14.04.2017 ergibt bei mir 1 13.04.2017 -...
Gast - Hella
Hallo, Berechne wie folgt, ob "zu früh" oder "zu spät" Rückmeldet. Früher sollte auch mit negativer ...
Gast - Hella
Hallo, mit negativen Werten meine ich z.B. -5 Tage (ohne Wochenende) u.ä. Zur Zeit wird nur die 0 au...
Hallo Hella, wie negative Werte? Kannst Du es erläutern was Du machen willst? Gruß Tommy
Gast - Hella
Hallo, ich bräuchte auch negative Werte bei der Anzahl, wie kann man das realisieren? Liebe Grüße He...
   

Counter  

1073012
HeuteHeute485
GesternGestern1118
Diese WocheDiese Woche2673
Dieser MonatDieser Monat13550
GesamtGesamt1073012
Highest 07.12.2017 : 1250
US
UNITED STATES
US

This page uses the IP-to-Country Database provided by WebHosting.Info (http://www.webhosting.info), available from http://ip-to-country.webhosting.info

   

Download Statistik  

Diese Site enthält 187 Downloads in 30 Kategorien. Gesamtdownloads bisher: 233294
   
Free live stats and visitor counter for Joomla, Wordpress, Drupal, Magento and Prestashop
   

Login

   

User Online

Total: 35 Members: 0 Guests: 35
No members online
   

Beiträge

Einlesen von Dateien in eine MS-Access Datenbank

Bewertung:  / 10
SchwachSuper 
Details

 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 String, Optional 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.

 

Dateien:
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
Datum 02.01.2008 Dateigröße 335.78 KB Download 5019

Einen Kommentar verfassen

Als Gast kommentieren

0 / 300 Zeichen Beschränkung
Dein Text sollte zwischen 10-300 Zeichen lang sein
Nutzungsbedingungen.

Personen in dieser Konversation

Lade vorherige Kommentare
  • Gast - Philtaer

    Hallo,<br /><br />ich suche schon (beinahe) Jahre nach eben einer solchen Lösung.<br />Das was ich hier nun fand ist schon fast perfekt. Eine echt klasse Lösung!<br /><br />Leider kenne ich mich speziell mit Access nicht aus...<br /><br />In der Auflistung selbst ist der Pfad und der Dateiname in getrennten Spalten aufgelistet.<br />In der ausgegebenen Tabelle später in der die Daten abgelegt werden ist dem aber nicht mehr so.<br /><br />Ich bräuchte das aber so... wie könnte ich das lösen?<br /><br />Vielen Dank für hilfreiche Tipps.

  • Gast - herrbartels

    Als Antwort auf: Gast - Philtaer

    die ausgelesenen Daten kann man über das "qry_Files"-Abfrage-File per copy/paste nach EXCEL bringen.<br /><br />habe das gleiche prob gehabt und so hats dann gut funktioniert und alles ist schön separat in spalten angegeben.

  • Gast - Thomas Keßler

    Als Antwort auf: Gast - Philtaer

    Ja, das wird das Beste sein einen Thread im Forum zu öffnen.<br />Da kann ich Dir besser helfen.

  • Gast - Philtaer

    Als Antwort auf: Gast - Philtaer

    Hallo!<br />Hmmm vielleicht wäre es besser ich wende mich hilfesuchend ans Forum?<br />Wie gesagt. Bin absoluter Neuling was Access angeht...<br /><br />Den Tipp habe ich gelesen und erstmal geschluckt "(Hä... bitte was?)".<br />Dann hab ich gegoogelt.<br />Und dann hab ich ein wenig innerhalb der Datenbank gesucht.<br /><br />Da habe ich bei den Modulen dann das gefunden:<br />Beim Modul Modfiles:<br />1. Ermittelt den Pfad eines übergebenen Dateinamens (Pfad + Dateiname)<br />2. 'Neuen Inhalt in die Tabelle übertragen.<br />Ich nehme an ich muss da ein wenig basteln?<br /><br />Mal sehen was ich eventuell hinbekomme :-)<br />Danke für den Tipp!

  • Gast - Thomas Keßler

    Als Antwort auf: Gast - Philtaer

    Hallo,<br /><br />sieh Dir mal die Abfrage an auf die Listbox beruht.<br />Dort wird der komplette Pfad aufgesplittet.

  • Gast - HastyWheel

    Hallo Tommy,<br /><br />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?<br /><br />HastyWheel

  • Gast - Thomas Keßler

    Als Antwort auf: Gast - HastyWheel

    Hallo HastyWheel,<br /><br />Du hast Recht. Das ist schon mehrfach aufgefallen das bei sehr großen Datenmengen es zu Problemen kommt.<br />Da die DLL aber nicht von mir ist kann ich da nicht viel machen.

  • Gast - tarzanundlucy

    :-) <br />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 ... <br /><br />Gruß Marie

  • Gast - tarzanundlucy

    Als Antwort auf: Gast - tarzanundlucy

    Zu meinem o. g. Problem habe ich im Forum einen Thread aufgemacht:<br /><br />http://www.tksoft-online.de/MS-Access-Fragen-und-Antworten/42-Dateieigenschaften-auslesen.html#42<br /><br />Und hoffe auf viele Tipps!

  • Gast - Thomas Keßler

    Als Antwort auf: Gast - tarzanundlucy

    @Marie<br />erstmal danke für den Hinweis das es unter 2007 klappt.<br />

    Jetzt müsste ich nur noch herausfinden, wie man noch weitere Attribute, die im Explorer angezeigt werden, auslesen kann
    <br />Was meinst Du damit?<br /><br />Tommy