Supportnet / Forum / Datenbanken
Bilddateien raussuchen & relative Pfadangabe
Frage
Hallo,
ich habe eine Datenbank für meine VCD's gemacht. Und habe im Formular auch ein Bild pro CD, diese wird dargestellt indem in der Tabelle ein Pfad angegeben wird, und dieser dargestellt wird.
Ich möchte jedoch nicht immer den Pfad einzeln eingeben, sondern mit einer art Durchsuchen die richtige Datei aussuchen und er setzt den Pfad dann selber ein.
Und dann würde es mich freuen, wenn mir einer sagen könnte, wie ich diese Pfadangaben relativ zur position der .mdb angeben kann.
Also momentan steht da immer der komplette Pfad drin. Quasi so->
E:\Sammlung\Bilder\TV-Serie\Testbild.jpg
und die Datenbank liegt in
E:\Sammlung
Wenn ich nun den Sammlungs ordner nach D:\verschiebe, funktionieren logischerweise die Bild Verknüpfungen auch nicht mehr. Wie kann ich den dies lösen?
ALso diese beiden sachen.
Danke fleißiger Helfer.....
Antwort 1 von TheBlackBird_
Hi!!
Zum Punkt relative Pfadangabe:
Versuche einmal folgendes (basierend auf Deinem Beispielpfad):
.\Bilder\TV-Serie\Testbild.jpg
Dabei bedeutet der Punkt vorm ersten BackSlash, dass der Pfad vom derzeit aktuellen Verzeichnis aus weiterverlaeuft.
Zumindest in meinen Batches funktioniert dies wirklich prima.
Wie Du die Pfade allerdings "aufsammeln" kannst, da hab ich leider derzeit keine Idee.
Cu TheBlackBird ®
Zum Punkt relative Pfadangabe:
Versuche einmal folgendes (basierend auf Deinem Beispielpfad):
.\Bilder\TV-Serie\Testbild.jpg
Dabei bedeutet der Punkt vorm ersten BackSlash, dass der Pfad vom derzeit aktuellen Verzeichnis aus weiterverlaeuft.
Zumindest in meinen Batches funktioniert dies wirklich prima.
Wie Du die Pfade allerdings "aufsammeln" kannst, da hab ich leider derzeit keine Idee.
Cu TheBlackBird ®
Antwort 2 von Schupo
Hmm ne so alleine funktioniert das nicht, dann muss man vielleicht noch in den CODE reinschreiben das der von dem Standort der .mdb ausgehen soll. Aber da wüsste ich garnicht wie das geht.
Also wenn noch einer nen Tip zu dem "aufsammeln" hat dann wäre das super.
Danke
Also wenn noch einer nen Tip zu dem "aufsammeln" hat dann wäre das super.
Danke
Antwort 3 von .struppi
Hallo,
Um den Pfad einer Datei in ein Textfeld einzutragen, könnte man eine der folgende Filedialog-Funktionen benutzen:
1.
2.
Die Funktionen in ein Modul einfügen.
Der Aufruf erfolgt dann mtw. über ein Button im Formular.
In die Klick-Ereignis Sub folgenden Code eingeben:
text1 ist der Name des Textfeldes in das der Pfad zur Datei eingetragen werden soll.
Mit dem Relativen Pfad scheint es nur zu klappen wenn die Bilder im selben Ordner gespeichert werden in der die aufrufende Datenbank liegt. Sollten die Bilder verstreut auf dem Rechner vorliegen ist der absolute Pfad sinnvoller. Ansonsten müssen sie halt in den Datenbankordner verschoben werden. Das könnte in A2000/2002 auch anders sein. Hab es in A97 getestet. Vielleicht gibt es aber auch noch eine andere Möglichkeit, die mir nicht bekannt ist....
gruß struppi
Um den Pfad einer Datei in ein Textfeld einzutragen, könnte man eine der folgende Filedialog-Funktionen benutzen:
1.
Public Function AskFile(dir As String, titel As String, Filter As String, index As Long, Flags As Integer) As String
Dim dialog As Object
Set dialog = CreateObject("MSComDlg.CommonDialog")
If Filter = "" Then
Filter = "Alle Dateien|*.*"
End If
dialog.Filter = Filter
dialog.FilterIndex = index
dialog.Flags = Flags
dialog.MaxFileSize = 260
dialog.CancelError = False
dialog.DialogTitle = titel
dialog.InitDir = dir
dialog.ShowOpen
AskFile = dialog.FileName
Flags = dialog.Flags
End Function
2.
Public Function AskFile2(dir As String, titel As String, index As Long, Flags As Integer) As String
Dim wshell, folder, Parent As Object
Dim dateien, daten As Variant
Dim Verzeichnis As String
Set wshell = CreateObject("Shell.Application")
Set folder = wshell.browseForFolder(index, titel, Flags, dir)
Set Parent = folder.ParentFolder
If TypeName(Parent) = "Nothing" Then
MsgBox "Das war wohl nischt!"
Exit Function
End If
Set dateien = Parent.Items
For Each daten In dateien
If daten.Name = folder.Title Then
AskFile2 = daten.Path
End If
Next
End Function
Die Funktionen in ein Modul einfügen.
Der Aufruf erfolgt dann mtw. über ein Button im Formular.
In die Klick-Ereignis Sub folgenden Code eingeben:
On Error Resume Next
Dim Flags As Integer, dateiname, meldung, Pfad As String
Flags = 0
Pfad ="C:/"
'Pfad = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(dir(CurrentDb.Name))) 'um im DB ordner zu suchen
dateiname = AskFile(Pfad, "Datei aussuchen!", "Bild Dateien|*.bmp;*.jpg;*.gif", 1, Flags)
If Err.Number <> 0 Then
Err.Clear
dateiname = AskFile2(Pfad, "Datei aussuchen", 0, 16384)
If Err.Number <> 0 Then
meldung = MsgBox("Fehler bei Erzeugung des Dialogfensters oder der Dateiauswahl" & vbCrLf _
& "Bild konnte nicht eingefügt werden", vbCritical, "DATEIAUSWAHL NICHT MÖGLICH")
Err.Clear: Exit Sub
End If
End If
Me.text1 = dateiname
text1 ist der Name des Textfeldes in das der Pfad zur Datei eingetragen werden soll.
Mit dem Relativen Pfad scheint es nur zu klappen wenn die Bilder im selben Ordner gespeichert werden in der die aufrufende Datenbank liegt. Sollten die Bilder verstreut auf dem Rechner vorliegen ist der absolute Pfad sinnvoller. Ansonsten müssen sie halt in den Datenbankordner verschoben werden. Das könnte in A2000/2002 auch anders sein. Hab es in A97 getestet. Vielleicht gibt es aber auch noch eine andere Möglichkeit, die mir nicht bekannt ist....
gruß struppi
Antwort 4 von Schupo
Hmm ja schon klar.
Also ich bin beeindruckt, das wird aber ein Paar stunden dauern, bis ich das habe, bzw. verstanden habe was es genau macht. Danke ich melde mich wieder ;))
Also ich bin beeindruckt, das wird aber ein Paar stunden dauern, bis ich das habe, bzw. verstanden habe was es genau macht. Danke ich melde mich wieder ;))

