webForumDet fria alternativet

skippa eventuellt onödig kod.

ASP

12 svar · 283 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

Går denna kod att lägga i någon slags funktion, så att man slipper skriva om den för varje ny variabel?

sumA = B_varde * Antal
sumB = sumB + sumA
sumProc = 100 * (sumB / A_varde)

Så att det slipper att bli så här:

sumA = B_varde * Antal
sumB = sumB + sumA
sumProcA = 100 * (sumB / A_varde)

sumC = C_varde * Antal
sumD = sumD + sumC
sumProcB = 100 * (sumC / D_varde)

sumE = E_varde * Antal
sumF = sumF + sumE
sumProcC = 100 * (sumE / G_varde)
osv..
Medlem sedan apr. 20021 203 inlägg
#2
Function Summera(Ett_varde, Antal)
sumA = Ett_varde * Antal
sumB = sumB + sumA
Summera = 100 * (sumB / Ett_varde)
End Function

Någonting i den stilen... eller?

:)

Medlem sedan feb. 20022 594 inlägg
#3

Är det en funktion du är ute efter eller vill du korta ner koden för att inte använda så många variabler? Förstår inte riktigt frågan, men jag kortade ner det iaf..

var = 100*((sumB+sumA)/(B_varde*Antal))

Medlem sedan nov. 20017 144 inlägg
#4

Kanske - låt säga att A_varde, B_varde osv. får sina värden ifrån en databastabell. (loop) Alltså att det finns många kolumner som heter "varde" A, B, C, D, och E_varde osv, och att det även finns många poster med olika värden i "Antal". Funkar det då, - och i sådana fall hur?

Medlem sedan nov. 20017 144 inlägg
#5

Ekström --> Jag vill även kunna skriva ut "sumA och sumB".
Det kanske blir tydligare om jag skriver så här:

sumA = rs("B_varde") * rs("Antal")
sumB = sumB + sumA
sumProc = 100 * (sumB / rs(" A_varde"))

Medlem sedan nov. 20017 144 inlägg
#6

Eller så här:

while not rs.eof

sumA = rs("B_varde") * rs("Antal") 
sumB = sumB + sumA 
sumProc = 100 * (sumB / rs("A_varde"))

Response.write sumA & sumB & sumProc
rs.movenext
wend
Medlem sedan feb. 20022 594 inlägg
#7

Vad är det du vill egentligen? Vill du loopa igenom fält som heter A_varde, B_varde, C_varde osv.?

Medlem sedan nov. 20017 144 inlägg
#8

Ja det vill jag, och slippa skriva så här för varje ny kolumn:

while not rs.eof

sumA = rs("B_varde") * rs("Antal") 
sumB = sumB + sumA 
sumProc = 100 * (sumB / rs("A_varde"))

sumA = rs("C_varde") * rs("Antal") 
sumB = sumB + sumA 
sumProc = 100 * (sumB / rs("D_varde"))

sumA = rs("E_varde") * rs("Antal") 
sumB = sumB + sumA 
sumProc = 100 * (sumB / rs("F_varde"))

sumA = rs("G_varde") * rs("Antal") 
sumB = sumB + sumA 
sumProc = 100 * (sumB / rs("H_varde"))

sumA = rs("I_varde") * rs("Antal") 
sumB = sumB + sumA 
sumProc = 100 * (sumB / rs("J_varde"))

osv...

sov...
Response.write sumA & sumB & sumProc
rs.movenext
wend
Medlem sedan maj 20018 027 inlägg
#9

Nu vet jag inte var du fick "rs" från, men antar att det var från någon fråga till databasen. Du kanske ska försöka fråga på ett sådant sätt att alla A, B, C-värden, etc, kommer på rad i ditt rs. Då kan du nå A-värde, B-värde etc, med rs(1), rs(2), osv. Det lämpar sig för en "for"-slinga där du utför din beräkning.

Medlem sedan nov. 20017 144 inlägg
#10

Ok hur skulle det se ut i mitt fall(på ett ungefär)?

Medlem sedan nov. 20017 144 inlägg
#11

Idéer?

Medlem sedan maj 20018 027 inlägg
#12

Det skulle kunna vara något i stil med:

For i=0 to 4
sumA = rs(i) * rs("Antal") 
sumB = sumB + sumA 
sumProc = 100 * (sumB / rs(i+5))
Next

Betrakta ovanstående endast som en idé att bygga vidare på. Jag har ingen aning om omständigheterna i ditt fall. Idén bygger i vart fall på att du kan komma åt enskilda fält i ett recordset genom kolumnnummer, likaväl som genom namn. Eftersom man kan räkna upp nummer, så borde den möjligheten funka. Allt detta förutsätter givetvis att alla kolumner kommer i rätt ordning. Det kan du se till genom att ange i din SQL-fråga vilka kolumner du vill ha med. Istället för att bara fråga "SELECT *...", frågar du istället "SELECT b_varde, c_varde....".

Medlem sedan nov. 20017 144 inlägg
#13

Ok, jag hajjar principen, men...(som alltid), om jag lägger detta i min recsetloop hur skriver jag du ut det senare? (variablarna - sumA, sumB och sumProc)
Går det med sumA(1) osv?

263 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)