Access rapport formaat weergave bijlage

Status
Niet open voor verdere reacties.
Iets te snel gereageerd mbt de gebeurtenisprocedure; "Bij laden" hoort bij het subrapport en ik moet het invoegen bij het besturingselement waarin het moet worden weergegeven.
Het besturingselement waarin het moet worden weergegeven heet "Bijlage".
Na het vervangen van afbBestandsnaam.value dooe bijlage kreeg ik een compileerfout op "ImageFrame1"
Ik dacht dat ik iets van VBA begon te begrijpen, dat lijkt niet zo te zijn.
 
De code zet je in het subrapport; als het goed is koppelt het aan de Details sectie van dat rapport. Gebeurt dat niet, dan moet je dat nog even handmatig doen door in de detailsectie op de knop Met de drie puntjes te klikken achter de regel Bij opmaken>. De code hoort namel9jk bij de Details sectie, niet <bij laden>.
 
OctaFish,

Voor
Code:
Me.Details.Height = ImgCtrlHeight + DetailMinHeight
mist er nog een module, functie of Cont.

Hier mijn code die redelijk goed de foto's weergeeft.

Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
Dim h As Long
Dim b As Long
Dim pic As stdole.IPictureDisp



Call verklein

    If IsNull(Me.antfot) Then
        GoTo eruit
    Else
        Set pic = Application.LoadPicture(Me.antfot)
        h = Round((pic.Height / (getdpi / 20)))
        b = Round((pic.Width / (getdpi / 20)))
   
        
        Me("afbFilm").Visible = True
        Me("afbFilm").Move 1, 1, b, h
        Me("afbFilm").Picture = Me.antfot
       
    End If

eruit:

Me.Details.Height = 0
End Sub
Function verklein()

Me("afbFilm").Visible = True
Me("afbFilm").Picture = ""
Me("afbFilm").Move 1, 1, 1, 1
Me("afbFilm").Visible = False

End Function


In een Module:

Code:
Option Compare Database
Option Explicit

Private Const logpixelsx As Long = 88
Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32.dll" (ByVal hdc As Long, ByVal nindex As Long) As Long

Private Declare PtrSafe Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long

Declare PtrSafe Function ReleaseDC Lib "user32.dll" (ByVal hwnd As Long, ByVal hdc As Long) As Long

Public Function getdpi() As Long
Dim hdcScreen As Long
Dim iDPI As Long
iDPI = -1
hdcScreen = GetDC(0)
If (hdcScreen) Then
iDPI = GetDeviceCaps(hdcScreen, logpixelsx)
ReleaseDC 0, hdcScreen
End If
getdpi = iDPI


End Function


Gr. Cor
 
Ik snap de toegevoegde waarde van die functie niet; kan makkelijk in één module.
Code:
Private Sub Details_Format(Cancel As Integer, FormatCount As Integer)
Dim h As Long, b As Long
Dim pic As stdole.IPictureDisp

    With Me.afbFilm
        .Visible = True
        .Picture = ""
        .Move 1, 1, 1, 1
        .Visible = False
    End With
    If IsNull(Me.antfot) Then GoTo eruit
    Set pic = Application.LoadPicture(Me.antfot)
    h = Round((pic.Height / (getdpi / 20)))
    b = Round((pic.Width / (getdpi / 20)))
    With Me.afbFilm
        .Visible = True
        .Move 1, 1, b, h
        .Picture = Me.antfot
    End With

eruit:
Me.Details.Height = 0

End Sub

De overtollige lege regels in jouw code zijn meer dan voldoende om die functieregels mee te vullen :)
 
OctaFish,

Natuurlijk mag u een commentaar geven op een functie, maar op een vraag van mij: er mist nog een module, functie of Cont, geeft u niet thuis.

Op het internet kwam ik een gelijksoortige mogelijke oplossing tegen, die kon van mij gelijk het ronde archief in.

Heeft u een aanpassing gemaakt, dan zou ik die graag willen zien.

Gr. Cor
 
Excuus; ik had ze meegekopieerd met de functie (dacht ik) maar toch niet :). Het zijn geen functies, maar constanten overigens.

Code:
Option Compare Database
Option Explicit
Const DetailMinHeight = 700
Const ImgCtrlHeight = 2000

Kun je zelf mee stoeien uiteraard.
 
Heren,
Dank voor uw tomeloze inzet!
Enige vorm van competitie brengt ons vaak een stukje verder, mits opbouwend van aart.
Maar neemt u mij niet kwalijk dat ik op uw niveau niet mee kan komen en dus het spoor redelijk bijster ben.
Ik denk dat ik de diverse codes maar één voor één uitprobeer en kijk wat er gebeurt. Ik zal dat in de detailsectie doen zoals Octafish al eerder aangaf "bij opmaken".
Anders gezegd de handleiding (die ik meestal niet nodig heb) om dit in mijn database te implementeren ontgaat mij nu volledig.
 
OctaFish,

Natuurlijk, is het dezelfde functie die ik zag op het internet.

Daar kan je mee stoeien, maar geef dan eens de werkende code, er was namelijk geen module of functie aangegeven.

Jaren geleden heb ik hier naar gezocht en tot nu toe kwam ik geen goede oplossing tegen.

De oplossing die ik gaf daar kwam ik jaren geleden bij toeval achter, kan u zeggen dan heeft u niet goed gezocht, geef me dan maar eens aan waar op het internet de oplossing wel staat,
of u juiste code.

