[VB6] subtotalen CrystalReports / sql

Pagina: 1
Acties:

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
Ik heb een tabel (access) die gegevens van een telefoongesprek bevatten waarvan 2 velden gesprekstijd (type number -> in seconden) en kostprijs (type number -> in eurocent).

De gegevens kan ik in een standaardrapport van Visual Basic laten zien zonder problemen. Op het einde van het rapport laat ik dan een totaal zien van zowel de gesprekstijd als de kostprijs. Deze gegevens wil ik echter niet laten zien in seconden en eurocent maar in ...u...min...sec en ...euro...eurocent. Met de gewone somfunctie van rapporten is dit niet mogelijk. Dit heb ik dan gewoon opgelost op de volgende manier:

code:
1
2
 set recordset = cn.execute("select * from gesprekken")
rptRapport.sections("rptVoet").controls("lblTotaal").caption = totalegesprekstijd


de variabele totalegesprekstijd haal ik uit een aparte functie die het totaal in seconden omzet naar uren, minuten & sec en dit in een string plaatst. Deze string plak ik dan gewoon in de voetsectie van het rapport. "totalegesprekstijd" ziet er als volgt uit bijvoorbeeld: "10min 3sec".

Nu maak ik echter gebruik van Crystal Reports XI omwille van opmaak & groepeermogelijkheden. Het rapport is opgebouwd met de wizard, dus ik stuur niet meer zelf een sql commando. (het zou wel overeenkomen met select * from gesprekken order by toestelnummer, sorteercode, typegesprek). Maar per groepering wil ik nu de subtotalen laten zien van gesprekstijd en kostprijs. Weet iemand op welke manier ik dat kan oplossen?

De kostprijs zou eventueel wel lukken door deze niet weg te schrijven als eurocent maar direct als ...euro in de tabel maar voor de gesprekstijd zie ik dit niet zo zitten.

Ik weet wel hoe ik een string kan plakken in crystalreports, maar het grote probleem is dus hoe ik de subtotalen per groep kan laten berekenen.

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Als je in de Crystal Reports designer rechtsklikt op een veld kun je kiezen voor 'Insert | Summary"', in het volgende venster kun je dan onder 'Summary Location" kiezen voor welke groep(en) je dit subtotaal wilt toevoegen.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
Ik weet hoe ik het subtotaal moet invoegen, het staat ook al in het rapport. Ik wil enkel de opmaak ervan kunnen wijzigen of een bewerking erop uitvoeren & dat resultaat dan tonen.

Verwijderd

Ik ben niet zo'n CR held, maar zou je niet het totaal kunnen verwerken in een berekeningsveld?
Als ik me niet vergis (in CR10 is dat zo volgens mij) is dat zo'n veld met een @-ervoor.

Hier zou je het totaal in kunnen opnemen en er dan mee rekenen en omzetten naar een voor jouw gunstig formaat.

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Even voor de duidelijkheid, hoe ontwerp je het rapport, in de designer helemaal met code?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
Ik ben eens op zoek gegaan in de help naar berekeningsvelden, ... maar ik moet nu vertrekken naar een klant, dus kan er even niet achter zitten. Extra informatie volgt dus nog.

Het rapport heb ik niet met code opgebouwd, enkel de wizard doorlopen om de velden te tonen op het rapport. Daarna heb ik gewoon de opmaak zelf gewijzigd van het rapport (locatie van de velden, opmaak, afronding van de samenvattingsvelden...).

Maar extra info volgt dus nog als ik wat vooruitgang boek

  • mmy841
  • Registratie: Juli 2004
  • Laatst online: 09-07-2021
Ik heb wat zitten zoeken in de helpfunctie ivm berekeningsvelden, waarna ik onderstaande code heb geschreven (wat ook werkt)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
local minuten as number
local gesprekstijd as number
local resultaat as string

gesprekstijd = {gesprekken.gesprekstijd}
minuten = 0

while (gesprekstijd - 60) >= 0
    minuten = minuten + 1
    gesprekstijd = gesprekstijd - 60
wend

if minuten=0 then
    resultaat = truncate(gesprekstijd) & "sec"
else
    resultaat = truncate(minuten) & "min " & truncate(gesprekstijd) & "sec"
end if

formula=resultaat


Het resultaat is bijvoorbeeld "14,00min 30,00sec"
Dit klopt dus maar in dit geval is 2 decimalen achter de komma niet nodig. Ik probeerde dit al af te kappen met de functie truncate, echter zonder resultaat:

voorbeeld:
code:
1
2
local variabele2 as number
variabele2 = truncate(minuten)


door de opmaak van gesprekken.gesprekstijd (vb waarde 1000) te wijzigen kan ik deze weergeven
zonder decimalen achter de komma. In het formuleveld komen deze er echter wel terug bij.

EDIT: ik heb een (voorlopige?) oplossing gevonden. Als ik de numerieke waarden op het einde converteer naar text kan ik aangeven hoeveel decimalen meegenomen moeten worden. Daar geef ik dus gewoon 0 in.

voorbeeld:
code:
1
 variabele = totext(minuten,0)

Bedankt voor de hulp allen

[ Voor 16% gewijzigd door mmy841 op 08-12-2005 15:57 ]

Pagina: 1