Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: DocP am Dezember 21, 2014, 14:33:06

Titel: Bilderanzeige funzt nicht
Beitrag von: DocP am Dezember 21, 2014, 14:33:06
Hallo liebe Leute,
ich hab' ein Problem. Möglicherweise kann mir jemand helfen.

Ich benutze Access 2010.

In einem Formular lasse ich Bilder anzeigen die woanders gespeichert sind. Ich habe ein normales Bild-Steuerelement eingebaut und lasse ein Bild für jeden Datensatz anzeigen.
Die Datensätze wähle ich mit einem Listenfeld aus, worauf das
entsprechende Bild angezeigt wird. Es funzt gut aber das Bild des ersten Datensatzes in dem Listenfeld wird einfach nicht angezeigt.
Ich habe die Datensätze geändert aber immer ist es der erste Datensatz bei dem das Bild nicht angezeigt wird.

Die Bildanzeige steuere ich in VBA bei den Ereignissen "Beim Öffnen" und "Bei der Anzeige" mit folgendem Code:

        Dim strPfad As String
        If Not IsNull(Me!xyz_ID) Then
            strPfad = "C:/Bilder/xyz/" & Me!xyz_ID & ".jpg"
                If Dir(strPfad) <> (vbNullString) Then
                    Me!Foto.Picture = strPfad
                    Me!Foto.Visible = True
                Else
                    Me!Foto.Visible = False
                End If
        End If

Hat jemand eine Lösung ?
Gruß Peter
Titel: Re: Bilderanzeige funzt nicht
Beitrag von: DF6GL am Dezember 21, 2014, 14:41:26
Hallo,

"Die Datensätze wähle ich mit einem Listenfeld aus,"

WIE machst Du das? Heißt das auch, dass Du damit das Formular filterst und auch andere Felder aus der dahinter liegenden Tabelle anzeigst?

Vermutlich ist das Ereignis "Form_Open" nicht das richtige, benutz das "Form_Load" anstelle.
Titel: Re: Bilderanzeige funzt nicht
Beitrag von: DocP am Dezember 21, 2014, 14:47:56
Hallo Franz,
ja ich wähle den gesamten Datensatz mit dem Listenfeld. In den Datensätzen befinden sich noch eine ganze Menge Textfelder.
Und ich habe natürlich das "Form_Load"-Ereignis benutzt.
und nicht "Form_Open".
Habe das nur hier falsch geschrieben.
Funzt trotzdem nicht.
????
Titel: Re: Bilderanzeige funzt nicht
Beitrag von: DF6GL am Dezember 21, 2014, 17:01:36
Hallo,

Du hast meine Frage nicht beantwortet: WIE wählst Du aus??
Titel: Re: Bilderanzeige funzt nicht
Beitrag von: DocP am Dezember 21, 2014, 18:53:11
Mit einem Listenfeld das auf einer sql-Abfrage beruht in dem nach einem Textfeld alphabethisch sortiert und die Datensätze nach einer check-Box gefiltert (ja) wird.
Titel: Re: Bilderanzeige funzt nicht
Beitrag von: DF6GL am Dezember 21, 2014, 21:12:35
Hallo,


und die Datensätze nach einer check-Box gefiltert (ja) "

versteh ich nicht...

und es keine Beschreibung WIE (VBA-Code, Makro, oder was) gefiltert wird
Titel: Re: Bilderanzeige funzt nicht
Beitrag von: DocP am Dezember 21, 2014, 21:33:47
SQL:

SELECT tbl_Bonsai_Pflanzen.Pflanzen_ID, tbl_Bonsai_Pflanzen.Pflanzenname_dt, tbl_Bonsai_Pflanzen.Indoor
FROM tbl_Bonsai_Pflanzen
WHERE (((tbl_Bonsai_Pflanzen.Indoor)=Yes))
ORDER BY tbl_Bonsai_Pflanzen.Pflanzenname_dt;
Titel: Re: Bilderanzeige funzt nicht
Beitrag von: MzKlMu am Dezember 21, 2014, 23:27:13
Hallo,
bin nicht sicher, ob es mit Yes geht. Versuche es mal mit True.
SELECT Pflanzen_ID, Pflanzenname_dt, Indoor
FROM tbl_Bonsai_Pflanzen
WHERE Indoor=True
ORDER BY Pflanzenname_dt
Titel: Re: Bilderanzeige funzt nicht
Beitrag von: DF6GL am Dezember 22, 2014, 08:11:20
Hallo,
wenn das der SQL-String für die Datensatzherkunft des Listenfeldes ist und die Datensätze richtig angezeigt werden, bleibt immer noch die Frage offen, WIE (durch welchen Code, Makro, oder auch Abfrage-Parameter) das Formular denn nun gefiltert wird.   ::) 

Zur Ausgangslage: Wenn das Bild beim Klick auf den ersten Listenfeldeintrages nicht angezeigt wird, könnte(!) es sein, dass der erste Listenfeldeintrag bereits den Fokus hat und nicht mehr auf einen Mausklick reagiert und dadurch das Form auch nicht gefiltert , bzw. aktualisiert (????)  wird.


Titel: Re: Bilderanzeige funzt nicht
Beitrag von: DocP am Dezember 22, 2014, 09:21:48
Das Formular wird gefiltert durch ein eingebettetes Makro.

Beim Öffnen des Formulars wird der richtige (erste) Datensatz und das dazugehörige Bild angezeigt.
Wenn ich dann einen anderen als den ersten Listeneintrag anklicke, dann wird der richtige Datensatz und das richtige Bild angezeigt. Danach klicke ich wieder auf den ersten Eintrag, dann wird der richtige Datensatz aber das falsche Bild angezeigt. Also kann das mit dem Fokus nicht sein.

Merkwürdig.
Titel: Re: Bilderanzeige funzt nicht
Beitrag von: DF6GL am Dezember 22, 2014, 10:37:26
Hallo,


was denn jetzt: wird das FALSCHE Bild angezeigt
oder wird KEIN Bild angezeigt???

WIE lautet denn nun dieses Makro und zudem, WIE lautet die Datenherkunft des Forms?

Unendliche Fragen....

Wenn das FALSCHE Bild angezeigt wird, dann setz mal einen Haltepunkt an die Zeile

<<edit>
strPfad = "C:\Bilder\xyz\" & Me!xyz_ID & ".jpg"
<</edit>>
und prüfe den Inhalt von Me!xyz_ID , ob der auch dem erwarteten ID-Wert entspricht.

Anschliessend öffnest Du die diesem ID-Wert entspr. Datei über den Windowsexplorer und prüfst, ob darin wirklich das richtige Bild steckt....


Titel: Re: Bilderanzeige funzt nicht
Beitrag von: DocP am Dezember 23, 2014, 10:33:25
Jetzt hab ich die Lösung gefunden.

Wenn man in Access 2010 ein Listenfeld zur Datensatzauswahl einbaut, dann erstellt Access ein "eingebettetes Makro" automatisch.
Dieses Makro funktioniert einfach nicht richtig.

Ich habe jetzt dieses Makro gelöscht und eine konventionelle Prozedur in VBA geschrieben:

----------------------------------
On Error GoTo MyError
    'Den mit dem Steuerelement übereinstimmenden Datensatz suchen.
        Dim rs As Object
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[Pflanzen_ID] = " & (Nz(Me![lst_Suchen_dt], 0))
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    'Suchfeld leeren:
        Me!lst_Suchen_dt = 0
MyExit:
    Exit Sub
MyError:
    MsgBox Err.Description
    Resume MyExit
----------------------------------

Jetzt funzt alles !!
Danke für die Bemühungen.
Titel: Re: Bilderanzeige funzt nicht
Beitrag von: Frank77 am Januar 02, 2015, 02:49:10
Hallo!

Ich wür des ungefär so lössen

gruß Frank

Public Function akt_Verz_Pflanze() As String
    akt_Verz_Pflanze = CurrentProject.Path & "\Pflanze\"
End Function

Public Function akt_Verz_KeinBild() As String
    akt_Verz_KeinBild = CurrentProject.Path & "\Pflanze\KeinBild.jpg"
End Function


Private Sub Bild()
    Dim lItem As Long
    Dim itemSelected As Boolean
    On Error GoTo Bild_Error
    itemSelected = False
    For lItem = 0 To Me!lst_Suchen_dt.ListCount - 1
        If Me!lst_Suchen_dt.Selected(lItem) = True Then
            itemSelected = True
            Exit For
        End If
    Next
    Select Case itemSelected
    Case True
        Me.Recordset.FindFirst "[Pflanzen_ID] = " & Me!lst_Suchen_dt    '.Column(0)
        Select Case Len(Dir(akt_Verz_Pflanze & "Bildname.jpg"))
        Case 0
            Me!Foto.Picture = akt_Verz_KeinBild
            MsgBox "Möchten Sie ein Bild anlegen?"
        Case Else
            Me!Foto.Picture = akt_Verz_Pflanze & "Bildname.jpg"
        End Select
    Case False
        MsgBox "es wurde keine auswahlgetroffen!"
    End Select
    On Error GoTo 0
    Exit Sub
Bild_Error:
    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure Bild of Modul Modul1"
End Sub