Het is gemakkelijk om op een vraag ja te zeggen als er een voorbeeld wordt gegeven.

Gr. Cor
 
Paperwhite,

Er zijn voor mij ook nog dingen die mijn pet te boven gaan en dan geef ik dat toe of reageer niet op een vraag van een TS.

Vraag als je ergens niet uitkomt hoe iets moet, zo ben ik ook begonnen en nog weet ik maar de helft of zoiets.

Gr. Cor
 
Natuurlijk, is het dezelfde functie die ik zag op het internet. Daar kan je mee stoeien, maar geef dan eens de werkende code, er was namelijk geen module of functie aangegeven.
De werkende code hád je dus al :). Overigens zie ik geen reden voor dit nogal badinerende toontje. Beetje vriendelijker mag best wel. En de code werkt dus wél, in tegenstelling tot wat jij denkt.
 
Enige vorm van competitie brengt ons vaak een stukje verder, mits opbouwend van aard.
Ik zie het bepaald niet als ’competitie’, want uiteindelijk valt er voor ons niks te winnen of verliezen. Het gaat er om dat jij geholpen bent. Ik zal de code implementeren in jouw rapport. Zal vast wel lukken :).
 
Octafish,
begrijp mij niet verkeerd: competitie was positief bedoeld, waar mensen aangemoedigd worden door opmerkingen van anderen kom je is mijn ervaring vaak tot een beter resultaat. Misschien had ik iets met stimulerend moeten schrijven.
Ik ben erg blij met jullie hulp en ik begrijp dat er niks te winnen of verliezen valt voor jullie behalve dat het helpen van anderen je ook een goed gevoel geeft (bij mij werkt dat wel zo).
 
Mij bevalt het toontje van pletter eerlijk gezegd niet zo. De code die ik heb gebruikt (en gepost) werkt gewoon. Kun je zo in een rapport plakken. Daarvoor hoef ik geen db te posten. Wél wil ik ‘m in de db van TS zetten, want díe heeft de vraag gesteld. Uiteraard mag pletter best zélf een vraag aanmaken, met een bestandje erbij. Wil ik er met alle plezier naar kijken :).
 
Octafish,
Gezien de compileer fouten die ik krijg als ik de code in het rapport plak, zou het heel fijn zijn als je het in de db zou willen zetten.
Of aangeven waar en wat ik moet veranderen om het aan te passen.
Ik weet niet of het van belang is maar ik heb nog eens gekeken naar het veld type Bijlage. Ik was in de veronderstelling dat de bijlages extern werden opgeslagen maar dat is niet juist, als ik de naam van een bestand wijzig wordt deze in de db nog steeds weergegeven.
 
Bijlagen worden (in het bijlageveld) binnen de database opgeslagen. Dat is niet handig, omdat je db nogal snel groeit. Ik doe dat dus nooit: ik sla afbeeldingen etc. altijd op in een map buiten de database. Als dat een map is onder de map waarin de database staat, dan kun je e.e.a. altijd relatief houden, zodat je bij verplaatsen van de database (+map met afbeeldingen) niets hoeft aan te passen.
 
Mijn map met bijlagen staat inderdaad onder die van de db.
In een eerdere versie van Access was met de bestanden een koppeling via OLE gemaakt. Met de nieuwe (2026?) versie van Access kwam het advies om bestanden als bijlagen te koppelen, vandaar die keus.
Het groeien van de db ben ik niet zo heel bang voor, het aantal bestanden (meestal zwart/wit en klein van omvang) zal niet gauw boven de 100 uitkomen. Dus dat valt nog wel te overzien.
Ik heb op een gegeven moment het mdb bestand geconverteerd naar accdb; toen werkten mijn koppelingen niet meer en ben ik maar overgestapt op het Bijlage model. Microsoft pushte dat aardig als de teksten las hoe makkelijk het met bijlagen zou gaan en hoe lastig het OLE etc was.
Als het voor het weergeven in het rapport makkelijker is om dat aan te passen, vind ik dat op zich geen probleem.
 
Met de nieuwe (2026?) versie van Access kwam het advies om bestanden als bijlagen te koppelen, vandaar die keus.
Hoe kom jij aan die supernieuwe versie? De laatste versies zijn Office 2019 en Office 365 (online versie). Dus 2026 is bij mijn weten nog niet uit :). Als die 'tip' van Microsoft kwam, dan moet je even in de keuken een pot zout ophalen, want dan heb je aan een korreltje niet genoeg :). Overigens heb je geen OLE nodig; dus dat aspect snap ik al niet.
 
Nu je ziet wat mijn typevaardigheid is, begrijp je de rest vast ook wel.
Ik heb nu Microsoft 365 de opvolger van Office 365 ;)
Die pot zout is ondertussen al op, ik leer af en toe toch wat bij.
In het kader van leren verneem ik natuurlijk graag hoe ik mijn bestanden extern kan koppelen zonder Bijlage of OLE, het moet natuurlijk wel voordelen bieden.
 
Ik heb nu Microsoft 365 de opvolger van Office 365 ;)
Loop je tóch weer voor op de rest van de mensheid, want die moet het nog doen met Windows 10 en Office 365 :). 'Koppelen' van bestanden is ook niet echt van toepassing; je slaat alleen de bestandsnaam (inclusief pad) op van de bijlagen, en je leest die vervolgens in op de formulieren/rapporten. Komt verder geen magie aan te pas :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan