8.1k Aufrufe
Gefragt in Datenbanken von
Ich habe ca. 1000 Matchbox-Modelle in einer Datenbank erfasst. Unter anderem gibt es auch ein Feld in der Erfassungstabelle mit Namen "Bilddatei", in dem der Pfad zu einem JPG-Bild des betreffenden Modells gespeichtert ist (z.B.: H:\matchbox\A-Serie\01A.jpg). Nun möchte ich, wenn ich über die Formularabfrage ein bestimmtes Modell suche, daß das zugehörige Bild von der Fundstelle (im Feld Bilddatei als Text eingegeben)geholt und im Formular (wie ein "Paßbild") angezeigt wird. Wie muß das Feld "Bildabfrage" beschaffen sein? Welche Sub-Routine muß ich evtl. anlegen, damit das Bild zum entsprechenden Formular verknüpft wird? Zur Bildanzeige verwende ich standardmäßig IrvanView. Habe schon einiges an Büchern gewälzt, aber das richtige noch nicht gefunden. Bin für jeden Tip dankbar

2 Antworten

0 Punkte
Beantwortet von
Moin,

ich würde anders vorgehen. Das Feld "Bilddatei" cdf Tabelle in das Format "OLEObjekt " ändern und dann dort im der Tabelle das Bild einfügen.
Dann kannst du in deinem Formular diese Feld direkt anzeigen lassen.
Nachteil der Geschichte, meines Wissens funktiuoniert das nur mit Bitmaps, da Access keine jpg´s unterstützt. Könnte aber auch von der Officeversion abhängen, meine ist schon etwas betagt.

Byebye

ch
0 Punkte
Beantwortet von
Ich hab im Netz folgenden Code gefunden. Meine Tabelle danach angelegt so das ich den Code nicht verändern musste.
Die Bilder liegen alle in einem seperaten Ordner auf der Platte.Hat den Vorteil, das die DB nicht zu Groß wird. Den Pfad zu den Bildern in die Tabelle einfügen. Im Formular ein Bildelement einfügen und in den Eigenschaften bei Bild eine Bilddatei angeben. Nun noch die Textfelder erstellen und den Rest erledig der Code. Funktioniert einwandfrei und zu jedem Datensatz wird das passende Bild angezeigt.

hier der Code:

Option Compare Database
Option Explicit

Public Function DisplayImage(ImageControl As Control, strImagePath As Variant) As String
On Error GoTo Err_DisplayImage

Dim strResult As String
Dim strDatabasePath As String
Dim intSlashLocation As Integer

With ImageControl
If IsNull(strImagePath) Then
.Visible = False
strResult = "No image name specified."
Else
If InStr(1, strImagePath, "\") = 0 Then
' Path is relative
strDatabasePath = CurrentProject.FullName
intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath))
strDatabasePath = Left(strDatabasePath, intSlashLocation)
strImagePath = strDatabasePath & strImagePath
End If
.Visible = True
.Picture = strImagePath
strResult = "Image found and displayed."
End If
End With

Exit_DisplayImage:
DisplayImage = strResult
Exit Function

Err_DisplayImage:
Select Case Err.Number
Case 2220 ' Can't find the picture.
ctlImageControl.Visible = False
strResult = "Can't find image in the specified name."
Resume Exit_DisplayImage:
Case Else ' Some other error.
MsgBox Err.Number & " " & Err.Description
strResult = "An error occurred displaying image."
Resume Exit_DisplayImage:
End Select
End Function

Private Sub Form_AfterUpdate()
CallDisplayImage
End Sub

Private Sub Form_Current()
CallDisplayImage
End Sub

Private Sub txtImageName_AfterUpdate()
CallDisplayImage
End Sub

Private Sub CallDisplayImage()
Me!txtImageNote = DisplayImage(Me!ImageFrame, Me!txtImageName)
End Sub

Gruss Andy
...