Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Bilder in Bericht, letzter Datensatz auf Seite wird nicht angezeigt

Begonnen von VolkerB, November 17, 2012, 00:30:38

⏪ vorheriges - nächstes ⏩

VolkerB

Hallo zusammen,

habe folgendes Problem.

Mein Bericht produziert 4-5 Datensätze pro Seite. Leider ist der letzte auf der Seite ohne Bilder (siehe Anhang).

Ich habe gerade noch einen 7 Seiten langen Bericht mir angesehen, auch dort ist auf der 2ten Seite und 3ten Seite (alle restlichen Seiten werden aufgrund eines Speicherüberlaufes (Acces hat lt. Taskmanager ca 1.200.000 Kb) nicht mehr angezeigt, ist aber ein anderes Problem).

Hier mal mein Code

Private Sub Detailbereich_Format(Cancel As Integer, FormatCount As Integer)
    Dim BildAnzeige(5) As Object
   
    Set BildAnzeige(1) = Me.BildAnzeige1
    Set BildAnzeige(2) = Me.BildAnzeige2
    Set BildAnzeige(3) = Me.BildAnzeige3
    Set BildAnzeige(4) = Me.BildAnzeige4
    Set BildAnzeige(5) = Me.BildAnzeige5
    Me.Text4 = ""
    For Z = 1 To 5
        Textstring = ""
        Textstring = Bildpfad_suchen(Me.[Artikel.ID], Z)
        Textstring = Bild_Verkleinern(Textstring)
'        MsgBox Textstring
        BildAnzeige(Z).Picture = ""
'        MsgBox Textstring & "   " & Me.[Artikel.ID]
        If Textstring <> "" Then ' And Textstring <> Systemeinstellungen_Feld_lesen("SysKeinBildVorhanden") Then
            BildAnzeige(Z).Picture = Textstring
            DoEvents
            Me.Text4 = Me.Text4 & Z & "   " & Textstring & vbCrLf
        End If
    Next Z
End Sub

Textstring beinhaltet, wie man in Anhang ja sehen kann, am Ende den richtigen Pfad.

Meine Frage ist nun, warum werden vom letzten Datensatz keine Bilder angezeigt? Was ich ja noch verstehen könnte, wenn nur das erste Bild nicht angezeigt werden würde. Aber alle 5 fünf nicht, obwohl doch die Bilder 2-5 die gleichen sind wie bei den andern DS auch.

ich arbeite mit Windows 7 32Bit und Access 2007 mit einem 4 GB Arbeitspeicher?

Vielen Dank schon einmal an alle, die mir antworten.

Volker

P.S. So nebenbei: Bei welcher Arbeitsspeicherauslastung ist bei Access eigentlich Schluss?


[Anhang gelöscht durch Administrator]

database

Hallo,

ist nur ein Versuch, eine vermutuzng zu äußern ...
Kann es sein, dass unten der Seitenrand des Berichts zu knapp an den Bilder-Feldern liegt,
dass der Detailbereich zu wenig Platz bietet.
Versuch einmal den Detailbereich ein wenig zu vergrößern und zwar so, dass unter den Bildfeldern mehr Platz entsteht.
Dadurch kann/sollte es sein, dass der letzte Datensatz der ersten Seite auf der 2. Seite zu stehen kommt - was passiert dann?

Dim BildAnzeige(5) As Object

Solltest du dann am Ende der Prozedur auf jeden Fall wieder zerstören sonst bleibt das Objekt im Arbeitsspeicher erhelten,
was dann wiederum zur Größe des belegten Speichers zählt.
Wenn du in deiner Applikation sehr viele solcher nicht zerstörten Objekte hast, kann es dazu führen, dass auch bei 4GB RAM die Ressourcen eng werden.



VolkerB

Hallo Database,

vielen Dank erst einmal für Deine Antwort.

Habe nun den Detailbereich um 0,4 cm erhöht. Dadurch rutscht der alte letzte Datensatz auf die nächste Seite und es wird alles richtig angezeigt.

Habe noch ein paar Kleinigkeiten verkleinert und es scheint jetzt alles zu funktionierien.

Trotzdem noch eine Verständnisfrage: Meine Bildanzeigefelder sind doch kpl. zu sehen und die Bilder sollen auf die diese Größe gezoomt werden. Warum muß ich dann ca. 0,4 cm Luft lassen, damit es funkioniert?

Was ich noch vergessen habe zu erwähnen: Das Feld Artikelbezeichnung (recht neben der Artikelnr. ist auf Vergrößern/Verkleinern mit Ja eingestellt.

Schönes  Wochenende

Volker

P.S. Set BildAnzeige(5) = Nothing habe ich als letzte Zeile vor dem End Sub gesetzt. Werde auch noch einmal den gesamten Code durchgehen und alles auf Nothing setzen. Gibt es evtl. ein Möglichkeit, alle Variablen auf Nothing zu setzen, ohne dies bei jeder zu machen?

DF6GL

Hallo,

noch ein möglicherweise erfolgreicher Tipp:

Benutze das Print-Ereignis für die Zuordnung der Bilddateien an die Bild-Steuerlemente...

Beaker s.a.

Hallo Volker,
Zitatund alles auf Nothing setzen. Gibt es evtl. ein Möglichkeit, alle Variablen auf Nothing zu setzen
Alle(s) musst/kannst Du nicht mit "= Nothing" zerstören,
nur Objekt-Variable. Das sind die, denen Du mit "Set"
einen Inhalt zugewiesen hast.
Und das musst Du auch für jede einzelne Variable in
jeder einzelnen Prozedur einzeln coden.
Einzige Ausnahme, globale Variable kannst Du mit
Auslösung eines nicht behandelten Laufzeitfehlers alle
auf einmal zerstören; - macht aber keinen Sinn.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)