PDA

Vollständige Version anzeigen : Dateinamen in Tabelle speichern


2daBeat
22.03.2004, 08:10
Hallo alle zusammen,

wie kann ich Dateinnamen von Dateien die sich in einem bestimmten Verzeichnis befinden in einer neuen Tabellen speichern?

Hoffe das war verständlich :).

Vielen Dank im vorraus für euere Tipps und Vorschläge. :)

Grüße 2 da Beat

Thomas Braun
22.03.2004, 08:23
Schau dir mal in der Hilfe die Dir-Funktion an. Da gibt es folgendes Beispiel:

Dim Datei1, Pfad1 , Name1

...

' Namen in C:\ anzeigen, die Verzeichnisse darstellen.
Pfad1 = "c:\" ' Pfad setzen.
Name1 = Dir(Pfad1, vbDirectory) ' Ersten Eintrag abrufen.
Do While Name1 <> "" ' Schleife beginnen.
' Aktuelles und übergeordnetes Verzeichnis ignorieren.
If Name1 <> "." And Name1 <> ".." Then
' Mit bit-weisem Vergleich sicherstellen, daß Name1 ein

' Verzeichnis ist.
If (GetAttr(Pfad1 & Name1) And vbDirectory) = vbDirectory Then
Debug.Print Name1 ' Eintrag nur anzeigen, wenn es sich
End If ' um ein Verzeichnis handelt.
End If
Name1 = Dir ' Nächsten Eintrag abrufen.
Loop

Musst du nur noch ein deine Verhältnisse anpassen :-)

strausto
22.03.2004, 08:25
Suche im Forum nach

Application.Filesearch
[\CODE]

ergänze um den Code
[CODE]
rs=currentdb.openrecordset "DeineTabelle"

...

rs.Addnew
rs.Fields("DeinFeld").value=.foundfiles(i)
rs.update

...

TommyK
22.03.2004, 08:41
Hallo,

sieh mal hier: http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=121087

2daBeat
22.03.2004, 09:52
Hallo,

danke erstmal für alle Antworten :)

So hab jetzt folgendes :


Private Sub Befehl1_Click()

Dim pfad, name As String
Dim rs As DAO.Recordset, db As DAO.Database

Set db = CurrentDb
Set rs = db.OpenRecordset("tbl_Verzeichnisliste", dbOpenDynaset)

pfad = "D:\Katalog47\Daten\Bilder"
name = Dir(pfad, vbNormal)


Do While name <> ""
name = Dir

If name <> "" Then
rs.FindFirst "Pfad = '" & name & "'"

If rs.NoMatch Then
rs.AddNew
rs!pfad = name
Else

rs.Edit
End If

rs!Dateidatum = FileDateTime((pfad & name))
rs!Dateigröße = (FileLen((pfad & name))) / 1024
rs.Update
End If
Loop

rs.Close
db.Close
Set rs = Nothing
Set db = Nothing

End Sub


Doch leider passiert reingarnichts :bawling:..meine tabelle wird nicht befüllt...weiß jemand was daran nicht stimmt?

die tabelle habe ich auch so erstellt wie es in der newsgroup beschrieben war ;)

danke im vorraus :)

MXAP
22.03.2004, 11:21
Hallo,

der Vorschlag von Torsten mit Filesearch zu arbeiten,
ist wohl mit mehr Erfolgschancen versehen. Wie soll
er in denn in deiner Schleife die vorhandenen Dateien
finden und abarbeiten ?

Gruß
MXAP

2daBeat
29.03.2004, 09:29
Hallo,

sry das ich erst jetzt antworte, ich hatte aber urlaub die letzte woche ;).

So ich will einfach nur die Dateinamen eines bestimmten Verzeichnisses (dieses Verzeichnis bleibt immer gleich..also sollte am besten fest verankert werden im code..es ist also kein fileopendialog nötig) in eine tabelle schreiben lassen...oben das beispiel sollte das doch eigentlich machen oder? :rolleyes:

Naja wär nett wenn mir da noch jemand etwas Hilfestellung geben könnte.. :rolleyes:

Danke.

Gruß
2 Da Beat

Thomas Braun
29.03.2004, 09:46
... , ich hatte aber urlaub die letzte woche
Schön für dich ....

Naja wär nett wenn mir da noch jemand etwas Hilfestellung geben könnte.

Hast du denn meinen Vorschlag schon ausprobiert?
Dim Datei1, Pfad1 , Name1
...

' Namen in C:\ anzeigen, die Verzeichnisse darstellen.
Pfad1 = "c:\" ' Hier deinen Pfad / Verzeichnis eintragen
Name1 = Dir(Pfad1, vbDirectory) ' Ersten Eintrag abrufen.
Do While Name1 <> "" ' Schleife beginnen.
' Aktuelles und übergeordnetes Verzeichnis ignorieren.
If Name1 <> "." And Name1 <> ".." Then
If (GetAttr(Pfad1 & Name1) And vbDirectory) = vbDirectory Then
Debug.Print Name1 ' Eintrag nur anzeigen, wenn es sich
' Hier hab ich was für dich geändert. Den Tabellen- und Feldnamen musst du selber anpassen.
DBEngine(0)(0).Execute ("INSERT INTO DeineTabelle (DateiName) VALUES ('" & Name1 & "')"
End If
End If
Name1 = Dir ' Nächsten Eintrag abrufen.
Loop

2daBeat
29.03.2004, 09:58
Hi,

ja habe ich auch probiert..ich bekomme aber immer die Meldung egal welches Verzeichnis ich angebe:

Laufzeitfehler 53:

Datei nicht gefunden

If (GetAttr(Pfad1 & Name1) And vbDirectory) = vbDirectory Then


so sieht jetzt der ganze code aus :

Dim Datei1, Pfad1, Name1
Dim strListe As String

' Namen in C:\ anzeigen, die Verzeichnisse darstellen.
Pfad1 = "C:\Test" ' Hier deinen Pfad / Verzeichnis eintragen
Name1 = Dir(Pfad1, vbDirectory) ' Ersten Eintrag abrufen.
Do While Name1 <> "" ' Schleife beginnen.
' Aktuelles und übergeordnetes Verzeichnis ignorieren.
If Name1 <> "." And Name1 <> ".." Then
If (GetAttr(Pfad1 & Name1) And vbDirectory) = vbDirectory Then
Debug.Print Name1 ' Eintrag nur anzeigen, wenn es sich
' Hier hab ich was für dich geändert. Den Tabellen- und Feldnamen musst du selber anpassen.
DBEngine(0)(0).Execute ("INSERT INTO tblTest (Dateiname) VALUES ('" & Name1 & "')")

End If ' um ein Verzeichnis handelt.
End If
Name1 = Dir ' Nächsten Eintrag abrufen.
Loop

End Sub


Danke für deine hilfe...

2da BEat

Thomas Braun
29.03.2004, 10:09
... so gehts:
Dim Datei1, Pfad1, Name1
Dim strListe As String

' Namen in C:\ anzeigen, die Verzeichnisse darstellen.
Pfad1 = "C:\Test\ " ' Hier deinen Pfad / Verzeichnis eintragen - letzten Backslash nicht vergessen
Name1 = Dir(Pfad1, vbDirectory) ' Ersten Eintrag abrufen.
Do While Name1 <> "" ' Schleife beginnen.
' Aktuelles und übergeordnetes Verzeichnis ignorieren.
If Name1 <> "." And Name1 <> ".." Then
If (GetAttr(Pfad1 & Name1) And vbDirectory) <> vbDirectory Then
Debug.Print Name1
' Hier hab ich was für dich geändert. Den Tabellen- und Feldnamen musst du selber anpassen.
strListe = strListe & Name1 & vbCrLf
DBEngine(0)(0).Execute ("INSERT INTO tblTest (Dateiname) VALUES ('" & Name1 & "')")

End If
End If
Name1 = Dir ' Nächsten Eintrag abrufen.
Loop

MsgBox strListe

strausto
29.03.2004, 10:21
Public Sub FileInTable()

Dim i As Integer
Dim con As ADODB.Connection
Dim rs As ADODB.Recordset

Set con = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open "Select * from Table1", con, adOpenKeyset, adLockOptimistic

With Application.FileSearch

.NewSearch
.FileType = msoFileTypeAllFiles
.LookIn = "C:\"
.SearchSubFolders = False
If .Execute > 0 Then

For i = 1 To .FoundFiles.Count
rs.AddNew
rs.Fields("Datei").Value = .FoundFiles(i)
rs.Update
Next i
End If

End With

rs.Close
Set rs = Nothing
Set con = Nothing

2daBeat
29.03.2004, 10:34
mit thomas braun Lösungsvorschlag funktioniert es jetzt

Dankeschön :).