webForumDet fria alternativet

Hjälp att förkorta denna koden

ASP

7 svar · 285 visningar · startad av Känning

Medlem sedan jan. 2003252 inlägg
Frågan#1

Hej

Jag är lite nybörjare med detta men jag har pillat ihop en liten sida som visar alla spel som vi har lagt. Det denna sidan göra är att räkna ut vad vi har i kassan. Men det känns väldigt omständigt, kan någon hjälpa mig att kapa av lite kod här?

<html>
<head>
<title>Spelsida</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("spel.mdb")&";"

SQL = "select * from spel"
sql = sql & " order by ID"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3

vinst = 0
Do Until RS.EOF
If not IsNull(rs("vinst")) Then
vinst = vinst + Cdbl(rs("vinst"))
End if
rs.MoveNext
Loop

rs.Close
Conn.Close

Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("spel.mdb")&";"

SQL = "select * from spel"
sql = sql & " order by ID"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3

insats = 0
Do Until RS.EOF
If not IsNull(rs("insats")) Then
insats = insats + Cdbl(rs("insats"))
End if
rs.MoveNext
Loop

kassa = 0
kassa = vinst - insats

rs.Close
Conn.Close
%>
<table border="0" cellpadding="2" cellspacing="2" width="80%">
<tr>
<td valign="top">
<%
Response.Write "Kassa: " & kassa & "<br>"
Response.Write "Lagt spel för: " & insats & "<br>"
Response.Write "Vunna spel: " & vinst & "<br>"
%>
</td>
</tr>
</table>
</body>
</html>

Medlem sedan apr. 20003 174 inlägg
#2

Så här kanske: :)

[RED][FONT=Arial][1]<html> 
<head> 
<title>Spelsida</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 
<body> 

<% 

	intVinst = 0 
	intInsats = 0 
	
	Set Conn = Server.CreateObject("ADODB.Connection") 
	Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source ="& Server.MapPath("spel.mdb")
	Set RecSet = Conn.Execute("SELECT Sum(vinst) AS rsVinst, SUM(insats) AS rsInsats FROM spel")
	
		intVinst = RecSet("rsVinst")
		intInsats = RecSet("rsInsats")

	RecSet.Close : Set RecSet = Nothing
	Conn.Close : Set Conn = Nothing
	
	intKassa = Int(intVinst-intInsats)

%>

<table border="0" cellpadding="2" cellspacing="2" width="80%"> 
<tr> 
<td valign="top"><%= "Kassa: "& intKassa &"<br>Lagt spel för: "& intInsats &"<br>Vunna spel: "& intVinst %></td> 
</tr> 
</table> 

</body> 
</html>[/1][/FONT][/RED]
Medlem sedan jan. 2003252 inlägg
#3

En viss förbättring ;)

Tusen tack

Medlem sedan aug. 20003 575 inlägg
#4

fast du skall nog ha med en If sats som kollar om RecSet.Eof eller inte.

Medlem sedan apr. 20003 174 inlägg
#5

Nickemannen skrev:

fast du skall nog ha med en If sats som kollar om RecSet.Eof eller inte.

Nope, behövs inte här eftersom noll returneras även om
databasen är tom då noll är standardvärdet för Tal. :)

Medlem sedan dec. 200012 464 inlägg
#6

En sum på ett tomt resultat blir null, inte noll.

Medlem sedan apr. 20003 174 inlägg
#7

LarsG skrev:

En sum på ett tomt resultat blir null, inte noll.

Ett u eller o hit eller dit.. ;)
LarsG har givetvis rätt, Palle har fel. :)

..så för att få ett snyggt resultat måste man alltså tilldela variablerna
intVinst och intInsats noll-värden då summeringen returnerar null.

ex.

[RED]If IsNull(intVinst) Then intVinst = 0
If IsNull(intInsats) Then intInsats = 0[/RED]
Medlem sedan jan. 2003252 inlägg
#8

Vad gör man utan killar som er?? :)

258 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)