Witruimte rapport bij verbergen gegevens

Status
Niet open voor verdere reacties.

Schrijfblok

Gebruiker
Lid geworden
7 dec 2010
Berichten
55
Ik heb een aantal checkboxes op een formulier die velden wel of niet weergeven op een rapport, dit werkt allemaal perfect behalve dat er overal witruimte is waar de checkboxes "uit" staan.

Voorbeeld:
checkbox1 aan = veld 1 zichtbaar
checkbox2 uit = veld 2 niet zichtbaar
checkbox3 aan = veld 3 zichtbaar

Nu heb ik een witruimte tussen veld 1 en 3 die net zo groot is als veld 2, ik wil graag dat veld 1 en veld 3 netjes onder elkaar komen zonder witruimte.

Wie o wie kan mij daarmee helpen!
 
Ik vrees dat je dat niet simpel kunt oplossen.... objecten hebben namelijk een plek op het rapport waar je ze hebt neergezet. In Word kun je bijvoorbeeld een alinea verborgen maken of niet, waardoor tekst automatisch doorschuift. Zoals gezegd: in een rapport werkt dat niet. Wat je kunt doen, als redelijk simpele oplossing:
Maak een subrapport voor alleen de selectievakjes, waarbij je als bron een query gebruikt met alle selectievakjes die actief zijn. Voeg hier uiteraard ook het sleutelveld aan toe, anders kun je het subrapport niet koppelen. Dit subrapport maak je één regel hoog, en geef je de instelling <Te vergroten>=Ja. Maak het subrapport op zonder extra kenmerken, zoals lijnen etc.
Als het goed is, zie je nu een aaneengesloten tekstblok in je hoofdrapport, waarbij alle selectievakjes netjes onder elkaar staan, en de rest van de tekst daar weer bij aansluit.
 
En dit kan niet door de bijschriften te veranderen in labels en deze op "te verkleinen=ja" te zetten of door de height te veranderen bij visible=false?
 
Nee. Weliswaar zie je ze dan niet meer, maar de overige objecten blijven op exact dezelfde plaats staan. Dus je schiet er niks mee op.
De enige oplossing is, als je geen subformulier wilt, in VBA controleren of een veld de juiste waarde heeft, en de positie van de overige objecten hard instellen. Een voorbeeldje wat ik voor iemand gemaakt heb:

Je begint met het vaststellen van de afstanden. Die leg je vast in constanten.
Code:
Option Compare Database
Option Explicit
Const iTop = 5050
Const iParamLinks = 690
Const iOpmLinks = 4260
Const iAfstand = 340
Const iLblBesluit = 5780
Const iAutoBesluit = 6290
Const iBesluit = 6800

Vervolgens check je alle objecten op de waarden. Afhankelijk daarvan schuif je alles naar de goede plek.

Code:
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Dim i As Integer, iVerSchuif As Long
    For i = 1 To 5
        If Me("Parameters" & i).value = "" Then
            Me("Parameters" & i).Visible = False
            Me("Opmerking" & i).Visible = False
        Else
            iVerSchuif = i * iAfstand
            Me("Parameters" & i).Visible = True
            Me("Analyse" & i).Visible = True
            Me("Parameters" & i).Top = iTop + iVerSchuif
            Me("Parameters" & i).Left = iParamLinks
            Me("Analyse" & i).Top = iTop + iVerSchuif
            Me("Analyse" & i).Left = iOpmLinks
        End If
    Next i
    If iBesluit + iVerSchuif + Me.txtBesluit.Height > Me.Detail.Height Then
        Me.Detail.Height = iBesluit + iVerSchuif + Me.txtBesluit.Height + 10
    End If
    Me.lblBesluit.Top = iLblBesluit + iVerSchuif
    Me.txtAutobesluit.Top = iAutoBesluit + iVerSchuif
    Me.txtBesluit.Top = iBesluit + iVerSchuif
End Sub
Let wel: alle objecten die onder je selectievakjes staan, moeten ook verschuiven. Dus je bent waarschijnlijk wel even aan het rekenen...
 
Denk niet dat bovenstaande oplossing gaat werken want het zijn producten die gekoppeld zijn aan een nummer (fichenr) dus de ene keer zijn het 8 producten en vink ik product 1/2/4/7 aan en de andere keer zijn het 4 producten en vink ik 2/3 aan. Er komen dus geen vaste waarden aan te pas.

Zie voorbeeld met de witruimte:
http://img830.imageshack.us/i/testbl.png/
Boven het subformulier/onder de detailsectie van het rapport.

Gaat deze onderstaande oplossing dan nog wel werken?:
Wat je kunt doen, als redelijk simpele oplossing:
Maak een subrapport voor alleen de selectievakjes, waarbij je als bron een query gebruikt met alle selectievakjes die actief zijn. Voeg hier uiteraard ook het sleutelveld aan toe, anders kun je het subrapport niet koppelen. Dit subrapport maak je één regel hoog, en geef je de instelling <Te vergroten>=Ja. Maak het subrapport op zonder extra kenmerken, zoals lijnen etc.
Als het goed is, zie je nu een aaneengesloten tekstblok in je hoofdrapport, waarbij alle selectievakjes netjes onder elkaar staan, en de rest van de tekst daar weer bij aansluit.
 
Laatst bewerkt:
Zowel een oplossing met een query en subrapport (mijn voorkeur) als de oplossing die ik in voorbeeldcode heb gegeven gaan alletwee werken. Jouw redenatie gaat namelijk niet op: je baseert het weergeven van de verschillende tekstvakken op de waarde uit het selectievakje. Dus is het vakje aangevinkt, dan weergeven en aansluiten bij de vorige; anders niet weergeven. De volgende die weer wel is aangevinkt moet dan weer aansluiten bij de laatste die wordt weergegeven. Alleen: je programmeert je een paar slagen in de rondte....
Kortom: niet zo moeilijk doen (en denken) maar een subrapport maken voor deze tekstvakken!
 
Hmm ben bezig met het subrapport, ik heb nu het gedeelte wat ik eerst in de detailsectie had en je ziet in het screenshot hierboven in een eigen rapport geplaatst (met eigen query) en dit als subrapport ingevoegd in de rapportvoettekst(andere secties werkt helemaal niet) van het originele formulier en ik heb nog steeds witruimte :evil:

Maar ik moet dus echt alleen de selectievakjes.....
Maak een subrapport voor alleen de selectievakjes, waarbij je als bron een query gebruikt met alle selectievakjes die actief zijn. Voeg hier uiteraard ook het sleutelveld aan toe, anders kun je het subrapport niet koppelen.

Ik niet snap :(
1. Ik moet toch ook de velden productnaam/inkoopprijs/verkoopprijs in die query zetten anders kan ik ze niet in het subrapport weergeven?
2. Ik moet dus die visible.false/true code in het rapport weghalen en bij criteria in de query neerzetten dat alleen de actieve selectievakjes weergegeven moeten worden? (+zo ja, wat is deze criteria?)
 
Laatst bewerkt:
Maak er even een werkversie van; dan kijk ik wel even.
 
edit: opgelost door gewoon bij criteria -1 te zetten......
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan