Rapport veld dynamisch maken?

Status
Niet open voor verdere reacties.

fmeca

Gebruiker
Lid geworden
7 sep 2009
Berichten
95
Hoe kan ik een rapportveld dynamisch maken, bij twee onderelkaar liggende velden, zodat het velden netjes op elkaar aansluiten?
Dit spaart een hoop ruimte in mijn rapport, en ziet ook nog eens beter uit.:o
 
Als je twee velden onder elkaar hebt staan, moet ik dat dan zien als aparte rijen/records?
 
Als je twee velden onder elkaar hebt staan, moet ik dat dan zien als aparte rijen/records?

Klopt.
Twee (tekst) velden staan in een rapport. Zij bevatten tekst van diverse lengtes.
Wat ik wil creëren is dat er tussen de velden geen 'lege' ruimte onstaat doordat bijv. van de bovenste record maar 1 regel i.p.v meerdere regels worden gebruikt.
Het tweede veld schuift als het ware tegen het 1e veld.

Misschien is het met deze omschrijving duidelijker:
Ik wil de veldgrootte afhankelijk maken van het aantal tekens, niet van een bepaalde hoogte maat. (breedte ligt wel vast).
 
Het is mij nog niet helemaal duidelijk of je twee velden uit hetzelfde record onder elkaar hebt staan, of dat je de grootte per record wilt instellen.
Ik heb het zelf nog niet uitgeprobeerd, maar je kunt misschien iets doen met uitlezen van de veldlengte van het veld, en de hoogte van het tekstvak dan een bepaalde waarde geven met een Select Case, die je dan bij de gebeurtenis <Bij Opmaken> van het rapport kunt zetten.
 
Het is mij nog niet helemaal duidelijk of je twee velden uit hetzelfde record onder elkaar hebt staan, of dat je de grootte per record wilt instellen.
Ik heb het zelf nog niet uitgeprobeerd, maar je kunt misschien iets doen met uitlezen van de veldlengte van het veld, en de hoogte van het tekstvak dan een bepaalde waarde geven met een Select Case, die je dan bij de gebeurtenis <Bij Opmaken> van het rapport kunt zetten.

Ja, de velden komen uit dezefde record.
 
Ik heb het volgend uitgeprobeerd, en dat werkt:

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

    sVeld = ""
    iVeld = 0
    iFactor = 0
    Me.txtSELECTIE.Height = 240
    sVeld = Me.txtSELECTIE.Value
    iVeld = Len(sVeld)
    iFactor = Int(iVeld / 28)
    If iFactor < 0 Then iFactor = 1
    Me.txtSELECTIE.Height = Me.txtSELECTIE.Height + (iFactor * 250)
    
End Sub

Bijgaand plaatje laat het resultaat zien.
 

Bijlagen

  • Aanpassen Tekstvak.jpg
    Aanpassen Tekstvak.jpg
    70,8 KB · Weergaven: 154
Ik heb het volgend uitgeprobeerd, en dat werkt:

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

    sVeld = ""
    iVeld = 0
    iFactor = 0
    Me.txtSELECTIE.Height = 240
    sVeld = Me.txtSELECTIE.Value
    iVeld = Len(sVeld)
    iFactor = Int(iVeld / 28)
    If iFactor < 0 Then iFactor = 1
    Me.txtSELECTIE.Height = Me.txtSELECTIE.Height + (iFactor * 250)
    
End Sub

Bijgaand plaatje laat het resultaat zien.

Michel Bedankt.

In eerste instantie was ik al geholpen door in de opmaak 'Te vergroten /verkleinen' op Ja te zetten. Hierdoor werd het veld al dynamisch.
Door tevens jouw code toe te passen kan ik iets spelen met de afstand tot het volgende veld.
Maar wat gebeurt er nou werkelijk in jouw code? Dat kan ik niet helemaal volgen.
( txtSelectie is heb ik gewijzigd in de variabele van mijn veld)

vr.gr.
Eric.
 
Ik vond het zelf wel nifty... :cool:

Eerst zet ik alle variabelen op 0, en de hoogte van het tekstvak op de standaardwaarde 240.
Ik vervolgens naar de lengte van het tekstvak en de lengte van het veld dat er in moet.
Ik deel de lengte van de tekst door het aantal tekens dat ik denk dat in het tekstvak past.
In het voorbeeld reken ik met de waarde 28. Daar komt een getal uit, dat ik afrond met Int. Bij een veldlengte van 25 tekens, is de iFactor 0; bij 44 tekens is de iFactor 1.

Daarna verhoog ik de hoogte van het tektsvak met een veelvoud van iFactor. Als de tekst één regel is (kleiner dus dan 28) dan verhoog je met 0 * 250, is uiteraard 0. Bij een factor 2 komen er 2 regelhoogtes bij: 240+(2*250).
En zo door.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan