Toon posts:

[ASP]uitkomsten optellen

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

Verwijderd

Topicstarter
Ik heb in een asp pagina een tabel met daarin verschillende rijen met werkgegevens, zo staat er aantal uren dat gewerkt is en prijs per uur ook in.
Voor elke klus is er een aparte regel. Nou staat als laatste kolom een tarief, dit is eigenlijk het totaalbedrag van de gewerkte uren x de prijs per uur.

Nou wil ik onder de tabel een totaal bedrag van alle regels. Alleen kom ik er niet uit hoe ik telkens het totaalbedrag van zo'n regel bij elkaar kan optellen, heeft iemand een idee? Ik dacht zelf iets met Totaal = regeltot + regeltot, maar ik weet niet hoe ik dit verder moet uitwerken.


(P.S. de gegevens worden uit een tabel gehaald, in deze tabel is ook al het totaalbedrag per regel berekend en opgeslagen.)

Verwijderd

Sum gebruiken in SQL ?
SELECT SUM(totaalbedrag) FROM Table

Verwijderd

Dit werkt beter:

totaal = totaal + regeltot

edit:

Toch maar even de uitleg...

Zo vul je de variabele totaal continu aan met de nieuwe regel in de loop..
(P.S. de gegevens worden uit een tabel gehaald, in deze tabel is ook al het totaalbedrag per regel berekend en opgeslagen.)
I.v.m. zo min mogelijk gegevens in de database opslaan (normaalvorm e.d.) zou je alles wat berekend wordt in theorie niet opslaan in een database...

[ Voor 83% gewijzigd door Verwijderd op 13-01-2003 12:26 ]


Verwijderd

Topicstarter
De methode met SUM ben ik niet helemaal uitgekomen, maar dankzij het totaal = totaal + regeltot, kreeg ik via een Do While not... het gewenste resultaat.
Allebei hartelijk bedankt!!!

(de database heb ik niet zelf gemaakt, deze was er al, ik moet alleen iets aanpassen aan de pagina, dus maak ik maar gebruik van hoe de db is)

[ Voor 29% gewijzigd door Verwijderd op 13-01-2003 12:35 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 09:38
Verwijderd schreef op 13 januari 2003 @ 12:32:
De methode met SUM ben ik niet helemaal uitgekomen, maar dankzij het totaal = totaal + regeltot, kreeg ik via een Do While not... het gewenste resultaat.
Allebei hartelijk bedankt!!!


Je kijkt toch nog beter eens naar dat 'sum'- verhaal. Dit zal nl. veel efficienter zijn.

code:
1
select sum(bedrag) from tabel

https://fgheysels.github.io/


Verwijderd

Topicstarter
met de SUM kom ik niet verder dan de volgende code, en die werkt niet, een andere manier zou ik niet zo snel opkomen om die SUM te plaatsen
code:
1
2
3
4
5
6
7
8
9
<%
Dim dbase3, rs5, try
Set dbase3 = Server.CreateObject( "ADODB.Connection" )
dbase3.open "dis_LER", "disuser", "distest"
Set rs5 = dbase3.Execute("SELECT * FROM Pfacturatie WHERE Debiteurnaam = 'ZBTP'")   

try = rs5("SUM(totaalbedrag)")
Response.Write=(rs5)
%>

  • whoami
  • Registratie: December 2000
  • Laatst online: 09:38
Verwijderd schreef op 13 januari 2003 @ 12:41:
met de SUM kom ik niet verder dan de volgende code, en die werkt niet, een andere manier zou ik niet zo snel opkomen om die SUM te plaatsen
code:
1
2
3
4
5
6
7
8
9
<%
Dim dbase3, rs5, try
Set dbase3 = Server.CreateObject( "ADODB.Connection" )
dbase3.open "dis_LER", "disuser", "distest"
Set rs5 = dbase3.Execute("SELECT * FROM Pfacturatie WHERE Debiteurnaam = 'ZBTP'")   

try = rs5("SUM(totaalbedrag)")
Response.Write=(rs5)
%>


Tja, doen dat ook tenminste ff de moeite om een SQL tutorial erbij te halen en ff te zoeken hoe je zo'n sum doet. Of check minstens mijn simpel voorbeeldje dat ik hier al postte.

.edit: om nog eens op het 'efficientie-verhaal' terug te komen. Indien je de gegevens die je ophaalt al zowiezo in een do... while nodig hebt, zal een sum toch niet efficienter zijn.

[ Voor 12% gewijzigd door whoami op 13-01-2003 12:44 ]

https://fgheysels.github.io/


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Verwijderd schreef op 13 January 2003 @ 12:16:
Nou staat als laatste kolom een tarief, dit is eigenlijk het totaalbedrag van de gewerkte uren x de prijs per uur.
Lijkt me eerlijk gezegd onzinnig om dit in een aparte kolom vast te leggen aangezien je bij het registreren van het aantal uren en het daarbij behorende uurtarief alle benodigde gegevens hebt om de berekening te kunnen uitvoeren.

Tip:
http://www.w3schools.com/sql/sql_groupby.asp

Maak een tabel met een kolom voor de werkelijke uren, het uurtarief, en gebruik vervolgens het SQL statement SUM in combinatie met een GROUP BY voor het uurtarief en klaar is kees.

Veel succes

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

Topicstarter
Ik ben nog eens gaan kijken naar die SUM oplossing, en ben tot de volgende code gekomen :

code:
1
2
3
4
5
6
Dim dbase3, rs5, try
        Set dbase3 = Server.CreateObject( "ADODB.Connection" )
        dbase3.open "dis_LER", "disuser", "distest"
        Set rs5 = dbase3.Execute("SELECT SUM(totaalprijs) FROM Pfacturatie       WHERE Debiteurnaam = 'Coroos'")    
        try = rs5("totaalprijs")
        Response.Write(try)


Maar deze code werkt helaas ook niet, terwijl ik een zelfde soort code met een DISTINCT heb gebruikt wel werkt, wat is er dan toch nog fout?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:40

gorgi_19

Kruimeltjes zijn weer op :9

SELECT SUM(totaalprijs) as totaalprijs etc. ?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

gorgi_19 schreef op 14 januari 2003 @ 11:41:
SELECT SUM(totaalprijs) as totaalprijs etc. ?
ja dit moet wel werken denk ik

[ Voor 21% gewijzigd door Verwijderd op 14-01-2003 11:45 ]


Verwijderd

Topicstarter
gorgi_19 schreef op 14 januari 2003 @ 11:41:
SELECT SUM(totaalprijs) as totaalprijs etc. ?
eh bedankt het werkt zo wel,

Verwijderd

Topicstarter
Uhm, nu wil ik ook een SUM actie doen met kilometers, maar hij zegt dat SUM niet gaat met char

Hoe zou ik't dan kunnen optellen, want totkm = totkm + km werkt niet, omdat door telt bij volgende bedrijf

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:40

gorgi_19

Kruimeltjes zijn weer op :9

:? 1 kilometer vind ik echt een numeriek iets... dan klopt je datamodel niet helemaal.
En wat is totkm? waar staat deze? wat is km?

hij mag niet doortellen bij het volgende bedrijf? gebruik dan een group by.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Verwijderd schreef op 14 januari 2003 @ 12:42:
Uhm, nu wil ik ook een SUM actie doen met kilometers, maar hij zegt dat SUM niet gaat met char

Hoe zou ik't dan kunnen optellen, want totkm = totkm + km werkt niet, omdat door telt bij volgende bedrijf
perhaps een convert erin! SUM(CONVERT(INT, KilometerTot)) ofziets...

  • Dionisus19
  • Registratie: Mei 2002
  • Laatst online: 27-03-2024

Dionisus19

Blah != Meuk

Aantal km moet een Integer zijn

Verwijderd

Topicstarter
Ik ben nu wel weer uit het probleem gekomen met de kilometers, maar dan loop ik weer vast op een volgend punt, wat weer te maken heeft dat doortelt bij volgend bedrijf en niet opnieuw begint te tellen.
Het gaat nu om reistijd, misschien iets lastiger om op te tellen, maar doe het nu als volgt :
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim reistijd, reisprijs, reistijduur, reistijdmin, totaalreistijduur, totaalreistijdmin, totaalreistijd, reiskosten
set dbase6 = Server.CreateObject( "ADODB.Connection" )
dbase6.open "dis_LER", "disuser", "distest"
        
Set rs6 = dbase6.Execute("SELECT reistijd FROM Pfacturatie WHERE Debiteurnaam = '"&t0&"' AND datum BETWEEN '"&begindatum&"' AND '"&einddatum&"' ")  
Do while not rs6.eof
            
reistijd = rs6("reistijd")
reistijduur = hour(reistijd)
reistijdmin = minute(reistijd)
totaalreistijduur = totaalreistijduur + reistijduur
totaalreistijdmin = totaalreistijdmin + reistijdmin
totaalreistijd = totaalreistijduur&":"&totaalreistijdmin
            
rs6.MoveNext
Loop


Is er niet een manier die ik telkens kan gebruiken om niet te laten doortellen, of een oplossing voor de reistijd is ook welkom

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 25-08 20:26

TeeDee

CQB 241

was volgens mij al gezegd: je select met een group by uitbreiden

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
TeeDee schreef op 14 January 2003 @ 15:15:
was volgens mij al gezegd: je select met een group by uitbreiden
dat werkte dus niet, kreeg je tijden achter elkaar

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 09:40

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 snapt het niet.. Wat bedoel je met 'tijden achter elkaar'

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Met tijden achter elkaar bedoel ik als je de volgende tijden hebt 1:00,0:50 krijg je als resultaat 1: 00 0:50 in plaats van 1:50.

Nu heb ik nog eens group by geprobeerd, maar dan klopt de optelling niet meer, zelfs niet bij de eerste.
Ik heb dan als volgt gedaan :
code:
1
Set rs6 = dbase6.Execute("SELECT reistijd FROM Pfacturatie WHERE Debiteurnaam = '"&t0&"' AND datum BETWEEN '"&begindatum&"' AND '"&einddatum&"' group by debiteurnaam, reistijd ")

Verwijderd

Topicstarter
Iets van een sum lijkt mij niet mogelijk met tijd, omdat je uren en minuten hebt en minuten maar tot 60 gaan, iemand nog een idee?

  • whoami
  • Registratie: December 2000
  • Laatst online: 09:38
Verwijderd schreef op 15 januari 2003 @ 08:59:
Iets van een sum lijkt mij niet mogelijk met tijd, omdat je uren en minuten hebt en minuten maar tot 60 gaan, iemand nog een idee?


Waarom probeer je het niet eens ten minste?
Misschien weet die sum wel hoe hij met uren en minuten moet rekenen.

https://fgheysels.github.io/


Verwijderd

Topicstarter
whoami schreef op 15 januari 2003 @ 09:04:

[...]


Waarom probeer je het niet eens ten minste?
Misschien weet die sum wel hoe hij met uren en minuten moet rekenen.
Zoals ik al dacht en bijna zeker wist werkt een sum hier niet,
weet echt niet meer hoe anders kan

[ Voor 6% gewijzigd door Verwijderd op 15-01-2003 09:57 ]

Pagina: 1