Avatar billede rune_daub Nybegynder
12. december 2005 - 12:18 Der er 20 kommentarer og
1 løsning

Billeder i rapporter

Hejsa

Jeg har benyttet Sty's metode til at indsætte billeder i mine formularer. Se http://exp.dk/artikler/197.

Problemet er nu bare, at jeg også skal kunne se billederne via mine rapporter, og der virker Sty's metode ikke.

Følgende virker i min formular:
Private Sub Form_Current()
    If IsNull(Me.Screenshot1) Or Me.Screenshot1 = "C:\Fejlmeldingsbilleder\" Then
        Me.BilledeRamme1.Picture = ""
    Else
        Me.BilledeRamme1.Picture = Me.Screenshot1
    End If
End Sub

Jeg har modficeret ovenstående til følgende i min rapport.
Private Sub Report_Open(Cancel As Integer)
    If IsNull(Me.Screenshot1) Or Me.Screenshot1 = "C:\Fejlmeldingsbilleder\" Then
        Me.BilledeRamme1.Picture = ""
    Else
        Me.BilledeRamme1.Picture = Me.Screenshot1
    End If
End Sub

Det minder jo meget om hinanden. Nu er spørgsmålet, så bare.. hvorfor virker det ikke? Der er 2 fejl i det... så vidt jeg kan finde ud af ved at skære i koden.
Den første fejl er:
If IsNull(Me.Screenshot1) Or Me.Screenshot1 = "C:\Fejlmeldingsbilleder\" Then
Den kommer op med en fejl der hedder noget med at den ikke kan finde data.
Den næste fejl er i:
Me.BilledeRamme1.Picture = Me.Screenshot1
Der får jeg bare en fejl om invalid path.

Nu er jeg ikke den store VBA haj, så hvis der er nogen der kan modifcere eller fortælle mig hvorfor koden ikke virker i en rapport, men virker i en formular, så vil jeg meget gerne høre.

pft.

Rune Daub
Avatar billede hnteknik Novice
12. december 2005 - 12:25 #1
Rapporter er noget andet end forms. Jeg ved ikke hvor du skal have sat billedet ind, men f.eks. me.detailsection1 måske. Du får ikke noget ind under report.open processen.
Avatar billede rune_daub Nybegynder
12. december 2005 - 12:33 #2
Mit formål med at lægge det under Report_Open, var jo bare at aktivere eventuelle billeder, ved rapportens åbning, og ikke som du foreslår ved aktivering af detailsection1.

Men det kan godt være at jeg forsøger at bruge det forkert.

Så lad os sige at jeg har en rapport med en header, en detail section og en footer.
Jeg har indsat en billedramme og mit "link" ligger også derinde.
De hedder hver især BilledeRamme1 og Screenshot1.
Hvordan mener du så koden skal se ud? For jeg er som sagt ikke specielt god til VBA.
Avatar billede rune_daub Nybegynder
12. december 2005 - 12:34 #3
Billederammen og linket ligger selvfølgelig i Detail sectionen.
Avatar billede hnteknik Novice
12. december 2005 - 12:45 #4
Jeg bruger selv både report_open til at sætte forskellige værdier, men ting som skal ind på detailsidens skal vel først ind når den formatteres:

Private Sub Report_Open(Cancel As Integer)
    Dim tmpForm As Form
    Set tmpForm = Screen.ActiveForm
    DoCmd.Maximize

    If tmpForm.Controls("txtRepTitle") <> "" Then
        lblReportTitle.Caption = tmpForm.Controls("txtRepTitle")
    Else
    End If
End Sub


Private Sub Detalje1_Format(Cancel As Integer, FormatCount As Integer)
    dinfunktion
End Sub

functionen kan stå hvert sted.

min funktion er f.eks.:


Private Sub AlternateGray()

Const COLOR_GRAY = &HC0C0C0
Const COLOR_WHITE = &HFFFFFF

    Me.baggrund.BackColor = IIf(fGray, COLOR_GRAY, COLOR_WHITE)
    fGray = Not fGray
End Sub

med

Private Sub Sidehoved0_Format(Cancel As Integer, FormatCount As Integer)
fGray = False
End Sub

og i

Private Sub Sidefod2_Format(Cancel As Integer, FormatCount As Integer)
Dim i As Integer
  If Me.Pages = 0 Then
    ReDim Preserve GrpArrayPage(Me.Page + 1)
    ReDim Preserve GrpArrayPages(Me.Page + 1)
    On Error Resume Next
    GrpNameCurrent = Me!GrpBygn ' antal sider per bygning
   
    If GrpNameCurrent = GrpNamePrevious Then
        GrpArrayPage(Me.Page) = GrpArrayPage(Me.Page - 1) + 1
        GrpPages = GrpArrayPage(Me.Page)
            For i = Me.Page - ((GrpPages) - 1) To Me.Page
                GrpArrayPages(i) = GrpPages
            Next i
    Else
        GrpPage = 1
        GrpArrayPage(Me.Page) = GrpPage
        GrpArrayPages(Me.Page) = GrpPage
    End If
  Else
    Me!ctlGrpPages = "Side " & GrpArrayPage(Me.Page) & " af " & GrpArrayPages(Me.Page) & " for " & Me!GrpBygn
  End If
  GrpNamePrevious = GrpNameCurrent
End Sub
Avatar billede mugs Novice
12. december 2005 - 14:54 #5
Prøv at lægge koden under detaljesektionen VedPrint.
Hvis du lægger din e-mail, kan jeg sende et eksempel når jeg er hjemme.
Avatar billede rune_daub Nybegynder
13. december 2005 - 07:12 #6
mugs.. jeg er lidt i tvivl om hvad du mener. Detaljesektionen ved print?
Min mail er rune@telia.dk.
Avatar billede mugs Novice
13. december 2005 - 08:03 #7
Når du åbner rapporte i designvisning klikker du på bjælken detaljesektion > egenskaber > hændelser så er der en hændelse der hedder VedUdskrivning eller Print.
Sender et eksempel når jeg er hjemme fra arbejde.
Avatar billede rune_daub Nybegynder
13. december 2005 - 10:20 #8
Jeg fandt selv ud af problemstillingen med at få fremvist billede i en rapport.

Nu har jeg dog et problem tilbage.. og desværre nok det største.

Hvis jeg sætter et billede ind i en post, så bliver det vist i alle poster i rapporten, på trods af at det kun er knyttet til en enkelt post.

Så hvordan får jeg rapporten til at se på hvilket billede der skal sættes ind i hvilken post?

I mine poster er der ikke altid tilknyttet et billede. Kun i de tilfælde, hvor der er relevant. På nuværende tidspunkt viser rapporten ikke det reelle indhold af mine tabeller. Det vil jeg jo selvfølgelig gerne have den til.

Koden jeg har brugt blev i sidste ende til:

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
    If IsNull(Me.Screenshot1) Or Me.Screenshot1 = "C:\Fejlmeldingsbilleder\" Then
        Me.Picture1.Picture = ""
    Else
        Me.Picture1.Picture = Me.Screenshot1
    End If
End Sub
Avatar billede hnteknik Novice
13. december 2005 - 10:36 #9
Rune - det svarer jo meget godt til min:

Private Sub Detalje1_Format(Cancel As Integer, FormatCount As Integer)
    dinfunktion
End Sub

Det er altid et problem med fortløbende forms og rapporter.

Du har prøvet med Me!Picture1.Picture
Avatar billede rune_daub Nybegynder
13. december 2005 - 10:58 #10
Ja. Jeg har prøvet med Me!Picture1.Picture. Det giver samme resultat.

Problemet ligger, tror jeg, i at det er en rapport, som bliver dannet 100% ved opstart af rapporten. Altså er der ikke nogen funktion til at forespørge ved hver enkelte post, hvilket link der skal bruges til billedet.
Så jeg skal vel på den ene eller på den anden måde have sat et stykke kode ind, som fortæller Access at rapporten skal tage højde for at der kan være forskellige billeder til hver enkelte post, samt at der er nogen billeder der ikke har nogen billeder overhovedet.

Det er vel her den helt store forskel mellem en rapport og en formular ligger. At en formular forespørger på en post løbende, som posten bliver aktiveret, mens en rapport færdiggøre alle poster til præsentation før end de præsenteres.
Avatar billede mugs Novice
13. december 2005 - 11:31 #11
Jeg har haft samme problem, og jeg er sikker på svaret ligger i vidensbasen. Men jeg checker når jeg kommer hjem og sender dig et eksempel.
Avatar billede hnteknik Novice
13. december 2005 - 14:14 #12
Avatar billede mugs Novice
13. december 2005 - 14:30 #13
hnteknik:

"Display unbound images (images that don't change) by using the image control"

Det var jo netop det der var problemet, at billederne ikke skifter hvor hver post i rapporten
Avatar billede hnteknik Novice
13. december 2005 - 15:27 #14
??? Display bound images (images that change with each database record or report page)
Avatar billede hnteknik Novice
13. december 2005 - 15:46 #15
Har ikke læst det hele. De bound er måske blob images, men der tales også om links til eksterne filer. Er midt i en projektaflevering og har næppe tid nu.
Avatar billede mugs Novice
13. december 2005 - 16:39 #16
hnteknik > Læste nok ikke dit link ordentligt. Du fik mig.
Avatar billede mugs Novice
13. december 2005 - 16:42 #17
Bruger denne i rapporten for at vise billeder der skifter for hver post:

Private Sub Detaljesektion_Format(Cancel As Integer, FormatCount As Integer)
If Not IsNull(Me!FigurPath) Then
Me!Billede.Visible = True
Me!Billede.Picture = Me!FigurPath
Else
Me!Billede.Visible = False
End If
End Sub

eksempel sendt til rune daub.
Avatar billede rune_daub Nybegynder
15. december 2005 - 06:47 #18
mugs og hnteknik.. tak for hjælpen.. lag et svar herinde. Så deler jeg lige over.
Avatar billede mugs Novice
15. december 2005 - 09:37 #19
Tak for point - Jeg antager at du fik det til at fungere.
Avatar billede hnteknik Novice
15. december 2005 - 19:46 #20
>Takker
Avatar billede rune_daub Nybegynder
15. december 2005 - 22:09 #21
Ja.. Jeg fik det til at fungere.
Det tog lidt tid, men det virkede..
Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester