Dateisuche und weiteres...

delPaz

Mitglied
Hallo!
Nur so zur Info, hab noch nie so richtig mit VB zutun gehabt.
Hab in Access 97 eine DB eines Friedhofes. Jedes Grab hat eine Reihennummer und eine Grabnummer. Nach diesen Nummern werden Bilder zu den Gräbern zugewiesen.

Das Problem jetzt, der Kunde kopiert sich nun irgendwo die Datenbank rein, sonmit stimmt der Pfad für die Bilder nicht mehr. Also will ich nach der Datenbank suchen und den Pfad in einer Tabelle abspeichern. Ich hab schon Ideen mit den Objekten FileSearch und etc., kann sie aber nicht gerade mit Erfolg umsetzen.

Also wer ne Idee hat, nur her damit.

MfG
:)

Hab dies mal programmiert. Ist nicht grad das Beste.
Private Sub Befehl0_Click()
Dim i As Integer

With Application.FileSearch
.LookIn = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien"
.FileName = "St-marx*"
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
End With

End Sub

//Nur nimmt er mir das .FileName nicht aber = Laufzeitfehler5, Unzulässiger Prozedurablauf oder ungültiges Argument.
 
Zuletzt bearbeitet:
Private Sub Befehl0_Click()

Dim i As Integer

With Application.FileSearch
.LookIn = "C:\Dokumente und Einstellungen\Administrator\Eigene Dateien"
.FileName = "hallo.txt"
If .Execute > 0 Then
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
Else
MsgBox "Nichts gefunden"
End If

End With

End Sub

So funktionierts, Grund, FileName nimmt keine * oder ?, ka warum.
Nur noch ne frage, wie durchsuche ich alle laufwerke, was muss ich bei lookin - befehl reinschreiben, oder muss ich eine Funktion dafür schreiben??

MfG
 
du kannst mit do while als schleife und dir die dateien/ordner auflisten.
genau wie weiß ich jetzt nicht aus dem kopf und wills nicht ausprobieren:)
so als konzeptidee..

du lässt dir die dateien aus dem pfad des lookins auslesen, trennst die dateien nach punkten mit split und hast dann ein array, woraus du mit ubound ziemlich unkompliziert den dateinamen kriegst, und die setzt du dann bei filename ein.

noch fragen? :)
 
ich hab immer viele fragen.
progressbar hat sich erledigt, anderen weg gefunden. verzeichnisse kopieren hat sich auch erledigt. nun kommt etwas anderes. :)

zum kopieren der verzeichnisse muss ich ja den pfad angeben. dieser pfad führt auf eine cd-rom. hab mit dem code den laufwerksbuchstaben herausgelesen, den vom cdrom:

Private Sub Form_Load()
Dim CDPath As String
Dim fso As New Scripting.FileSystemObject
Dim drv As Drive
For Each drv In fso.Drives
If drv.DriveType = CDRom Then
CDPath = drv.Path
Exit For
End If
Next drv
Set drv = Nothing
Set fso = Nothing
Text4 = CDPath & "\"
End Sub

aber wenn jemand 2 cd laufwerke hat, woher weiß ich, ob der code das richtige genommen hat?? :rolleyes:
muss ich noch was dazufügen??
 
viele fragen heißt viel arbeit :)

und diese frage ist nicht schlecht ;-)

wenn du 2 cds in zwei laufwerken hast, wird der über for each...
beide ausgeben.
also for each blabla
kopiervorgang (pfad zum laufwerk usw)
next

der geht einmal in die schleife, führt den vorgang durch, wenn der fertig ist, springt der in der schleife eins weiter und nimmt sich das andere laufwerk.
hab mir jetzt den code nicht genau angeguckt, aber das wird so funktionieren, wenn das, was du da hingekritzelt hast, die laufwerke ausgibt :)

gruß, Ich
 
Ja das soll er aber nicht, sonst kommt in einer Funktion ein Laufzeitfehler heraus, weil er den Ordner auf der falschen CD nicht findet.
Könnte ich mit fso.fileExist nach einer datei auf der cd suchen, die es 100% nur auf dieser cd gibt und so den richtigen laufwerksbuchstaben herausfinden??
in etwa so:
For Each drv In fso.Drives
If drv.DriveType = CDRom Then
CDPath = drv.Path
If fso.FileExists(CDPath & "\hallo.txt") Then
CDPath = drv.Path & "\"
Exit For
Else
CDPath = ""
End If
End If

habs noch nicht ausprobiert aber sollte ja funktionieren oder?
 
das wäre quick und dirty..
wieso findet der den falschen ordner?
kann der nicht einfach von anfang an mit der funktion dir oder so die dinger durchlaufen und dabei kopieren?
 
ich meinte das so:
die datenbank ist nur auf einer cd. wenn jetzt ein benutzer 2 laufwerke hat, wird er die cd ja nur in eins von beiden geben. zum kopieren muss ich herausfinden in welches laufwerk er diese cd gegeben hat. wenn nun der code mir beide laufwerksbuchstaben ausgibt nutzt es mir nichts. er soll ja nur den richtigen ausgeben. wenn er jetzt nun aufs falsche laufwerk zugreift, und sich dort kein datenträger befindet, kann er nichts kopieren und schon hat man einen fehler oder?
 
achso...
dann fang den fehler ab.
if err.num =

Private Const CDERR_STRUCTSIZE = &H1
Private Const CDERR_REGISTERMSGFAIL = &HC
Private Const CDERR_NOTEMPLATE = &H3
Private Const CDERR_NOHOOK = &HB
Private Const CDERR_NOHINSTANCE = &H4
Private Const CDERR_MEMLOCKFAILURE = &HA
Private Const CDERR_MEMALLOCFAILURE = &H9
Private Const CDERR_LOCKRESFAILURE = &H8
Private Const CDERR_LOADSTRFAILURE = &H5
Private Const CDERR_LOADRESFAILURE = &H7
Private Const CDERR_INITIALIZATION = &H2
Private Const CDERR_GENERALCODES = &H0
Private Const CDERR_FINDRESFAILURE = &H6
Private Const CDERR_DIALOGFAILURE = &HFFFF


irgendson fehler, könnte sein, dass das sogar dir richtigen konstanten irgendwo da drin richtig sind, dann soll der das näxte machen, sonst das näxte.
also mit on error goto...

verschdesde?
 
jo, thx, hätte auch selber draufkommen können. :)
danke, jetzt ist es "sauber programmiert". obwohl ich mir damit mehr mühe mache. ;-)
 

Neue Beiträge

Zurück