Afbeelding in een rapport probleem

Status
Niet open voor verdere reacties.

remmie63

Gebruiker
Lid geworden
4 jan 2011
Berichten
393
:confused:Als ik een rapport maak van tekstvelden, die via code gekoppeld zijn aan een afbeelding, krijg ik de afbeeldingen niet zichtbaar in het rapport. Hoe los ik dit op?


Code:
Private Sub Afb_ZON_Click()
    If Not Dir(CurrentProject.Path & "\Iconen\Licht\" & Me.Afb_ZON) = "" Then
        Me.Afbeelding91.Picture = CurrentProject.Path & "\Iconen\Licht\" & Me.Afb_ZON
    Else
        Me.Afbeelding91.Picture = ""
    End If
    If Me.Dirty Then Me.Dirty = False
    Me.Repaint
End Sub
 
Kijk hier eens; daar staat een voorbeeldje met de juiste code.
Tipje van de sluier: een Click event gaat natuurlijk nooit werken, want je klikt nergens op. Een rapport moet worden opgemaakt, en dat gebeurt in jouw geval in de Detail sectie van het rapport.
 
Deze code komt ook uit het formulier. Ik ga er mee aan de slag.
Bedankt!
 
Formulieren werken anders als rapporten; je kunt de gebeurtenis <Bij aanwijzen> vergelijken met :

Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
End Sub

Code:
Private Sub Paginakoptekstsectie_Format(Cancel As Integer, FormatCount As Integer)
End Sub

Code:
Private Sub Rapportkoptekst_Format(Cancel As Integer, FormatCount As Integer)
End Sub
 
Ik heb de db van De Vries bekeken en jouw code. Ik snap de code niet goed. Er staat "With Me. imgProfiel" dat is het imgobject in het rapport. Maar hoe wordt de link naar de foto's gelegd?
Code:
strFotos = Application.CurrentProject.Path
    tmp = Dir(strFotos & "\" & Me.txtNaamAfbeelding & ".jpg")
eerste regel is het pad naar de db locatie maar de tweede regel is onduidelijk! Waar verwijst "txtNaamAfbeelding" naar toe. Ik heb de db bekeken en het is geen bestaand veld. Maar ik neem aan dat dit toch de koppeling is tussen boomnaam en afbeelding.


Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
On Error GoTo Foutafhandeling
Dim strFotos As String, tmp As String
    
    strFotos = Application.CurrentProject.Path
    tmp = Dir(strFotos & "\" & Me.txtNaamAfbeelding & ".jpg")
    If tmp & "" <> "" Then
        With Me.imgProfiel
            .Visible = True
            .Picture = strPic
            .Width = 5000
            .Height = 5000
        End With
    Else
        Me.imgProfiel.Visible = False
    End If
    Exit Sub

Foutafhandeling:
    MsgBox Err.Number & "  " & Err.Description

End Sub
 
Me.txtNaamAfbeelding zou een bestaand tekstveld moeten zijn in het rapport (of formulier). Met heen en weer kopieëren van voorbeeldcode wil er nog wel eens een verkeerd naampje blijven staan. Is derhalve vrij te wijzigen naar het door jouw gebruikte veld waarin de foto staat.
De Dir regel leest vervolgens het volledige pad uit, en kijkt of de afbeelding bestaat, en tonen in het rapport/formulier. Zo niet: niks doen...
 
Staat deze code nu onder het rapport of het formulier? Er staat geen verwijzing naar het formulier en de veldverwijzingen hebben ook betrekking op het formulier ik ga er dan ook vanuit dat het onder het formulier komt te staan!
 
Een rapport en een formulier gaan eigenlijk hetzelfde om met afbeeldingen: een tekstvak met de naam van de afbeelding, en een afbeeldingsvak dat voor elk record het juiste plaatje moet laten zien op basis van de naam het tekstvak. Vandaar dat je dezelfde code wel ongeveer kunt gebruiken. Alleen is het moment waarop je de code uitvoert anders: bij formulieren is dat <Bij Aanwijzen> (OnCurrent), bij rapporten <Bij opmaken> (OnFormat).
 
Me. geeft al aan dat het een object van het rapport of formulier is :)
De naam dus van een tekstvak.
 
Ik heb de code aangepast. Er wordt verwezen naar het bestandspad maar daar staat alleen de db in dus ik heb de mappen toegevoegd. In dit geval voor Afb_JAAR.

Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
On Error GoTo Foutafhandeling
Dim strFotos As String, tmp As String
    
    strFotos = Application.CurrentProject.Path & "\Iconen\Jaar\" & Me.Afb_JAAR
    tmp = Dir(strFotos & "\" & Me.Afbeelding111 & ".jpg")
    If tmp & "" <> "" Then
        With Me.Afb_JAAR
            .Visible = True
            .Picture = strPic
            .Width = 100
            .Height = 100
        End With
    Else
        Me.Afb_JAAR.Visible = False
    End If
    Exit Sub

Foutafhandeling:
    MsgBox Err.Number & "  " & Err.Description

End Sub

Het werkt zo niet! Zie jij waar de fout zit?
 
Ja, en die is vergelijkbaar met het probleem in de andere draad. Je controleert alleen maar of het plaatje bestaat of niet, en dat heeft geen zin. Waar het om gaat, is of de waarde in het tekstvak leeg is of niet. Bij ja: geen plaatje ophalen, en bij nee: haal het plaatje op en laat het zien. Bovendien gebruik je twee variabelen namen voor hetzelfde, waarbij je de eerste vult, en de tweede koppelt aan het plaatje. Dat werkt natuurlijk ook niet!

Code:
    strPic = Application.CurrentProject.Path & "\Iconen\Jaar\" & Me.Afb_JAAR
    tmp = Dir(strPic & "\" & Me.Afbeelding111 & ".jpg")
    If Me.Afb_JAAR & "" <> "" Then
        With Me.Afb_JAAR
            .Visible = True
            .Picture = strPic
            .Width = 100
            .Height = 100
        End With
    Else
        Me.Afb_JAAR.Visible = False
    End If
 
Maar waar plaats ik dit?

En "het tekstvak leeg of niet" wat heeft dat voor invloed op het img bestand. Het plaatje wordt toch al met de huidige code opgehaald. Het probleem zit'em erin dat in het rapport dat img veld niet selecteerbaar is en dus ook niet zichtbaar wordt. Alleen de records die ook in de tabel voorkomen zijn invoegbaar in de rapportopmaak. Dit img veld is toegevoegd in het formulier en gekoppeld aan een tekstveld.
Het rapport herkend dit img veld niet.
 
Je moet uiteraard in je rapport wel een afbeeldingsobject hebben voor de plaatjes, anders zie je niks. En de zichtbaarheid daarvan is afhankelijk van de waarde in het bijbehorende tekstveld.
 
Ik heb het img object toegevoegd in het rapport (afb37). Ook dit werkt niet, sterker nog nu werkt mijn formulier ook niet meer. Er worden geen plaatjes meer geladen.

Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
On Error GoTo Foutafhandeling
Dim strFotos As String, tmp As String
    
    strPic = Application.CurrentProject.Path & "\Iconen\Jaar\" & Me.Afb_JAAR
    tmp = Dir(strPic & "\" & Me.Afbeelding37 & ".jpg")
    If Me.Afb_JAAR & "" <> "" Then
        With Me.Afb_JAAR
            .Visible = True
            .Picture = strPic
            .Width = 100
            .Height = 100
        End With
    Else
        Me.Afb_JAAR.Visible = False
    End If
    
    End Sub
 
Ja, en die is vergelijkbaar met het probleem in de andere draad. Je controleert alleen maar of het plaatje bestaat of niet, en dat heeft geen zin. Waar het om gaat, is of de waarde in het tekstvak leeg is of niet. Bij ja: geen plaatje ophalen, en bij nee: haal het plaatje op en laat het zien. Bovendien gebruik je twee variabelen namen voor hetzelfde, waarbij je de eerste vult, en de tweede koppelt aan het plaatje. Dat werkt natuurlijk ook niet!

Het tekstvak, in dit geval afb_JAAR, is nooit leeg. Er zijn drie keuzemogelijkheden voor dit vak één van de drie staat er altijd in en is ook gekoppeld aan een image. Een leeg veld bestaat kan dus niet.

Zou je me kunnen uitleggen wat je bedoelt met "twee variabelen namen voor hetzelfde"?
 
Hoe ik het ook draai of keer ik krijg de code niet aan het werk. Kun je helpen?
 
Ik merk dat ik geen reacties meer krijg! Ik zal wel iets cruciaals of wat al vaker gezegd is over het hoofd zien. Maar helaas ben ik maar een leek op dit gebied. Ik zou graag een hint krijgen wat ik over het hoofd zie?
Het zou fijn zijn deze vraag te kunnen sluiten.
 
Ik zal er weer eens naar kijken!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan