{"id":55000095,"date":"2003-02-01T00:00:00","date_gmt":"2020-10-18T13:32:43","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=95"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Dateien_einlesen_und_finden_mit_Access","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/","title":{"rendered":"Dateien einlesen und finden mit Access"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/77c389a6b0de4f9b81321ccd3d254b7e\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Christoph Spielmann, D&uuml;sseldorf, und Klaus Gie&szlig;en, Wuppertal<\/b><\/p>\n<p><b>Die Speicherkapazit&auml;t von Festplatten hat gerade in den letzten Jahren rasant zugenommen. Momentan sind Festplatten mit 80 bis 100 MB handels&uuml;blich, und Festplatten mit mehreren Terabyte f&uuml;r normale PC-Systeme bereits im Gespr&auml;ch. Mit zunehmender Gr&ouml;&szlig;e des zur Verf&uuml;gung stehenden Speicherplatzes w&auml;chst erfahrungsgem&auml;&szlig; auch die Anzahl der gespeicherten Dateien. Folglich wird die Suche nach bestimmen Dateien in solch gro&szlig;en Datenbest&auml;nden mit den &uuml;blichen Dateimanagern, wie beispielsweise dem Windows-Explorer, immer un&uuml;bersichtlicher und schwieriger &#8211; und vor allem: wesentlich zeitaufwendiger. Die hier vorgestellte L&ouml;sung zeigt Ihnen, wie Sie umfangreiche Datenbest&auml;nde mit Hilfe von Access in den Griff bekommen.<\/b><\/p>\n<p>Das Organisieren von Datenbest&auml;nden ist eine der bekannten Dom&auml;nen von Datenbanksystemen wie Access. Also liegt die Verwendung einer entsprechend gestalteten Datenbank zur Verwaltung und zur Suche nach Dateien nahe.<\/p>\n<p>Auch Microsoft ist inzwischen auf diese Idee gekommen und hat bereits den Nachfolger des SQL Servers 2000 (Codename Yukon) als Ersatz f&uuml;r das Dateisystem des Windows-XP-Nachfolgers Longhorn angek&uuml;ndigt.<\/p>\n<p>Die daraus resultierenden Vorteile werden sicherlich revolution&auml;r sein. So wird es beispielsweise m&ouml;glich, z. B. eine Datei mit Daten zu Ihrer Steuererkl&auml;rung gleichzeitig unter den Pfaden EKSteuer\/2002 und 2002\/Steuer\/EK abzulegen.<\/p>\n<p>Dass die Suche nach Dateien bei Einsatz einer Datenbank sehr schnell vonstatten geht, versteht sich hierbei von selbst &#8211; und das ist auch einer der wesentlichen Aspekte der vorgestellten L&ouml;sung. Wer gelegentlich verschollen geglaubte Dateien auf einer gro&szlig;en Festplatte mit vielen Daten sucht, wird gerade den Geschwindigkeitsvorteil zu sch&auml;tzen wissen.<\/p>\n<p>Um Ihnen die Wartezeit bis zum Erscheinen von Longhorn etwas zu vers&uuml;&szlig;en, stellen wir Ihnen hier eine L&ouml;sung namens FileScanner f&uuml;r Access vor, die zumindest die Suche nach Dateien dramatisch beschleunigt.<\/p>\n<p>Der Einsatzbereich dieser L&ouml;sung umfasst in erster Linie Festplattenlaufwerke &#8211; lokal oder im Netzwerk.<\/p>\n<p>Die Archivierung von CD-ROMs und anderen Medien ist sicher sinnvoll, wird aber im Rahmen des vorliegenden Beitrags nicht behandelt.<\/p>\n<h3>Hinweis<\/h3>\n<p>Sie finden die Beispieldatenbank der Musterl&ouml;sung FileScanner f&uuml;r Access 2000 und h&ouml;her auf der beiliegenden CD-ROM unter dem Dateinamen FileScanner.mdb. <\/p>\n<p>Eine Version einer Musterl&ouml;sung f&uuml;r Access 97 liegt leider nicht vor, da der Programmcode von Klassenmodulen ausgel&ouml;ste Ereignisse verwendet.<\/p>\n<p>Dieses Feature steht erst ab Access 2000 zur Verf&uuml;gung.<\/p>\n<p>Die wichtigste Forderung bei der Entwicklung des FileScanners ist das schnelle Auffinden von Dateien auf Medien mit festen Pfaden wie beispielsweise Festplatten auf lokalen oder Netzwerkrechnern.<\/p>\n<p>Die Kernfunktion ist dementsprechend das Einlesen von Laufwerken mit allen Verzeichnissen und Unterverzeichnissen. Zus&auml;tzlich stellt die hier vorgestellte Datenbank ein Formular zur Suche nach Dateien sowie zum &ouml;ffnen einer gefundenen Datei direkt aus der Datenbank heraus zur Verf&uuml;gung. Eine .mdb-Datei wird beim Anklicken beispielsweise mit Access ge&ouml;ffnet.<\/p>\n<p>Das Datenmodell des FileScanners besteht aus einer einzigen Tabelle namens tblFiles, deren Entwurfsansicht Sie in Bild 1 finden.<\/p>\n<p><IMG height=\"323\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic001.png\" width=\"361\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Die Tabelle tblFiles in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Einige Felder der Tabelle tblFiles weisen Besonderheiten auf:<\/p>\n<li>Das Feld DirName hat den Felddatentyp Memo, um auch die Namen von tiefer geschachtelten Unterverzeichnissen speichern zu k&ouml;nnen. Die 255 Zeichen eines Textfelds reichen unter Umst&auml;nden daf&uuml;r nicht aus. Ein Blick auf Ihre eigene Verzeichnisstruktur d&uuml;rfte dies eventuell deutlich machen.<\/li>\n<li>Das Feld FileSize hat die Feldgr&ouml;&szlig;e Double, damit die Tabelle auch die Dateigr&ouml;&szlig;e sehr gro&szlig;er Dateien speichern kann.<\/li>\n<li>Das boolesche Feld IsExisting stellt sicher, dass nach einem Scan alle nicht mehr existierenden Dateien &#8211; verschoben oder gel&ouml;scht &#8211; aus der Datenbank entfernt werden. N&auml;here Einzelheiten dazu finden Sie weiter unten.<\/li>\n<p>Die Beispiell&ouml;sung enth&auml;lt lediglich zwei Formulare und ein Unterformular, die Sie in den folgenden Abschnitten n&auml;her kennen lernen.<\/p>\n<p><b>Das Formular frmScan<\/b><\/p>\n<p>Das Formular frmScan steuert das Durchsuchen (Scannen) eines Laufwerks. Es enth&auml;lt im Wesentlichen ein ungebundenes Textfeld zur Eingabe des Startverzeichnisses und zwei Schaltfl&auml;chen (siehe Bild 2).<\/p>\n<p><IMG height=\"209\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic002.png\" width=\"430\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Das Formular frmScan in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Weiterhin ist in diesem Formular noch ein ungebundenes Textfeld zur Anzeige von Statusmeldungen vorhanden. Dies ist sinnvoll, da das Einscannen eines Laufwerks je nach Anzahl der Dateien l&auml;ngere Zeit in Anspruch nehmen kann.<\/p>\n<p><b>Das Formular frmFind<\/b><\/p>\n<p>Das Formular frmFind erledigt die Suche nach einer Datei. Es enth&auml;lt neben einem ungebundenen Textfeld zur Eingabe eines Suchbegriffs noch eine Schaltfl&auml;che zum Start der Suche (siehe Bild 3).<\/p>\n<p><IMG height=\"399\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic003.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Das Dialogfenster Optionen<\/span><\/b><\/p>\n<p>Das Unterformular frmFind_Sub zeigt den Verzeichnis- und Dateinamen der gefundenen Dateien als Datenblatt an (siehe Bild 4).<\/p>\n<p>Damit haben Sie &#8211; abgesehen vom VBA-Code &#8211; schon alle Objekte der Musterl&ouml;sung kennen gelernt.<\/p>\n<p>Bevor wir Ihnen die Funktionsweise des FileScanners vorstellen, finden Sie in diesem Abschnitt zun&auml;chst seine Anwendung beschrieben.<\/p>\n<p><IMG height=\"224\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic004.png\" width=\"492\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Das Formular frmFind in der Entwurfsansicht<\/span><\/b><\/p>\n<p><IMG height=\"174\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic005.png\" width=\"415\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Entwurfsansicht des Unterformulars frmFind_Sub<\/span><\/b><\/p>\n<p>Vor dem Experimentieren beachten Sie jedoch Folgendes: <\/p>\n<p>Weil Sie in der Anfangsphase sicherlich h&auml;ufig neue Scans durchf&uuml;hren und wieder l&ouml;schen, sorgen Sie am besten f&uuml;r eine automatische Komprimierung der FileScanner-Datenbank beim Schlie&szlig;en. Hierzu gehen Sie wie folgt vor:<\/p>\n<li>&ouml;ffnen Sie mit dem Men&uuml;befehl Extras\/Optionen das Dialogfenster Optionen und aktivieren Sie das Register Allgemein.<\/li>\n<li>Markieren Sie dann das Kontrollk&auml;stchen Beim Schlie&szlig;en komprimieren (siehe Bild 5). (<\/li>\n<p><b>Dateien und Verzeichnisse einlesen<\/b><\/p>\n<p>Die Bedienung des FileScanners ist sehr einfach. &ouml;ffnen Sie das Formular frmScan und geben Sie in das Feld Start-Verzeichnis das gew&uuml;nschte Laufwerk oder Verzeichnis ein.<\/p>\n<p>Mit einem Klick auf die Schaltfl&auml;che Start wird das Einlesen der Dateien gestartet (siehe Bild 6). Ausgangspunkt des Einlesevorgangs ist das von Ihnen eingegebene Laufwerk bzw. Verzeichnis. Von dort aus werden ebenfalls alle eventuell vorhandenen Unterverzeichnisse durchsucht.<\/p>\n<h3>Praxis-Tipp<\/h3>\n<p>Wenn Sie das Root-Verzeichnis einer gr&ouml;&szlig;eren und gut gef&uuml;llten Festplatte als Startpunkt angeben, kann der Scan ohne Weiteres 10 bis 20 Minuten dauern. Fassen Sie sich also in Geduld oder brechen Sie den Einlesevorgang mit der Abbrechen-Schaltfl&auml;che ab. <\/p>\n<p>W&auml;hrend des Suchvorgangs informiert Sie eine Statuszeile unterhalb der Schaltfl&auml;che Start &uuml;ber den Fortschritt des Einlesens (siehe Bild 7).<\/p>\n<p><IMG height=\"137\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic006.png\" width=\"384\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Das Formular frmScan<\/span><\/b><\/p>\n<p><IMG height=\"137\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic007.png\" width=\"384\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Statuszeile w&auml;hrend des Suchvorgangs<\/span><\/b><\/p>\n<p>Das Ende des Suchvorgangs erkennen Sie in der Statuszeile des Formulars, die dann wieder den Schriftzug Bereit! anzeigt. <\/p>\n<p>Die eingelesenen Dateien sind danach mit den entsprechenden Angaben in der Tabelle tblFiles gespeichert (siehe Bild 8).<\/p>\n<p><b>Suchen<\/b><\/p>\n<p>Die Suche nach Dateien erfolgt vom Formular frmFind aus. Geben Sie in das Feld Suchen das gew&uuml;nschte Suchkriterium ein und klicken Sie anschlie&szlig;end auf die Schaltfl&auml;che Suchen (siehe Bild 9).<\/p>\n<p><IMG height=\"177\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic008.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Eingelesene Dateien in der Tabelle tblFiles<\/span><\/b><\/p>\n<p>Der FileScanner erlaubt die Anwendung folgender Suchkriterien:<\/p>\n<li>Freier Text: kann sich auf die Suche nach einem Verzeichnis- bzw. Dateinamen oder auf die Dateiextension beziehen.<\/li>\n<li>Dateierweiterung: Sie k&ouml;nnen beispielsweise gezielt nach gif-, txt-, doc- oder allen anderen Dateierweiterungen suchen.<\/li>\n<li>Wildcard: Beim Suchkriterium *.* werden alle Verzeichnisse und Dateien als Suchergebnis angezeigt.<\/li>\n<p><b>Das Suchergebnis<\/b><\/p>\n<p>Das Suchergebnis wird als Datenblatt angezeigt (siehe Bild 9). Die Anzeige beschr&auml;nkt sich hierbei auf den Verzeichnis- und Dateinamen.<\/p>\n<p><!--30percent--><\/p>\n<p><b>Verzeichnis &ouml;ffnen<\/b><\/p>\n<p>Ein Doppelklick in ein beliebiges Feld der Spalte Verzeichnis &ouml;ffnet dieses Verzeichnis im Windows Explorer.<\/p>\n<h3>Hinweis<\/h3>\n<p>Einen entsprechenden Hinweis finden Sie in der Statuszeile unten im Formular. <\/p>\n<p><b>Datei &ouml;ffnen<\/b><\/p>\n<p>Ein Doppelklick auf einen Dateinamen &ouml;ffnet die Datei zusammen mit der dazugeh&ouml;rigen Anwendung. Voraussetzung daf&uuml;r ist allerdings, dass diese Dateiextension auch mit einer Anwendung verkn&uuml;pft ist.<\/p>\n<p>Ein wesentlicher Teil der Funktionalit&auml;t des FileScanners ist mit Hilfe von API-Funktionen realisiert, die Sie in den folgenden Abschnitt kennen lernen.<\/p>\n<p><IMG height=\"291\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic009.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9:  Suchergebnis im Unterformular<\/span><\/b><\/p>\n<pre>Declare Function FindFirstFile Lib \"kernel32.dll\" _    Alias \"FindFirstFileA\" (ByVal lpFileName As _    String, lpFindFileData As WIN32_FIND_DATA) As Long<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<pre>Declare Function FindNextFile Lib \"kernel32.dll\" _    Alias \"FindNextFileA\" (ByVal hFindFile As Long, _    lpFindFileData As WIN32_FIND_DATA) As Long<\/pre>\n<p><b>Quellcode 2<\/b><\/p>\n<pre>Public Type WIN32_FIND_DATA\r\n    dwFileAttributes As Long\r\n    ftCreationTime As FileTime\r\n    ftLastAccessTime As FileTime\r\n    ftLastWriteTime As FileTime\r\n    nFileSizeHigh As Long\r\n    nFileSizeLow As Long\r\n    dwReserved0 As Long\r\n    dwReserved1 As Long\r\n    cFileName As String * 260\r\n    cAlternate As String * 14\r\nEnd Type<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<p><b>Die Funktion FindFirstFile<\/b><\/p>\n<p>Die Funktion FindFirstFile beginnt eine Dateisuche und gibt Informationen &uuml;ber die erste gefundene Datei zur&uuml;ck. Dabei sucht die Funktion nach dem Dateinamen, der durch die Wildcards * oder  erg&auml;nzt werden kann. Das Suchergebnis wird in der Variablen lpFindFileData gespeichert.<\/p>\n<p>Weiterhin gibt die Funktion ein Such-Handle zur&uuml;ck, welches bei Suche nach weiteren Suchtreffern mit Hilfe der Funktion FindNextFile benutzt wird.<\/p>\n<p>Die Deklaration der FindFirstFile-Funktion finden Sie in Quellcode 1.<\/p>\n<p><b>Die FunktionFindNextFile<\/b><\/p>\n<p>Die Funktion FindNextFile setzt eine mit der Funktion FindFirstFile begonnene Suche fort und speichert Informationen &uuml;ber weitere Suchtreffer ebenfalls in der Variablen lpFindFileData. Wenn alle Dateien eines Verzeichnisses aufgelistet werden sollen, muss einmal die Funktion FindFirstFile und danach mehrmals die Funktion FindNextFile aufgerufen werden. Sie finden die Deklaration der Funktion in Quellcode 2.<\/p>\n<p><b>Die Struktur _WIN32_FIND_DATA<\/b><\/p>\n<p>Die beiden Funktionen FindFirstFile und FindNextFile verwenden die Struktur WIN32_FIND_DATA zur Ablage des Suchergebnisses. Eine solche Struktur muss genau wie eine API-Funktion selbst im Deklarationsteil eines VBA-Moduls deklariert werden. Sie finden die Deklaration der Struktur in Quellcode 3.<\/p>\n<p>Sie erkennen hier die Variablen zur Speicherung der &uuml;blichen Dateiattribute wie Dateiname, letzter Zugriff usw.<\/p>\n<pre>Declare Function FindClose Lib \"kernel32.dll\" _    (ByVal hFindFile As Long) As Long<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<pre>Declare Function FileTimeToSystemTime Lib _    \"kernel32.dll\" (lpFileTime As FILETIME, _    lpSystemTime As SYSTEMTIME) As Long<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<pre>Declare Function ShellExecute Lib \"shell32.dll\" _    Alias \"ShellExecuteA\" (ByVal hWnd As Long, _    ByVal lpOperation As String, _    ByVal lpFile As String, _    ByVal lpParameters As String, _    ByVal _lpDirectory As String, _    ByVal nShowCmd As Long) As Long<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<pre>Private Sub btnStartScan_Click()\r\n    Me.txtStartDir.Value = Trim(Me.txtStartDir.Value)\r\n    If Len(Me.txtStartDir.Value) = 0 Then\r\n        MsgBox \"Bitte geben Sie ein Startverzeichnis \" _            & \"an!\"\r\n        Exit Sub\r\n    End If\r\n    On Error Resume Next\r\n    ChDir Me.txtStartDir.Value\r\n    If Err.Number &lt;&gt; 0 Then\r\n        MsgBox \"Das Start-Verzeichnis ist ung&uuml;ltig\"\r\n        Exit Sub\r\n    End If\r\n    On Error GoTo 0\r\n    If Right(Me.txtStartDir.Value, 1) = \"\\\" Then\r\n        Me.txtStartDir.Value = _            Left(Me.txtStartDir.Value, _            Len(Me.txtStartDir.Value) - 1)\r\n    End If\r\n    Me.txtStartDir.SetFocus\r\n    Me.btnStartScan.Enabled = False\r\n    Me.btnCancel.Enabled = True\r\n    Set m_fs = New clsFileScanner\r\n    m_fs.StartUpdate (Me.txtStartDir.Text)\r\n    Me.btnStartScan.Enabled = True\r\n    Me.btnCancel.Enabled = False\r\n    Me.lblStatus.Caption = \"Bereit!\"\r\nEnd Sub<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<p>Der Vorteil bei der Verwendung einer solchen Struktur besteht darin, die ben&ouml;tigten Informationen quasi am St&uuml;ck in einem Rutsch zu &uuml;bergeben.<\/p>\n<h3>Hinweis<\/h3>\n<p>Sie finden die Deklaration der Funktionen und Strukturen im Modul modTools der Beispieldatenbank. <\/p>\n<p><b>Die FunktionFindClose<\/b><\/p>\n<p>Die Funktion FindClose beendet eine mit der Funktion FindFirstFile begonnene Suche und schlie&szlig;t das Such-Handle. Dies gibt belegte Speicher-Bereiche unter Windows wieder frei und ist daher sehr wichtig (s. Quellcode 4).<\/p>\n<p><b>Die FunktionFileTimeToSystem<\/b><\/p>\n<p>Die Funktion FileTimeToSystemTime konvertiert die unterschiedlichen Datums-\/Zeitformate von Datei- und Systemzeit (s. Quellcode 5).<\/p>\n<p>Sie verwendet dabei die Strukturen FILETIME und SYSTEMTIME, die Sie ebenfalls im Deklarationsbereich des Moduls modTools der Beispieldatenbank finden. Diese Funktion wird sp&auml;ter dazu eingesetzt, das im Windows-API verwendete Format f&uuml;r Datums- und Zeitangaben in das VBA-Format zu konvertieren.<\/p>\n<p><b>Die FunktionShellExecute<\/b><\/p>\n<p>Die Funktion ShellExecute &ouml;ffnet oder f&uuml;hrt eine Datei unter der Windows-Benutzeroberfl&auml;che aus (s. Quellcode 6). Falls es sich dabei um eine nicht ausf&uuml;hrbare Datei handelt, wird diese Datei mit der standardm&auml;&szlig;ig verkn&uuml;pften Windows-Anwendung ge&ouml;ffnet.<\/p>\n<pre>Public Sub StartUpdate(RootDirectory As String)\r\n    If Len(RootDirectory) = 0 Then\r\n        Err.Raise vbObjectError + 1, \"StartUpdate\", \"RootDirectory erforderlich\"\r\n    End If\r\n    m_RootDirectory = RootDirectory\r\n    m_Cancel = False\r\n    CurrentProject.Connection.Execute _        (\"UPDATE tblFiles SET IsExisting=0 WHERE RootDir=\" + Quote(m_RootDirectory))\r\n    If m_Cancel = False Then\r\n        UpdateDirectory m_RootDirectory\r\n    End If\r\n    If m_Cancel = False Then\r\n        CurrentProject.Connection.Execute (\"DELETE * FROM tblFiles \" _            & \"WHERE IsExisting=0 AND RootDir=\" + Quote(m_RootDirectory))\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 8<\/b><\/p>\n<pre>Private Sub UpdateDirectory(Directory As String)\r\n    Dim hFindFile As Long\r\n    Dim FindFileData As WIN32_FIND_DATA\r\n    Dim Filename As String\r\n    hFindFile = FindFirstFileA(Directory + \"\\*.*\", FindFileData)\r\n    If Not hFindFile = -1 Then\r\n        Do\r\n            If m_Cancel = True Then Exit Sub\r\n            Filename = NTString(FindFileData.cFileName)\r\n            If FindFileData.dwFileAttributes And vbDirectory Then\r\n                If Filename &lt;&gt; \".\" And Filename &lt;&gt; \"..\" Then\r\n                    UpdateDirectory Directory & \"\\\" + Filename\r\n                End If\r\n            Else\r\n                UpdateFile Directory, FindFileData\r\n            End If\r\n        Loop While FindNextFileA(hFindFile, FindFileData)\r\n    End If\r\n    FindClose hFindFile\r\nEnd Sub<\/pre>\n<p><b>Quellcode 9<\/b><\/p>\n<p>In diesem Abschnitt lernen Sie den VBA-Code des FileScanners n&auml;her kennen. Der vollst&auml;ndige Code befindet sich im Klassenmodul clsFileScanner und im Modul modTools der Beispieldatenbank.<\/p>\n<pre>Private Sub UpdateFile(Directory As String, FindFileData As WIN32_FIND_DATA)\r\n    Dim rstFiles As New ADODB.Recordset\r\n    Dim Filename As String\r\n    Filename = NTString(FindFileData.cFileName)\r\n    RaiseEvent StatusChange(Directory + \"\\\" + Filename)\r\n    With rstFiles\r\n        .ActiveConnection = CurrentProject.Connection\r\n        .CursorLocation = adUseClient\r\n        .LockType = adLockOptimistic\r\n        .CursorType = adOpenDynamic\r\n        .Source = \"SELECT * FROM tblFiles WHERE DirName=\" & Quote(Directory) _             & \" AND Filename=\" + Quote(Filename)\r\n        .Open\r\n        If .RecordCount = 0 Then\r\n            .AddNew\r\n        End If\r\n        .Fields(\"RootDir\") = m_RootDirectory\r\n        .Fields(\"DirName\") = Directory\r\n        .Fields(\"FileName\") = Filename\r\n        .Fields(\"CreationTime\") = FileTimeToVBTime(FindFileData.ftCreationTime)\r\n        .Fields(\"LastAccessTime\") = FileTimeToVBTime(FindFileData.ftLastAccessTime)\r\n        .Fields(\"FileSize\") = (FindFileData.nFileSizeHigh * (&HFFFFFFFF + 1)) + _            FindFileData.nFileSizeLow\r\n        .Fields(\"IsExisting\") = True\r\n        .Update\r\n    End With\r\nEnd Sub<\/pre>\n<p><b>Quellcode 10<\/b><\/p>\n<p><b>Dateien und Verzeichnisse einlesen<\/b><\/p>\n<p>Vor der ersten Suche nach Dateien muss die FileScanner-Datenbank zun&auml;chst einmal mit den dazu notwendigen Daten &#8211; den Datei- und Verzeichnisnamen &#8211; gef&uuml;llt werden.<\/p>\n<p>Dieser Vorgang wird vom Formular frmScan aus gestartet. Nach einem Klick auf die Schaltfl&auml;che Start wird die Ereignisprozedur btnStartScan_Click aufgerufen (s. Quellcode 7).<\/p>\n<p>Die Prozedur &uuml;berpr&uuml;ft zun&auml;chst, ob ein Startverzeichnis angegeben bzw. ob dieses auch g&uuml;ltig ist. Falls nein, erh&auml;lt der Benutzer entsprechende Warnmeldungen, wie beispielsweise die in Bild 10.<\/p>\n<p><IMG height=\"100\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic010.png\" width=\"218\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10:  Warnmeldung<\/span><\/b><\/p>\n<p>Anschlie&szlig;end wird der String, der den Dateipfad enth&auml;lt, auf einen abschlie&szlig;enden Backslash untersucht und dieser ggf. abgeschnitten. Dies ist erforderlich, da der FileScanner Verzeichnisnamen generell ohne Backslash erwartet, viele Benutzer dieses jedoch mit eingeben (z.B. C:\\ anstelle von C:).<\/p>\n<p>Danach wird noch die Start-Schaltfl&auml;che deaktiviert und die Abbrechen-Schaltfl&auml;che aktiviert. Der eigentliche Einlesevorgang beginnt mit dem Instanzieren eines neuen Objekts der Klasse clsFileScanner sowie dem Aufruf der hier enthaltenen Methode StartUpdate (s. Quellcode 8).<\/p>\n<pre>Private Function FileTimeToVBTime(FileTime As _    FileTime) As Date\r\n    Dim S As SYSTEMTIME\r\n    FileTimeToSystemTime FileTime, S\r\n    FileTimeToVBTime = DateSerial(S.wYear, S.wMonth, _        S.wDay) + TimeSerial(S.wHour, S.wMinute, _        S.wSecond)\r\nEnd Function<\/pre>\n<p><b>Quellcode 11<\/b><\/p>\n<pre>Private Function NTString(InString As String) As String\r\n    NTString = LeftB$(InString, InStrB(InString, _        vbNullChar))\r\nEnd Function<\/pre>\n<p><b>Quellcode 12<\/b><\/p>\n<p>Ausgehend vom ausgew&auml;hlten Root-Verzeichnis ruft die Prozedur StartUpdate einmal die Methode UpdateDirectory auf, die das Verzeichnis durchsucht und alle Dateien in die Datenbank einliest (s. Quellcode 9).<\/p>\n<p>Wenn die Prozedur ein Unterverzeichnis ermittelt, ruft sie sich selbst rekursiv unter Angabe dieses Unterverzeichnisses auf.<\/p>\n<p>Sollte die Prozedur dagegen eine Datei ausfindig machen, ruft sie die Prozedur UpdateFile auf, die letztendlich den entsprechenden Eintrag in der Datenbank erzeugt (s. Quellcode 10).<\/p>\n<h3>Hinweis<\/h3>\n<p>Extrem gro&szlig;e Dateien k&ouml;nnen zu einem Fehler f&uuml;hren, da der Wertebereich des Datentyps Double &uuml;berschritten werden k&ouml;nnte. Diese Problematik wird bei dieser L&ouml;sung jedoch nicht gesondert ber&uuml;cksichtigt. <\/p>\n<h3>Die Dir-Funktion<\/h3>\n<p>M&ouml;glicherweise werden Sie sich jetzt fragen, warum zum Einlesen der Verzeichnisse nicht die in Access vorhandene Dir-Funktion verwendet wird. Der Grund: Die Dir-Funktion kann nur rein linear, aber nicht rekursiv arbeiten. Das hei&szlig;t konkret: Bei einem erneuten Aufruf der Dir-Funktion &#8211; beispielsweise in einem Unterverzeichnis, kann in dem Hauptverzeichnis nicht wieder an der gleichen Stelle aufgesetzt und der Vorgang fortgesetzt werden.<\/p>\n<p><b>Hilfsfunktionen<\/b><\/p>\n<p>Beim Scannen der Verzeichnisse und Dateien sind zwei Hilfsfunktionen zwingend notwendig: Die Funktionen FileTimeToVBTime und NTString.<\/p>\n<h3>Die Funktion FileTimeToVBTime<\/h3>\n<p>Die Funktion FileTimeToVBTime (s. Quellcode 11) konvertiert ein File-Datumsformat in ein System-Datumsformat und danach wiederum in das VBA-Format. Zum Einsatz kommt hierbei die bereits vorgestellte API-Funktion FileTimeToSystemTime.<\/p>\n<h3>Die Funktion NTString<\/h3>\n<p>Die Funktion NTString konvertiert einen Null-terminated-String, so wie er beim Windows-API &uuml;blich ist, in einen Visual Basic-String (s. Quellcode 12).<\/p>\n<p>API-Funktionen erwarten Zeichenketten in der C-Syntax, das hei&szlig;t in Form eines einfachen Zeigers auf eine Folge von Bytes. Das Ende ist hierbei durch den Wert 0 gekennzeichnet.<\/p>\n<p>In VB dagegen werden Strings mit dem so genannten BSTR-Datentyp verwaltet. Dabei wird der Unicode-Zeichensatz mit zwei Byte pro Zeichen verwendet. Unmittelbar vor Beginn des Strings steht dabei ein Wert, der die L&auml;nge der Zeichenkette angibt. Die Prozedur sucht den ersten Null-Code in der Zeichenkette und nimmt dann eine entsprechende Konvertierung mittels LeftB$-Funktion vor.<\/p>\n<pre>Private Sub btnStartFind_Click()\r\n    If Len(Me.txtFindText.Value) = 0 Or IsNull(Me.txtFindText.Value) Then\r\n        MsgBox \"Bitte geben Sie einen Suchtext ein!\"\r\n    Else\r\n        Dim SQL As String\r\n        SQL = \"SELECT FileID, DirName, FileName FROM tblFiles \"\r\n        SQL = SQL + \" WHERE Filename LIKE \" + Quote(\"*\" + Me.txtFindText.Value + \"*\")\r\n        SQL = SQL + \" OR DirName LIKE \" + Quote(\"*\" + Me.txtFindText.Value + \"*\")\r\n        Me.Sub.Form.RecordSource = SQL\r\n        Me.Sub.Requery\r\n        Me.Sub.Visible = True\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 13<\/b><\/p>\n<p><b>L&ouml;schen nicht mehr existierenderDateien aus der Datenbank<\/b><\/p>\n<p>Um m&ouml;glichst einfach herauszufinden, welche Dateien nicht mehr existieren und aus der Datenbank entfernt werden m&uuml;ssen, wird das Feld IsExisting aller Datenbankeintr&auml;ge zu dem Startverzeichnis des Scans (beispielsweise: \\\\MeinServer\\DataCenter) beim Start des Scans auf den Wert False gesetzt. Werden Sie w&auml;hrend des Scans gefunden, wird das Feld wieder auf den Wert True gesetzt. <\/p>\n<p>Alle Files, die nach dem Scan mit dem Wert IsExisting=False &uuml;brig bleiben und zu dem angegebenen Startverzeichnis geh&ouml;ren, werden nach dem Scan mit einer Aktionsabfrage gel&ouml;scht. Den entsprechenden Code-Ausschnitt finden Sie in der Prozedur StartUpdate aus dem Klassenmodul clsFileScanner.<\/p>\n<p>Nachdem Sie nun die Arbeitsweise des Scanners kennen gelernt haben, erl&auml;utern wir Ihnen nun die Funktion des Suchformulars. Dateien suchen<\/p>\n<p>Beim Start einer Dateisuche im Formular frmFind ruft ein Klick auf die Schaltfl&auml;che btnStartFind die gleichnamige Ereignisprozedur auf (s. Quellcode 13). Die Prozedur &uuml;berpr&uuml;ft zun&auml;chst, ob &uuml;berhaupt ein Suchkriterium vorhanden ist, und zeigt gegebenenfalls eine entsprechende Fehlermeldung an. Anderenfalls wird aus dem Suchtext ein SQL-String zusammengesetzt und dem Unterformular frmFind_Sub als Recordsource zugewiesen. Die dabei verwendete Hilfsfunktion Quote &#8211; Modul modTools &#8211; sorgt mit Hilfe des Ausdrucks<\/p>\n<pre>Quote = \"''\" + Replace(InString, \"''\", \"''''\") + \"''\"<\/pre>\n<p>f&uuml;r die richtige Syntax der Hochkommata im SQL-String, falls der Suchbegriff ebenfalls Hochkommata enthalten sollte.<\/p>\n<p>Das ist au&szlig;erordentlich praktisch, weil gerade die richtige Syntax der Hochkommata in SQL-Strings oftmals Probleme bereitet und deshalb entsprechend fehleranf&auml;llig ist.<\/p>\n<p><b>Verzeichnis im Explorer &ouml;ffnen<\/b><\/p>\n<p>Beim Doppelklick auf ein Verzeichnis im Feld Verzeichnis des Suchergebnisses &ouml;ffnet der Windows-Explorer das betreffende Verzeichnis in einem Explorer-Fenster (siehe Bild 11).<\/p>\n<p>Daf&uuml;r ist der Aufruf der Shell-Funktion verantwortlich. Diese &ouml;ffnet einfach die Datei explorer.exe, der das betreffende Verzeichnis aus dem Feld DirName &uuml;bergeben wird:<\/p>\n<pre>Shell \"explorer.exe \" + Me!DirName, vbNormalFocus<\/pre>\n<p><b>Datei mit Anwendungsprogramm&ouml;ffnen<\/b><\/p>\n<p><IMG height=\"293\" src=\"..\/fileadmin\/_temp_\/{C3B82FCC-8ED7-4991-B5D6-D89E7402C6D8}\/pic011.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 11:  Explorerfenster<\/span><\/b><\/p>\n<pre>Private Sub Filename_DblClick(Cancel As Integer)\r\n    Dim FullFilename As String\r\n    FullFilename = Me!DirName + \"\\\" + Me!Filename\r\n    OpenDocument FullFilename\r\nEnd Sub\r\nPublic Sub OpenDocument(DocumentFile As String)\r\n    Dim ret As Long\r\n    If Len(DocumentFile) &gt; 0 Then\r\n        ret = ShellExecute(Application.hWndAccessApp, _            \"open\", DocumentFile, vbNullChar, \"\", 1)\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 14<\/b><\/p>\n<p>Beim Doppelklick auf einen Dateinamen im Feld Dateiname des Suchergebnisses zeigt das mit dieser Datei-Extension verkn&uuml;pfte Anwendungsprogramm die Datei an. Das bewirkt die schon vorgestellte API-Funktion ShellExcecute.<\/p>\n<p>Zun&auml;chst stellt die Ereignisprozedur Filename_DblClick einen korrekten Pfadnamen zusammen und &uuml;bergibt diesen dann der Prozedur OpenDocument aus dem Klassenmodul clsFileScanner, die ihrerseits wiederum die Funktion ShellExcecute aufruft (s. Quellcode 14).<\/p>\n<p>Der FileScanner stellt bereits in der vorliegenden Form ein n&uuml;tzliches Werkzeug zur schnellen Suche nach Dateien dar. Wenn Sie erst einmal ein paar Tage mit dem FileScanner gearbeitet haben, werden Sie ihn kaum noch missen wollen.<\/p>\n<p>Erweiterungen dieser Beispiell&ouml;sung sind in folgenden Bereichen denkbar und sinnvoll:<\/p>\n<li>Suchm&ouml;glichkeiten nach weiteren Dateiattributen wie Anlage- und Erstellungsdatum, letzter Zugriff, Dateigr&ouml;&szlig;e usw.<\/li>\n<li>Komfortable Sortierung nach den verschiedenen Dateiattributen als Spalten&uuml;berschriften.<\/li>\n<li>Ausbau zu einer kompletten Dateiverwaltung mit Katalogisierung und Kommentierung.<\/li>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>FileScanner.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/66ACE943-DAE0-434A-893B-21ACCBC8A9F7\/aiu_95.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Speicherkapazit&auml;t von Festplatten hat gerade in den letzten Jahren rasant zugenommen. Momentan sind Festplatten mit 80 bis 100 MB handels&uuml;blich, und Festplatten mit mehreren Terabyte f&uuml;r normale PC-Systeme bereits im Gespr&auml;ch. Mit zunehmender Gr&ouml;&szlig;e des zur Verf&uuml;gung stehenden Speicherplatzes w&auml;chst erfahrungsgem&auml;&szlig; auch die Anzahl der gespeicherten Dateien. Folglich wird die Suche nach bestimmen Dateien in solch gro&szlig;en Datenbest&auml;nden mit den &uuml;blichen Dateimanagern, wie beispielsweise dem Windows-Explorer, immer un&uuml;bersichtlicher und schwieriger &#8211; und vor allem: wesentlich zeitaufwendiger. Die hier vorgestellte L&ouml;sung zeigt Ihnen, wie Sie umfangreiche Datenbest&auml;nde mit Hilfe von Access in den Griff bekommen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[66012003,662003,44000036,44000034],"tags":[],"class_list":["post-55000095","post","type-post","status-publish","format-standard","hentry","category-66012003","category-662003","category-Daten_suchen_sortieren_gruppieren","category-ImportExport"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Dateien einlesen und finden mit Access - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dateien einlesen und finden mit Access\" \/>\n<meta property=\"og:description\" content=\"Die Speicherkapazit&auml;t von Festplatten hat gerade in den letzten Jahren rasant zugenommen. Momentan sind Festplatten mit 80 bis 100 MB handels&uuml;blich, und Festplatten mit mehreren Terabyte f&uuml;r normale PC-Systeme bereits im Gespr&auml;ch. Mit zunehmender Gr&ouml;&szlig;e des zur Verf&uuml;gung stehenden Speicherplatzes w&auml;chst erfahrungsgem&auml;&szlig; auch die Anzahl der gespeicherten Dateien. Folglich wird die Suche nach bestimmen Dateien in solch gro&szlig;en Datenbest&auml;nden mit den &uuml;blichen Dateimanagern, wie beispielsweise dem Windows-Explorer, immer un&uuml;bersichtlicher und schwieriger - und vor allem: wesentlich zeitaufwendiger. Die hier vorgestellte L&ouml;sung zeigt Ihnen, wie Sie umfangreiche Datenbest&auml;nde mit Hilfe von Access in den Griff bekommen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-10-18T13:32:43+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/77c389a6b0de4f9b81321ccd3d254b7e\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Dateien einlesen und finden mit Access\",\"datePublished\":\"2020-10-18T13:32:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/\"},\"wordCount\":2724,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/77c389a6b0de4f9b81321ccd3d254b7e\",\"articleSection\":[\"1\\\/2003\",\"2003\",\"Daten suchen, sortieren, gruppieren\",\"Import\\\/Export\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/\",\"name\":\"Dateien einlesen und finden mit Access - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/77c389a6b0de4f9b81321ccd3d254b7e\",\"datePublished\":\"2020-10-18T13:32:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/77c389a6b0de4f9b81321ccd3d254b7e\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/77c389a6b0de4f9b81321ccd3d254b7e\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Dateien_einlesen_und_finden_mit_Access\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dateien einlesen und finden mit Access\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Dateien einlesen und finden mit Access - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/","og_locale":"de_DE","og_type":"article","og_title":"Dateien einlesen und finden mit Access","og_description":"Die Speicherkapazit&auml;t von Festplatten hat gerade in den letzten Jahren rasant zugenommen. Momentan sind Festplatten mit 80 bis 100 MB handels&uuml;blich, und Festplatten mit mehreren Terabyte f&uuml;r normale PC-Systeme bereits im Gespr&auml;ch. Mit zunehmender Gr&ouml;&szlig;e des zur Verf&uuml;gung stehenden Speicherplatzes w&auml;chst erfahrungsgem&auml;&szlig; auch die Anzahl der gespeicherten Dateien. Folglich wird die Suche nach bestimmen Dateien in solch gro&szlig;en Datenbest&auml;nden mit den &uuml;blichen Dateimanagern, wie beispielsweise dem Windows-Explorer, immer un&uuml;bersichtlicher und schwieriger - und vor allem: wesentlich zeitaufwendiger. Die hier vorgestellte L&ouml;sung zeigt Ihnen, wie Sie umfangreiche Datenbest&auml;nde mit Hilfe von Access in den Griff bekommen.","og_url":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-10-18T13:32:43+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/77c389a6b0de4f9b81321ccd3d254b7e","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Dateien einlesen und finden mit Access","datePublished":"2020-10-18T13:32:43+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/"},"wordCount":2724,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/77c389a6b0de4f9b81321ccd3d254b7e","articleSection":["1\/2003","2003","Daten suchen, sortieren, gruppieren","Import\/Export"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/","url":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/","name":"Dateien einlesen und finden mit Access - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/77c389a6b0de4f9b81321ccd3d254b7e","datePublished":"2020-10-18T13:32:43+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/77c389a6b0de4f9b81321ccd3d254b7e","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/77c389a6b0de4f9b81321ccd3d254b7e"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Dateien_einlesen_und_finden_mit_Access\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Dateien einlesen und finden mit Access"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000095","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000095"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000095\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000095"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000095"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000095"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}