[CrystalReports] Formula fields met parameters?

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008
  • Reageer

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
Ik heb, voor de zoveelste keer, weer eens ruzie met Crystal Reports (9, dev. edition)...

Dit is het geval: Ik heb in mijn database een aantal velden, bijv. telefoon, fax, email van een klant. Nu wil ik als er iets in die velden staat dat CR er "tel. " voor zet, of "fax. ". Ik weet dat ik gewoon een los text-object voor het field kan zetten op mijn report met die tekst er dan dus vast in. Maar ik wil dat als er géén telefoonnummer bekend is, dat "tel. " ook niet weergegeven wordt.

Nu kun je dat doen met een formula field met een formule als:
code:
1
IIF(Len({tbl_Relaties.rel_Telefoon})>0,"Tel. " & Chr(9) & {tbl_Relaties.rel_Telefoon},"")

ik heb voor basic syntax gekozen onder Crystal Reports

De ellende is dat ik zo een hele bult veldjes heb, en ik dus voor ieder veldje dan een formula moet maken. Kan ik niet op de een of andere manier een formula field aanroepen of een functie maken die dit voor me doet? Dus iets van:

code:
1
2
3
function myPrefix(sPrefix, sValue)
  IIF(Len(sValue)>0,sPrefix  & Chr(9) &  sValue,"")
end function

En dan op de een of andere manier zo'n db-field er door heen jassen zonder steeds een formula te moeten maken? En zo nee, wat ik dus vrees (hence de topictitel), kan ik dan voor ieder db field een formula maken die mijn prefix functie (formula?) vervolgens weer aanroept in de trend van:
code:
1
myPrefix("Tel. ", {tbl_Relaties.rel_Telefoon})

Dat scheelt elke keer die klote IIF en db fieldnamen 2x typen (jaja, of klikken ja...)
Als ik door ga zoals ik het nu heb, dan is het reportje niet erg onderhoudsvriendelijk...

En dan heb ik nog wat "losse flarden vraagjes":
• Kent Crystal geen constanten voor CrLf (vbCrLf) en Tab (vbTab) ofzo? Ik kan wel crPi, crRTFText en nog een whole bunch of useless consts vinden, maar zulke simpele niet :?

• Als ik een tekstveld laat "groeien" (dus meerdere regels) dan schuiven alle velden eronder niet mee, tenzij ik er een aparte sectie van maak... wat is dat nou weer voor onzin? Mis ik iets?

Ik baal er nu al weer van dat ik in de aanloop van het project niet heb gekozen voor XSL-FO (*hoewel die ook weer zijn nadelen heeft*)

[ Voor 32% gewijzigd door RobIII op 19-01-2005 16:01 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
:Y) Tikje :Y)
Ik heb wel al ontdekt dat ik er een tekstlabel voor kan gooien, en die dan met een formule bij "suppress" weer kan koppelen aan het db field. Dus ik heb nu voor de "suppress formule" die aan mijn textfield hangt:
code:
1
Len({tbl_Relaties.rel_Telefoon})=0

Als er geen telefoonnummer is verbergt 'ie nu dus netjes het veld. Maar dan moet ik dat voor ieder tekstveld doen... Dat moet toch makkelijker kunnen?

[ Voor 8% gewijzigd door RobIII op 20-01-2005 16:27 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • SysRq
  • Registratie: December 2001
  • Laatst online: 16-05 19:18
RobIII schreef op donderdag 20 januari 2005 @ 16:26:
Als er geen telefoonnummer is verbergt 'ie nu dus netjes het veld. Maar dan moet ik dat voor ieder tekstveld doen... Dat moet toch makkelijker kunnen?
Het verbergen van tekstvelden kun je inderdaad het beste met de suppress functie doen. Maar dat kunnen toch nooit veel velden zijn :? Hoe heb je het rapport opgebouwd? screenshot? :) Of begrijp ik je niet goed?

-


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
SysRq schreef op donderdag 20 januari 2005 @ 16:31:
[...]

Het verbergen van tekstvelden kun je inderdaad het beste met de suppress functie doen. Maar dat kunnen toch nooit veel velden zijn :? Hoe heb je het rapport opgebouwd? screenshot? :) Of begrijp ik je niet goed?
In principe heb ik dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<NAW>                <Contact>
Naam: blabla          Tel.    blablabla
Adres: blabla         Fax   blablabla
Postcode: blabla      Email blablabla
Woonplaats: blabla
Land: blabla

<Postbus>
Nummer: blabla
Postcode: blabla
Plaats: blabla
Land: blabla

____________________________________________________
KVK NR: blablabla       | Bankrekening: blablabla
AKI NR: blablabla       | ABCNummer: blablabla
...                     | ...
...                     | ...
 en nog een heleboel nummers
...                     | ...
...                     | ...
UVWNr: blablabla        | XYZNummer: blablabla

___________DETAILS BEGINNEN HIER____________

Kolom 1        Kolom 2           Kolom 3       ....
blablabla      blablabla         blablabla     ....
blablabla      blablabla         blablabla     ....
blablabla      blablabla         blablabla     ....


Natuurlijk niet zo lomp onder elkaar als hierboven, maar netjes en mooi gemaakt. Nu wil ik alleen dat als 1 van die db velden geen waarde heeft (len=0 dus), die voorlooptekstjes (Adres, Woonplaats, Tel., KVK Nr, ABCNummer etc.) ook weglaten.

Ik wil namelijk dat als er een boel ontbreken dat 'ie dan de hele sectie suppressed. Dat heb ik gedaan door iedere regel in een aparte sectie te zetten (Regel 1 t/m 11 en 14 t/m 21 dus), dat, als bijv. het adres leeg is, is de sectie leeg en wordt deze ge-suppressed, waardoor alles mooi naar boven schuift en de "lege regel" dus netjes opvult. Doe je dat niet dan krijg je allerlei lege regels in je rapport en dat is een waste of space IMHO.

Je moet die "voorlooptekstjes" dus ook mee laten "verdwijnen" als het db field leeg is, anders wordt de sectie niet ge-suppressed. Het gedeelte met de nummers (Regel 14 t/m 21) is in principe een heleboel regels onder elkaar, maar daar heb ik bij de sectie aangegeven dat 'ie het maar netjes in 2 kolommen moet weergeven om ruimte te besparen. Daar gaat het suppressen dus gewoon goed, MITS je dus weer die voorlooptekstjes "mee" laat verdwijnen...

Het is misschien een beetje onbegrijpelijk, maar het is ook zo rete moeilijk om uit te leggen :X
Screenshotje heb ik helaas op het moment niet bij de hand, die kan ik morgen nog wel effe maken als het moet ;)

De enige enigszins betere oplossing die ik zie is werken met een hele shitload aan subreportjes, maar daar wordt het geheel niet sneller van (en dan heb ik het nog maar over 1 "klant", laat staan als ik alle klanten zo wil uitdraaien in een "klanten-details-lijst").

[ Voor 21% gewijzigd door RobIII op 20-01-2005 17:14 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij