[ASP] Optellen waarden in een recordset loop

Pagina: 1
Acties:

  • Elect
  • Registratie: Mei 2000
  • Niet online
Ik heb een database met daarin de waarden wanneer mensen op welke datum terug zijn gekomen van ziekteverzuim, en voor hoeveel procent ze terug zijn gekomen op die dag.

Als voorbeeld:
1-2-2003 - 50
2-2-2003 - 25
3-2-2003 - 25

als je al die dagen bij elkaar opteld krijg je dat de persoon op 3-2 voor de volle 100% is teruggkomen, aangezien ze hier de waarden optellen.

Mijn probleem is dat ik het nu niet voor elkaar krijg dat mijn script de waarden optelt in de loop. Ik kan niets mee terugsturen in de loop, zodat hij de waarde kan optellen bij de waarde die ik heb meegestuurd.

Is er iemand die hier enig idee heeft hoe ik dit zou kunnen doen? De search gebruikt met ongeveer alle woorden die er nu in mijn topic staan, maar niets op gevonden wat overeenkwam met mijn probleem.

HelmChat.eu - Free Motorcycle Group Chats


Verwijderd

Je kunt de 'oude' waarde toch gewoon in een variabele zetten en die optellen bij de 'nieuwe' waarde? Anders snap ik je probleem niet denk ik :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 11:10
Kan je in je SQL query niets doen met SUM en MAX ?

https://fgheysels.github.io/


  • Elect
  • Registratie: Mei 2000
  • Niet online
@Riffic

Dat heb ik geprobeerd, maar ik heb niet het idee dat hij de waarde meeneemt in de loop. Enkel de recordset gaat een stapje verderals hij terug bij rs.movenext komt. de oude waarde krijg ik niet terug als ik hem in een variabel steek

@whoami

Ik ga eens kijken. Alleen is het in een recordset, dus de waarden zijn al opgehaald lijkt me?

HelmChat.eu - Free Motorcycle Group Chats


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Elect schreef op 13 november 2003 @ 08:35:
@whoami

Ik ga eens kijken. Alleen is het in een recordset, dus de waarden zijn al opgehaald lijkt me?
Of je zou dus een nieuwe query moeten maken, op de manier die whoami aageeft.

Of je zou alles in de loop kunnen gooien (of een array wat je voorkeur heeft). En dan de datum en het getal in de query meenemen en dan elke keer x+getal.

if x = 100 then
datum
end if

  • Elect
  • Registratie: Mei 2000
  • Niet online
Jaspertje schreef op 13 november 2003 @ 08:51:
[...]

Of je zou dus een nieuwe query moeten maken, op de manier die whoami aageeft.

Of je zou alles in de loop kunnen gooien (of een array wat je voorkeur heeft). En dan de datum en het getal in de query meenemen en dan elke keer x+getal.

if x = 100 then
datum
end if
Alles in de loop klinkt aantrekkelijk, maar als voorbeeld wat ik dan geprobeerd had (en wat niet gelukt was :)):


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sql = "SELECT procent FROM hr_verzuim WHERE id = 12 "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,3,3

rs.movefirst
DO WHILE NOT rs.eof

set nieuwproc = rs("procent") + "& oudeproc &"

response.write "" & nieuwproc & ""

set oudproc = " & nieuwproc & "

rs.movenext
loop


Als ik het me nog goed kan herinneren. Maar zoiets had ik eerst in gedachte. Met SQL makkelijker / meer kans op een werkend resultaat / minder cpu belasting?

HelmChat.eu - Free Motorcycle Group Chats


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Je bent neem ik aan gewoon met getallen aan het werken. Waarom zie ik dan overal &-s en "-s verschijnen?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Elect
  • Registratie: Mei 2000
  • Niet online
je bedoelt de hekjes bij " & nieuwproc & " bijvoorbeeld?
Hmm, goeie vraag. Ik wist dat het bij SQL foutgaat als je ze gebruikt, maar ook gewoon in ASP is dat verschil er?

HelmChat.eu - Free Motorcycle Group Chats


  • Jaspertje
  • Registratie: September 2001
  • Laatst online: 12-08 16:04

Jaspertje

Max & Milo.. lief

Als je het dan zo doet:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sql = "SELECT procent, datum FROM hr_verzuim WHERE id = 12 "
Set rs = Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,3,3 

rs.movefirst
WHILE NOT rs.eof

 nieuwproc = int(rs("procent")) + (oudeproc)

response.write nieuwproc

oudproc = nieuwproc

 rs.movenext
wend

Je gebruikt de Set veel te veel.. die moet je alleen gebruiken voor objecten die geheugen nodig hebben... en je moet ze ook afsluiten.. verder heb ik int gebruikt.. dat zouden ook decimals kunnen zijn, ik weet niet of er komma getallen in voorkomen. Ook heb ik de datum in de query meegegeven

en ik heb er een while wend loop van gemaakt.

  • py.mosjuh
  • Registratie: Oktober 2002
  • Laatst online: 24-10-2022

py.mosjuh

fikkert.net

ASP ziet ze dan als een string.. als je dit doet:
ASP:
1
resultaatVariabele = rs("waardeUitTabel") + "& resultaatVariabele &"

"denkt" ASP dat je een string bij iets uit de tabel wil optellen wat dus ook resulteert in een string (en ja: ik weet dat ASP niet zo met strings werkt).

Je moet gewoon iets in deze trend doen:
ASP:
1
resultaatVariabele = rs("waardeUitTabel") + resultaatVariabele

Waarbij je uiteraard zorgt dat "resultaatVariabele" buiten de loop staat:
ASP:
1
2
3
4
5
6
dim resultaatVariabele 
resultaatVariabele = 0
Do While NOT rs.EOF
    resultaatVariabele = rs("waardeUitTabel") + resultaatVariabele
    rs.moveNext1
Loop

Hoop dat het werkt voor je.. Je hebt trouwens ook aan google een goeie als je met programmerings problemen zit hoor!

/edit: ff oneindige loop bug gefixed ;)
/edit: als je wil testen of iets werkt moet je altijd
ASP:
1
Response.Write variable

gebruiken!

[ Voor 21% gewijzigd door py.mosjuh op 13-11-2003 09:26 ]

Kites rise highest against the wind - not with it (Winston Churcill)

Pagina: 1