Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Bilderanzeige funzt nicht

Begonnen von DocP, Dezember 21, 2014, 14:33:06

⏪ vorheriges - nächstes ⏩

DocP

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
Gruß
Peter

DF6GL

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.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

DocP

#2
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.
????
Gruß
Peter

DF6GL

Hallo,

Du hast meine Frage nicht beantwortet: WIE wählst Du aus??
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

DocP

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.
Gruß
Peter

DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

DocP

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;
Gruß
Peter

MzKlMu

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
Gruß Klaus

DF6GL

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.


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

DocP

#9
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.
Gruß
Peter

DF6GL

#10
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....


Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

DocP

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.
Gruß
Peter

Frank77

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
Selbstständig = Selbst und Ständig