Bilder in Access komprimieren?

...komplette Frage anzeigen

2 Antworten

Speichere die Bilder in einem Verzeichnis auf deiner Festplatte und in Access nur den Pfad\Dateiname.

das würde bedeuten, dass ich alle bilder neu verknüpfen müsste. oder gibt es einen anderen weg?

0
@flololan

Schreib ein Programm, der diese Aufgabe erledigt. Von Hand kann das evtl. lange dauern (hängt von der Anzahl der Bilder ab).

0

zudem habe ich dann das problem, dass ich keinen gleichen pfad habe (soll auf unterschiedlichen geräten verwendet werden)

0
@flololan

Du hast eine Kopie der Datenbank pro Client? Mach mal eine Skizze die die Infrastruktur darstellt.

0
@Brainchild

Die Datenbank ist auf einem Netzlaufwerk auf welches verschiedene PCs zugreifen. Ich habe aber keine Kontrolle darüber, wie die jeweils dort das Laufwerk eingebunden haben. Es muss auf jeden Fall pfadunabhägig sein. Kann ich irgendwie einfach im Ordner der Datenbank arbeiten ohne einen absoluten Pfad zu verwenden?

0
@flololan

Das hab ich mittlerweile gelöst. 
Ich bräuchte aber trotzdem noch Hilfe: Es soll einen Knopf geben, der einem die Möglichkeit gibt ein Bild zu wählen. Dieses Bild muss dann in den Bilder-Ordner der Datenbank Kopiert werden, damit auch andere PCs die Bilder sehen können. Bloß wie mache ich das? Ich habe leider nicht besonders viel Erfahrung mit Access.

0
@flololan

Ich würde das über Scripting.FileSystemObject machen daß du über Verweise zuerst hinzufügen musst.

Hier noch ein paar nützliche Funktionen für das Verzeichnis-Handling:

Option Explicit

Dim FSO As Scripting.FileSystemObject

Public Function GenerateFolder(ByVal Pfad As String) As Boolean
If FSO.FolderExists(Pfad) Then
GenerateFolder = True
Else
If FolderCreateAble(Pfad) Then
If FSO.FolderExists(FSO.GetParentFolderName(Pfad)) Then
Call FSO.CreateFolder(Pfad)
GenerateFolder = FSO.FolderExists(Pfad)
Else
If GenerateFolder(FSO.GetParentFolderName(Pfad)) Then
Call FSO.CreateFolder(Pfad)
GenerateFolder = FSO.FolderExists(Pfad)
End If
End If
End If
End If
End Function

Public Function FolderCreateAble(ByVal Pfad As String) As Boolean
If IsValidPath(Pfad) Then
Do While Not FSO.FolderExists(Pfad) And Len(Trim(Pfad)) > 0
Pfad = FSO.GetParentFolderName(Pfad)
Loop
FolderCreateAble = Len(Pfad) > 0
End If
End Function

Public Function IsValidPath(Pfad As String) As Boolean
Select Case True
Case Len(Trim(Pfad)) = 0
Case InStr(1, Pfad, "/") > 0
Case InStr(1, Pfad, ":") > 2
Case InStr(1, Pfad, "*") > 0
Case InStr(1, Pfad, "?") > 0
Case InStr(1, Pfad, Chr(34)) > 0
Case InStr(1, Pfad, "<") > 0
Case InStr(1, Pfad, ">") > 0
Case InStr(1, Pfad, "|") > 0
Case Else
IsValidPath = True
End Select
End Function

Public Function IsValidFileName(FileName As String) As Boolean
Select Case True
Case Len(Trim(FileName)) = 0
Case InStr(1, FileName, "\") > 0
Case InStr(1, FileName, "/") > 0
Case InStr(1, FileName, ":") > 0
Case InStr(1, FileName, "*") > 0
Case InStr(1, FileName, "?") > 0
Case InStr(1, FileName, Chr(34)) > 0
Case InStr(1, FileName, "<") > 0
Case InStr(1, FileName, ">") > 0
Case InStr(1, FileName, "|") > 0
Case Else
IsValidFileName = True
End Select
End Function

Public Function FileCreateAble(ByVal Pfad As String) As Boolean
If IsValidFileName(FSO.GetFileName(Pfad)) Then
If FolderCreateAble(FSO.GetParentFolderName(Pfad)) Then
FileCreateAble = True
End If
End If
End Function

1

Was möchtest Du wissen?