webForumDet fria alternativet

Räkna ut snitt

ASP

24 svar · 861 visningar · startad av wborg

Medlem sedan dec. 2003209 inlägg
Frågan#1

Hej,

jag sitter med en resultat/statistik sida för golfare där man har matat in alla rundor bana för bana i ett scorecard vilket funkar utmärkt.
Vad jag nu vill göra är att lägga till snitt för varje enskild bana + totalt för varje tävling och även en total sammanställning av snitt per bana och slutresultat.

Jag vill ha snitten i en ny rad efter den nu ista raden i varje tävlings tabell
och den totala snittsammanstälningen i en egen tabell under alla tävlingar

Någon som förstår hur jag menar och kan hjälpa mig med detta?

sidan ser ut så härför tillfället http://www.monow.se/borg/sub/test.asp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>

	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<title></title>
	<script language="JavaScript" type="text/javascript" src="/templates/menu.js"></script>
	<link href="stylesheets/stylesheet1.css" rel="stylesheet" type="text/css" >
	<link href="stylesheets/links.css" rel="stylesheet" type="text/css" >
	<link rel="stylesheet" type="text/css" href="stylesheets/table.css">
	</head>

<body>
             
                <table width="695" height="0" border="0" cellspacing="5">
                  <tr>
                    <td>
                      <%
                        Sub createNewTableStart(endPrevTable)
	                if endPrevTable then response.write vbCrLf & "</table>" & vbCrLf & "<br />" & vbCrLf
                      %>

                      <span style="padding-left: 28px;" class="rubrik"><b><%=objrs("CompName") %>&nbsp;<%= objrs("Course") %> (<%= objrs("Date") %>)</b></span>

                      <br>
                      <table align="center" border="1" style="border-collapse: collapse" bordercolor="1px solid #000000">
                        <tr bgcolor="#CDD5E4" style="font-weight: bold">
                          <% For I = 1 to 18 %>
                          <td width="30" align="center"><a href="top10.asp?Show=Top10&Lane=<%=I%>" target=""><%=I%></a></td>
                            <% Next %>
                            <td width="30" align="center">Tot</td>
                        </tr>
                        <%
                          End Sub
                        %>

                        <%
                          dim Conn, objrs, i, y, prevDate, currDate, strTot
                          Set Conn = Server.CreateObject("ADODB.Connection") 
                          Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/eb.mdb") 
                          Set objrs = Conn.Execute("SELECT tbl_player.Namn, tbl_player.Efternamn, tbl_res.CompYear, tbl_res.Course, tbl_res.AMT1, tbl_res.AMT2, tbl_res.AMT3, tbl_res.AMT4, tbl_res.AMT5, tbl_res.AMT6, tbl_res.AMT7, tbl_res.AMT8, tbl_res.AMT9, tbl_res.AMT10, tbl_res.AMT11, tbl_res.AMT12, tbl_res.AMT13, tbl_res.AMT14, tbl_res.AMT15, tbl_res.AMT16, tbl_res.AMT17, tbl_res.AMT18, tbl_res.TOTAL, tbl_res.Date, tbl_res.CompName FROM tbl_player INNER JOIN tbl_res ON tbl_player.PlayerId=tbl_res.PlayerId WHERE tbl_res.Surface ='EB' ORDER BY tbl_res.Date, tbl_res.Varv")

                          y=0
                          while not objrs.BOF and not objrs.EOF
                            currDate = objrs("Date")
                            if IsEmpty(prevDate) then 'first iteration
	                      createNewTableStart(false)
                            elseif prevDate <> currDate then
	                      createNewTableStart(true)
                            end if
                            y = y + 1
                            If y Mod 2 = 0 Then
                          %>
                          <tr bgcolor="#EEEEEE">
                          <% Else %>
                          <tr bgcolor="#FFFFFF">
                          <% End If %>
	
	                  <% For I = 1 to 18 %>
	                  <td align="center"><%=objrs("AMT" & I)%></td>
                          <% Next %>
	                  <td align="center">
	                  <% 
	                    strTot = objrs("TOTAL")
	                    if strTot < 20 then 
		              response.write "<span class=""blueText"">"&strTot&"</span>"
	                    elseif strTot < 25 then 
		              response.write "<span class=""greenText"">"&strTot&"</span>"
	                    elseif strTot < 30 then
		              response.write "<span class=""redText"">"&strTot&"</span>"
	                    elseif strTot > 29 then
		              response.write "<span class=""blackText"">"&strTot&"</span>"
	                    End if 	
	                    response.write vbCrLf & "</td>" & vbCrLf & "</tr>" & vbCrLf
	                    prevDate = currDate
	                    objrs.movenext
                            wend
                            if i=0 then 'empty recordset
                              response.write "<tr><td colspan=""19"">Det finns inga resultat!</td></tr>"
                            end if
                          %>
                        </table>
                        <%
                          'close and kill recordset/connection objects
                          objrs.close
                          set objrs = nothing
                          Conn.close
                          set Conn = nothing
                        %>
                    </td>
                  </tr>
                </table>
              </td>
            </tr>
          </table>
</body>
</html>

M v h
/S

Medlem sedan aug. 20039 340 inlägg
#2

Om inte snitt i golf räknas på nåt annat sätt än andra snitt så ska du addera alla talen och sen dela summan med antalet poster för att få medelvärde.

Medlem sedan dec. 2003209 inlägg
#3

Nitro,

Har lekt lite med koden nu och lagt
in snittkod för Tot men som du ser
i koden så blir det fel eftersom
koden ligger efter följande kod på rad 81-82

wend
if I=0 Then

Hur gör jag så att detta blir rätt??
Vet ej hur jag ska flytta om i koden,
dessutom så vill jag ju att snittkoen
på ngt sätt ska vara med i loopen
så att den kommer med i varje tabell
och inte bara i sista som det är nu.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>

	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<title></title>
	<script language="JavaScript" type="text/javascript" src="/templates/menu.js"></script>
	<link href="stylesheets/stylesheet1.css" rel="stylesheet" type="text/css" >
	<link href="stylesheets/links.css" rel="stylesheet" type="text/css" >
	<link rel="stylesheet" type="text/css" href="stylesheets/table.css">
	</head>

<body>

                
                <table width="695" height="0" border="0" cellspacing="5">
                  <tr>
                    <td>
                      <%
                        Sub createNewTableStart(endPrevTable)
	                if endPrevTable then response.write vbCrLf & "</table>" & vbCrLf & "<br />" & vbCrLf
                      %>

                      <span style="padding-left: 28px;" class="rubrik"><b><%=objrs("CompName") %>&nbsp;<%= objrs("Course") %> (<%= objrs("Date") %>)</b></span>

                      <br>
                      <table align="center" border="1" style="border-collapse: collapse" bordercolor="1px solid #000000">
                        <tr bgcolor="#CDD5E4" style="font-weight: bold">
                          <% For I = 1 to 18 %>
                          <td width="30" align="center"><a href="top10.asp?Show=Top10&Lane=<%=I%>" target=""><%=I%></a></td>
                            <% Next %>
                            <td width="30" align="center">Tot</td>
                        </tr>
                        <%
                          End Sub
                        %>

                        <%
                          dim Conn, objrs, i, y, prevDate, currDate, strTot
                          Set Conn = Server.CreateObject("ADODB.Connection") 
                          Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/eb.mdb") 
                          Set objrs = Conn.Execute("SELECT tbl_player.Namn, tbl_player.Efternamn, tbl_res.CompYear, tbl_res.Course, tbl_res.AMT1, tbl_res.AMT2, tbl_res.AMT3, tbl_res.AMT4, tbl_res.AMT5, tbl_res.AMT6, tbl_res.AMT7, tbl_res.AMT8, tbl_res.AMT9, tbl_res.AMT10, tbl_res.AMT11, tbl_res.AMT12, tbl_res.AMT13, tbl_res.AMT14, tbl_res.AMT15, tbl_res.AMT16, tbl_res.AMT17, tbl_res.AMT18, tbl_res.TOTAL, tbl_res.Date, tbl_res.CompName FROM tbl_player INNER JOIN tbl_res ON tbl_player.PlayerId=tbl_res.PlayerId WHERE tbl_res.Surface ='EB' ORDER BY tbl_res.Date, tbl_res.Varv")

                          y=0
                          while not objrs.BOF and not objrs.EOF
                            currDate = objrs("Date")
                            if IsEmpty(prevDate) then 'first iteration
	                      createNewTableStart(false)
                            elseif prevDate <> currDate then
	                      createNewTableStart(true)
                            end if
                            y = y + 1
                            If y Mod 2 = 0 Then
                          %>
                          <tr bgcolor="#EEEEEE">
                          <% Else %>
                          <tr bgcolor="#FFFFFF">
                          <% End If %>
	
	                  <% For I = 1 to 18 %>
	                  <td align="center"><%=objrs("AMT" & I)%></td>
                          <% Next %>
	                  <td align="center">
	                  <% 
	                    strTot = objrs("TOTAL")
	                    if strTot < 20 then 
		              response.write "<span class=""blueText"">"&strTot&"</span>"
	                    elseif strTot < 25 then 
		              response.write "<span class=""greenText"">"&strTot&"</span>"
	                    elseif strTot < 30 then
		              response.write "<span class=""redText"">"&strTot&"</span>"
	                    elseif strTot > 29 then
		              response.write "<span class=""blackText"">"&strTot&"</span>"
	                    End if 	
	                    response.write vbCrLf & "</td>" & vbCrLf & "</tr>" & vbCrLf
	                    prevDate = currDate
	                    objrs.movenext
                            wend
                            if i=0 then 'empty recordset
                              response.write "<tr><td colspan=""19"">Det finns inga resultat!</td></tr>"
                            end if
                          %>
                          <tr>
                            <td colspan="18">&nbsp;</td>
                            <td>
                              <% set antalV = Conn.Execute("SELECT tbl_res.Comp_Name, Count(tbl_res.TOTAL) AS Ant FROM tbl_res GROUP BY tbl_res.Comp_Name HAVING tbl_res.Comp_Name='"&objrs("Comp_Name")&"'")%>
	                      <% Set snitt = Conn.Execute("SELECT tbl_res.Comp_Name, Sum(tbl_res.TOTAL) AS Summa FROM tbl_res GROUP BY tbl_res.Comp_Name HAVING tbl_res.Comp_Name='"&objrs("Comp_Name")&"'")%>

	                      <% inSvar1 = snitt("Summa")
	                         inSvar2 = AntalV("Ant")
	                         inSvar = Insvar1 / Insvar2
	                         Response.Write formatnumber(Insvar,1) 
                              %>
                            </td>
                          </tr>
                        </table>
                        <%
                          'close and kill recordset/connection objects
                          objrs.close
                          set objrs = nothing
                          Conn.close
                          set Conn = nothing
                        %>
                    </td>
                  </tr>
                </table>
                
                

              </td>

            </tr>
          </table>
</body>
</html>

http://www.monow.se/borg/sub/test.asp

Något förslag?
/S

Medlem sedan apr. 20031 660 inlägg
#4

HEJ!

Det känns som att det mer handlar om hur/vad man räknar, och var det ska placeras än ren programmering i första steget?

Kan du inte göra en skärmdump och redigera in de siffror du vill ha var så blir det i alla fall enklare för mig att förstå!

Medlem sedan dec. 2003209 inlägg
#5

J.N. Istället för skärmdump så hårdkodade jag en sida som har url:
http://www.monow.se/borg/sub/fake.asp

Den understa raden vill jag ska finnas där på alla tabeller som läggs in i databasen i framtiden oxå dvs att den bör ju ligga med i loopen på något sätt
så att den kommer med dynamiskt.

/S

Medlem sedan juni 20003 076 inlägg
#6

en array fixar nog tricket! ;)
jag lämnar dock inga garantier på denna kod, det är jätte, jätte jättesvårt att försöka tyda koden när du skriver så slarvigt! :)
försök att tabba och strukturera koden lite innan du visar den för allmänheten så får du fler och snabbare svar! :)

Dim arrSum, Counter
Counter = 0
while not objrs.BOF and not objrs.EOF
	Counter = Counter +1
                            currDate = objrs("Date")
                            if IsEmpty(prevDate) then 'first iteration
	                      createNewTableStart(false)
                            elseif prevDate <> currDate then
							
							
								Response.Write("<tr>" & vbCrlf)
								For i = 0 To 17
									Response.Write("<td>" & (arrSum(i)/Counter) & "</td>" & vbCrlf)
								Next
								Response.Write("</tr>" & vbCrlf)
								Counter = 0
							
							
	                      createNewTableStart(true)
						  
						  Redim arrSum(17)
						  
                            end if
                            y = y + 1
                            If y Mod 2 = 0 Then
                          %>
                          <tr bgcolor="#EEEEEE">
                          <% Else %>
                          <tr bgcolor="#FFFFFF">
                          <% End If %>
	
	                  <% 
					  	For I = 1 to 18 
					 	
						arrSum(I-1) = arrSum(I-1) + objrs("AMT" & I)
						
					  %>
	                  <td align="center"><%=objrs("AMT" & I)%></td>
                          <% Next %>
	                  <td align="center">
	                  <% 
	                    strTot = objrs("TOTAL")
	                    if strTot < 20 then 
		              response.write "<span class=""blueText"">"&strTot&"</span>"
	                    elseif strTot < 25 then 
		              response.write "<span class=""greenText"">"&strTot&"</span>"
	                    elseif strTot < 30 then
		              response.write "<span class=""redText"">"&strTot&"</span>"
	                    elseif strTot > 29 then
		              response.write "<span class=""blackText"">"&strTot&"</span>"
	                    End if 	
	                    response.write vbCrLf & "</td>" & vbCrLf & "</tr>" & vbCrLf
	                    prevDate = currDate
	                    objrs.movenext
                            wend
Medlem sedan dec. 2003209 inlägg
#7

Doggelito,

jag vet inte om jag har gjort rätt men jag tror det men jag får följande fel:

Körningsfel i Microsoft VBScript fel '800a000d'
Inkompatibla typer

/borg/sub/test3.asp, rad 77

rad 77: arrSum(I-1) = arrSum(I-1) + objrs("AMT" & I)

jag hoppas du är mer nöjd med indenteringen nu, här är koden efter det att jag la in din kod.

ser du vad felet beror på??

/S

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>

		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<title></title>
		<script language="JavaScript" type="text/javascript" src="/templates/menu.js"></script>
		<link href="stylesheets/stylesheet1.css" rel="stylesheet" type="text/css" >
		<link href="stylesheets/links.css" rel="stylesheet" type="text/css" >
		<link rel="stylesheet" type="text/css" href="stylesheets/table.css">

	</head>

<body>

<table width="695" height="0" border="0" cellspacing="5">
	<tr>
		<td>
			<%
			  Sub createNewTableStart(endPrevTable)
			  if endPrevTable then response.write vbCrLf & "</table>" & vbCrLf & "<br />" & vbCrLf
			%>

                        <span style="padding-left: 28px;" class="rubrik"><b><%=objrs("CompName") %>&nbsp;<%= objrs("Course") %> (<%= objrs("Date") %>)</b></span>

                        <br>
                      
			<table align="center" border="1" style="border-collapse: collapse" bordercolor="1px solid #000000">
				<tr bgcolor="#CDD5E4" style="font-weight: bold">
				<% For I = 1 to 18 %>
					<td width="30" align="center"><a href="top10.asp?Show=Top10&Lane=<%=I%>" target=""><%=I%></a></td>
					<% Next %>
					<td width="30" align="center">Tot</td>
				</tr>
			
			<% End Sub %>
			
                        <%
                          dim Conn, objrs, i, y, prevDate, currDate, strTot
                          Set Conn = Server.CreateObject("ADODB.Connection") 
                          Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/eb.mdb") 
                          Set objrs = Conn.Execute("SELECT tbl_player.Namn, tbl_player.Efternamn, tbl_res.CompYear, tbl_res.Course, tbl_res.AMT1, tbl_res.AMT2, tbl_res.AMT3, tbl_res.AMT4, tbl_res.AMT5, tbl_res.AMT6, tbl_res.AMT7, tbl_res.AMT8, tbl_res.AMT9, tbl_res.AMT10, tbl_res.AMT11, tbl_res.AMT12, tbl_res.AMT13, tbl_res.AMT14, tbl_res.AMT15, tbl_res.AMT16, tbl_res.AMT17, tbl_res.AMT18, tbl_res.TOTAL, tbl_res.Date, tbl_res.CompName FROM tbl_player INNER JOIN tbl_res ON tbl_player.PlayerId=tbl_res.PlayerId WHERE tbl_res.Surface ='EB' ORDER BY tbl_res.Date, tbl_res.Varv")

			  
                          Dim arrSum, Counter
                          Counter = 0
                          while not objrs.BOF and not objrs.EOF
	                  Counter = Counter +1
                          currDate = objrs("Date")
                          if IsEmpty(prevDate) then 'first iteration
	                  createNewTableStart(false)
                          elseif prevDate <> currDate then
			  				
			  Response.Write("<tr>" & vbCrlf)
			  For i = 0 To 17
			  Response.Write("<td>" & (arrSum(i)/Counter) & "</td>" & vbCrlf)
			  Next
			  Response.Write("</tr>" & vbCrlf)
			  Counter = 0
			  				
			  createNewTableStart(true)
			  
                          Redim arrSum(17)
			  			  
                          end if
                            
                          y = y + 1
                          If y Mod 2 = 0 Then
                        %>
                          
                                	<tr bgcolor="#EEEEEE">
                                	<% Else %>
                                	<tr bgcolor="#FFFFFF">
                                	<% End If %>
	                  
	                        	<% 
			          	  For I = 1 to 18 
			          	  arrSum(I-1) = arrSum(I-1) + objrs("AMT" & I)
			        	%>
                           
	                        			<td align="center"><%=objrs("AMT" & I)%></td>
                                        		<% Next %>
	                                		<td align="center">
                           		
	                                <% 
	                                  strTot = objrs("TOTAL")
	                                  if strTot < 20 then 
		                          response.write "<span class=""blueText"">"&strTot&"</span>"
	                                  elseif strTot < 25 then 
		                          response.write "<span class=""greenText"">"&strTot&"</span>"
	                                  elseif strTot < 30 then
		                          response.write "<span class=""redText"">"&strTot&"</span>"
	                                  elseif strTot > 29 then
		                          response.write "<span class=""blackText"">"&strTot&"</span>"
	                                  End if 	
	                                  response.write vbCrLf & "</td>" & vbCrLf & "</tr>" & vbCrLf
	                                  prevDate = currDate
	                                  objrs.movenext
                                          wend
                            
                                          if i=0 then 'empty recordset
                                          response.write "<tr><td colspan=""19"">Det finns inga resultat!</td></tr>"
                                          end if
                                        %>

					</table>
                        		<%
                                          'close and kill recordset/connection objects
                          		  objrs.close
                          		  set objrs = nothing
                          		  Conn.close
                          		  set Conn = nothing
                        		%>
					</td>
				</tr>
			</table>
                
		</td>
	</tr>
</table>
</body>
</html>
Medlem sedan juni 20003 076 inlägg
#8

Vad är objrs("AMT" & 1-18) för datatyper? Och innehåller kolumnerna alltid värden?
Du kanske kan lägga på en if-sats (just in case):

If len(objrs("AMT" & I)) > 0 Then
     arrSum(I-1) = arrSum(I-1) + cint(objrs("AMT" & I))
End If
Medlem sedan dec. 2003209 inlägg
#9

Doggelito,

<% For I = 1 to 18 %> gör så att alla 18 banor skrivs ut
AMT1 - AMT18 heter banorna i databasen och har datatypen Tal

hoppas det hjälper, din if-sts gjorde inte någon skillnad
http://wwwmonow.se/borg/sub/test3.asp <-- så ser sidan ut nu.

/S

Medlem sedan juni 20003 076 inlägg
#10

Hmm, lite svårt när man inte kan prova själv, men kan det vara att redimmen aldrig hinner köras tro!?
Testa att lägga till redim ovanför loopen.

Dim arrSum, Counter
Counter = 0
Redim arrSum(17)

while not objrs.BOF and not objrs.EOF
Medlem sedan dec. 2003209 inlägg
#11

Japp det verkar så :D det ser bra ut så långt men nu upptäckte jag ett annat fel,
den räknar ut snittet fel av ngn anledning. Den delar med ett för lite dvs att på den översta tabellen
så är det 12 spelade rundor men den delar bara med 11. Kan detmöjligtvis vara så att det beror på att du satt counter 0-17?

Sen så var det en sak till som jag undrar hur man ska lösa, som det blev nu så kom det ju bara snitt på första scorecardet
och inte på det understa, vet du varför??

http://www.monow.se/borg/sub/test4.asp

/S

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>

		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<title></title>
		<script language="JavaScript" type="text/javascript" src="/templates/menu.js"></script>
		<link href="stylesheets/stylesheet1.css" rel="stylesheet" type="text/css" >
		<link href="stylesheets/links.css" rel="stylesheet" type="text/css" >
		<link rel="stylesheet" type="text/css" href="stylesheets/table.css">

	</head>

<body>

<table width="695" height="0" border="0" cellspacing="5">
	<tr>
		<td>
			<%
			  Sub createNewTableStart(endPrevTable)
			  if endPrevTable then response.write vbCrLf & "</table>" & vbCrLf & "<br />" & vbCrLf
			%>

                        <span style="padding-left: 28px;" class="rubrik"><b><%=objrs("CompName") %>&nbsp;<%= objrs("Course") %> (<%= objrs("Date") %>)</b></span>

                        <br>
                      
			<table align="center" border="1" style="border-collapse: collapse" bordercolor="1px solid #000000">
				<tr bgcolor="#CDD5E4" style="font-weight: bold">
				<% For I = 1 to 18 %>
					<td width="30" align="center"><a href="top10.asp?Show=Top10&Lane=<%=I%>" target=""><%=I%></a></td>
					<% Next %>
					<td width="30" align="center">Tot</td>
				</tr>
			
			<% End Sub %>
			
                        <%
                          dim Conn, objrs, i, y, prevDate, currDate, strTot
                          Set Conn = Server.CreateObject("ADODB.Connection") 
                          Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/eb.mdb") 
                          Set objrs = Conn.Execute("SELECT tbl_player.Namn, tbl_player.Efternamn, tbl_res.CompYear, tbl_res.Course, tbl_res.AMT1, tbl_res.AMT2, tbl_res.AMT3, tbl_res.AMT4, tbl_res.AMT5, tbl_res.AMT6, tbl_res.AMT7, tbl_res.AMT8, tbl_res.AMT9, tbl_res.AMT10, tbl_res.AMT11, tbl_res.AMT12, tbl_res.AMT13, tbl_res.AMT14, tbl_res.AMT15, tbl_res.AMT16, tbl_res.AMT17, tbl_res.AMT18, tbl_res.TOTAL, tbl_res.Date, tbl_res.CompName FROM tbl_player INNER JOIN tbl_res ON tbl_player.PlayerId=tbl_res.PlayerId WHERE tbl_res.Surface ='EB' ORDER BY tbl_res.Date, tbl_res.Varv")

			  
                          Dim arrSum, Counter
                          Counter = 0
                          Redim arrSum(17)
                          while not objrs.BOF and not objrs.EOF
	                  Counter = Counter +1
                          currDate = objrs("Date")
                          if IsEmpty(prevDate) then 'first iteration
	                  createNewTableStart(false)
                          elseif prevDate <> currDate then
			  				
			  Response.Write("<tr>" & vbCrlf)

			  For i = 0 To 17 %>
				<td><% MySumma = (arrSum(i)/Counter) : Response.Write FormatNumber(MySumma,2)%></td>
			 <%  Next
			  Response.Write("</tr>" & vbCrlf)
			  Counter = 0

			  				
			  createNewTableStart(true)
			  
                          Redim arrSum(17)
			  			  
                          end if
                            
                          y = y + 1
                          If y Mod 2 = 0 Then
                          %>
                          
                                	<tr bgcolor="#EEEEEE">
                                	<% Else %>
                                	<tr bgcolor="#FFFFFF">
                                	<% End If %>
	                  
	                        	<% 
			          	  For I = 1 to 18
                                          If len(objrs("AMT" & I)) > 0 Then
			          	  arrSum(I-1) = arrSum(I-1) + cint(objrs("AMT" & I))

                                          End If
			        	%>
                           
	                        			<td align="center"><%=objrs("AMT" & I)%></td>
                                        		<% Next %>
	                                		<td align="center">
                           		
	                                <% 
	                                  strTot = objrs("TOTAL")
	                                  if strTot < 20 then 
		                          response.write "<span class=""blueText"">"&strTot&"</span>"
	                                  elseif strTot < 25 then 
		                          response.write "<span class=""greenText"">"&strTot&"</span>"
	                                  elseif strTot < 30 then
		                          response.write "<span class=""redText"">"&strTot&"</span>"
	                                  elseif strTot > 29 then
		                          response.write "<span class=""blackText"">"&strTot&"</span>"
	                                  End if 	
	                                  response.write vbCrLf & "</td>" & vbCrLf & "</tr>" & vbCrLf
	                                  prevDate = currDate
	                                  objrs.movenext
                                          wend
                            
                                          if i=0 then 'empty recordset
                                          response.write "<tr><td colspan=""19"">Det finns inga resultat!</td></tr>"
                                          end if
                                        %>

					</table>
                        		<%
                                          'close and kill recordset/connection objects
                          		  objrs.close
                          		  set objrs = nothing
                          		  Conn.close
                          		  set Conn = nothing
                        		%>
					</td>
				</tr>
			</table>
                
		</td>
	</tr>
</table>
</body>
</html>
Medlem sedan dec. 2003209 inlägg
#12

Har oxå försökt få in en TD under Tot kolumnen för att där räkna ut det totala snittet
men det som händer är att den loopar ut en TD extra för varje bana så nu undrar jag om det överhuvud taget går att få in det totala snittet i ndre högra hörnet av tabellen?

/S

Medlem sedan juni 20003 076 inlägg
#13

Hur går det? Har du kommit nå längre?
För att få snittet på den understa tabellen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>

		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<title></title>
		<script language="JavaScript" type="text/javascript" src="/templates/menu.js"></script>
		<link href="stylesheets/stylesheet1.css" rel="stylesheet" type="text/css" >
		<link href="stylesheets/links.css" rel="stylesheet" type="text/css" >
		<link rel="stylesheet" type="text/css" href="stylesheets/table.css">

	</head>

<body>

<table width="695" height="0" border="0" cellspacing="5">
	<tr>
		<td>
			<%
			  Sub createNewTableStart(endPrevTable)
			  if endPrevTable then response.write vbCrLf & "</table>" & vbCrLf & "<br />" & vbCrLf
			%>

                        <span style="padding-left: 28px;" class="rubrik"><b><%=objrs("CompName") %>&nbsp;<%= objrs("Course") %> (<%= objrs("Date") %>)</b></span>

                        <br>
                      
			<table align="center" border="1" style="border-collapse: collapse" bordercolor="1px solid #000000">
				<tr bgcolor="#CDD5E4" style="font-weight: bold">
				<% For I = 1 to 18 %>
					<td width="30" align="center"><a href="top10.asp?Show=Top10&Lane=<%=I%>" target=""><%=I%></a></td>
					<% Next %>
					<td width="30" align="center">Tot</td>
				</tr>
			
			<% End Sub %>
			
                        <%
                          dim Conn, objrs, i, y, prevDate, currDate, strTot
                          Set Conn = Server.CreateObject("ADODB.Connection") 
                          Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/eb.mdb") 
                          Set objrs = Conn.Execute("SELECT tbl_player.Namn, tbl_player.Efternamn, tbl_res.CompYear, tbl_res.Course, tbl_res.AMT1, tbl_res.AMT2, tbl_res.AMT3, tbl_res.AMT4, tbl_res.AMT5, tbl_res.AMT6, tbl_res.AMT7, tbl_res.AMT8, tbl_res.AMT9, tbl_res.AMT10, tbl_res.AMT11, tbl_res.AMT12, tbl_res.AMT13, tbl_res.AMT14, tbl_res.AMT15, tbl_res.AMT16, tbl_res.AMT17, tbl_res.AMT18, tbl_res.TOTAL, tbl_res.Date, tbl_res.CompName FROM tbl_player INNER JOIN tbl_res ON tbl_player.PlayerId=tbl_res.PlayerId WHERE tbl_res.Surface ='EB' ORDER BY tbl_res.Date, tbl_res.Varv")

			  
                          Dim arrSum, Counter
                          Counter = 0
                          Redim arrSum(17)
                          while not objrs.BOF and not objrs.EOF
	                  Counter = Counter +1
                          currDate = objrs("Date")
                          if IsEmpty(prevDate) then 'first iteration
	                  createNewTableStart(false)
                          elseif prevDate <> currDate then
			  				
			  Response.Write("<tr>" & vbCrlf)

			  For i = 0 To 17 %>
				<td><% MySumma = (arrSum(i)/Counter) : Response.Write FormatNumber(MySumma,2)%></td>
			 <%  Next
			  Response.Write("</tr>" & vbCrlf)
			  Counter = 0

			  				
			  createNewTableStart(true)
			  
                          Redim arrSum(17)
			  			  
                          end if
                            
                          y = y + 1
                          If y Mod 2 = 0 Then
                          %>
                          
                                	<tr bgcolor="#EEEEEE">
                                	<% Else %>
                                	<tr bgcolor="#FFFFFF">
                                	<% End If %>
	                  
	                        	<% 
			          	  For I = 1 to 18
                                          If len(objrs("AMT" & I)) > 0 Then
			          	  arrSum(I-1) = arrSum(I-1) + cint(objrs("AMT" & I))

                                          End If
			        	%>
                           
	                        			<td align="center"><%=objrs("AMT" & I)%></td>
                                        		<% Next %>
	                                		<td align="center">
                           		
	                                <% 
	                                  strTot = objrs("TOTAL")
	                                  if strTot < 20 then 
		                          response.write "<span class=""blueText"">"&strTot&"</span>"
	                                  elseif strTot < 25 then 
		                          response.write "<span class=""greenText"">"&strTot&"</span>"
	                                  elseif strTot < 30 then
		                          response.write "<span class=""redText"">"&strTot&"</span>"
	                                  elseif strTot > 29 then
		                          response.write "<span class=""blackText"">"&strTot&"</span>"
	                                  End if 	
	                                  response.write vbCrLf & "</td>" & vbCrLf & "</tr>" & vbCrLf
	                                  prevDate = currDate
	                                  objrs.movenext
                                          wend

[b]
If Counter >0 Then
     Response.Write("<tr>" & vbCrlf)
          For i = 0 To 17
               Response.Write("<td>" & FormatNumber(arrSum(i)/Counter),2) & "</td>")
          Next
     Response.Write("</tr>" & vbCrlf)
End If
[/b]
                            
                                          if i=0 then 'empty recordset
                                          response.write "<tr><td colspan=""19"">Det finns inga resultat!</td></tr>"
                                          end if
                                        %>

					</table>
                        		<%
                                          'close and kill recordset/connection objects
                          		  objrs.close
                          		  set objrs = nothing
                          		  Conn.close
                          		  set Conn = nothing
                        		%>
					</td>
				</tr>
			</table>
                
		</td>
	</tr>
</table>
</body>
</html>
Medlem sedan dec. 2003209 inlägg
#14

Doggelito,

Det som händer när jag kör din kod är att jag får följande felmeddelande:

Kompileringsfel i Microsoft VBScript fel '800a0414'

Det går inte att använda parenteser när en Sub anropas.

/borg/sub/doggelito.asp, rad 111

Response.Write("<td>" & FormatNumber(arrSum(i)/Counter),2) & "</td>")
-----------------------------------------------------------^

/S

Medlem sedan juni 20003 076 inlägg
#15

sorry, en parantes för mycket! :)

Response.Write("<td>" & FormatNumber(arrSum(i)/Counter,2) & "</td>")
Medlem sedan dec. 2003209 inlägg
#16

Tack Doggelito,

då var ett problem ur världen :D så nu återstår bara 2 :P
dessa är ju då att det räknas fel på något sätt. Om du kollar i den översta tabellen
(2004) så ser du t ex på bana 3 att det är bara ettor och 1 2:a vilket alltså inte
kan bi 1,00 i snitt som det står där.

http://www.monow.se/borg/sub/doggelito.asp

Det sista problemet är att få in den sista TD i snitt raden dvs den som ska vara under Tot för som du ser så ser det ju lite knäppt ut i nedre högra hörnet av tabellerna.
I den cellen vill jag ju ha det totala snittet för alla varv på det scorecardet (tabellen).

koden för snittet bör väl se ut ungefär så här:

<% set antalV = Conn.Execute("SELECT tbl_res.Comp_Name, Count(tbl_res.TOTAL) AS Ant FROM tbl_res GROUP BY tbl_res.Comp_Name HAVING tbl_res.Comp_Name='"&objrs("Comp_Name")&"'")%>
<% Set snitt = Conn.Execute("SELECT tbl_res.Comp_Name, Sum(tbl_res.TOTAL) AS Summa FROM tbl_res GROUP BY tbl_res.Comp_Name HAVING tbl_res.Comp_Name='"&objrs("Comp_Name")&"'")%>

<% inSvar1 = snitt("Summa")
      inSvar2 = AntalV("Ant")
      inSvar = Insvar1 / Insvar2
      Response.Write formatnumber(Insvar,1) %>

men som sagt vart ska den in för att loopas ut underst i alla tabeller??

/S

Medlem sedan dec. 2003209 inlägg
#17

Doggelito,

fel av mig, problemet är inte alls ur världen. Jag provade att lägga in en tävling till i min
databas och då kom snittet inte med på den tabellen det jag vill är ju att ha det dynamiskt
så att alla tävlingar som läggs in i databasen i framtiden får sin egen snittrad.

/S

Medlem sedan juni 20003 076 inlägg
#18

testa denna, den borde räkna med totala kolumnen.
(jag stuvade om lite i koden för att lättare kunna läsa den!)
varför den räknar fel vet jag inte, återkommer om det! :)
//RED hm, blev tydligen inte så snyggt när jag pastade in koden i alla fall!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>

		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<title></title>
		<script language="JavaScript" type="text/javascript" src="/templates/menu.js"></script>
		<link href="stylesheets/stylesheet1.css" rel="stylesheet" type="text/css" >
		<link href="stylesheets/links.css" rel="stylesheet" type="text/css" >
		<link rel="stylesheet" type="text/css" href="stylesheets/table.css">

	</head>

<body>

<table width="695" height="0" border="0" cellspacing="5">
	<tr>

<td>

			
                        <%
                          dim Conn, objrs, i, y, prevDate, currDate, strTot
                          Set Conn = Server.CreateObject("ADODB.Connection") 
                          Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/eb.mdb") 
                          Set objrs = Conn.Execute("SELECT tbl_player.Namn, tbl_player.Efternamn, tbl_res.CompYear, tbl_res.Course, tbl_res.AMT1, tbl_res.AMT2, tbl_res.AMT3, tbl_res.AMT4, tbl_res.AMT5, tbl_res.AMT6, tbl_res.AMT7, tbl_res.AMT8, tbl_res.AMT9, tbl_res.AMT10, tbl_res.AMT11, tbl_res.AMT12, tbl_res.AMT13, tbl_res.AMT14, tbl_res.AMT15, tbl_res.AMT16, tbl_res.AMT17, tbl_res.AMT18, tbl_res.TOTAL, tbl_res.Date, tbl_res.CompName FROM tbl_player INNER JOIN tbl_res ON tbl_player.PlayerId=tbl_res.PlayerId WHERE tbl_res.Surface ='EB' ORDER BY tbl_res.Date, tbl_res.Varv")

			  
                          Dim arrSum, Counter, moreWhenOne
                          Counter = 0
						  moreWhenOne = false
                          Redim arrSum(18)
						  
                          while not objrs.BOF and not objrs.EOF
	                 		 Counter = Counter +1
                       		 currDate = objrs("Date")
                          	if IsEmpty(prevDate) then 'first iteration
	                  			createNewTableStart(false)
                        	elseif prevDate <> currDate then
			  				
			  					Response.Write("<tr>" & vbCrlf)
			  					For i = 0 To 18
									Response.Write("<td>" & FormatNumber(arrSum(i)/Counter,2) & "</td>")
			 					Next
			 					Response.Write("</tr>" & vbCrlf)
			  					Counter = 0
								 moreWhenOne = true
				
			 					createNewTableStart(true)
			  
                          		Redim arrSum(18)
			  			  
                          	end if
                            
							
                          	y = y + 1
                          	If y Mod 2 = 0 Then
								Response.Write("<tr bgcolor=""#EEEEEE"">")
							Else
								Response.Write("<tr bgcolor=""#FFFFFF"">")
							End If

			          	  	For I = 1 to 18
                            	If len(objrs("AMT" & I)) > 0 Then
			          	  			arrSum(I-1) = arrSum(I-1) + cint(objrs("AMT" & I))
                                End If
								
								Response.Write("<td align=""center"">" & objrs("AMT" & I) & "</td>")
			        		Next 
						
							Response.Write("<td align=""center"">")
	                        strTot = objrs("TOTAL")
							
							arrSum(18) = arrSum(18) + cint(objrs("TOTAL"))
							
	                        if strTot < 20 then 
		                    	response.write "<span class=""blueText"">"&strTot&"</span>"
	                        elseif strTot < 25 then 
		                    	response.write "<span class=""greenText"">"&strTot&"</span>"
	                        elseif strTot < 30 then
		                        response.write "<span class=""redText"">"&strTot&"</span>"
	                         elseif strTot > 29 then
		                        response.write "<span class=""blackText"">"&strTot&"</span>"
	                         End if 	
	                         response.write vbCrLf & "</td>" & vbCrLf & "</tr>" & vbCrLf
	                         prevDate = currDate
	                         objrs.movenext
                        wend

						If Counter >0 Or moreWhenOne = false Then
							 Response.Write("<tr>" & vbCrlf)
								  For i = 0 To 18
									   Response.Write("<td>" & FormatNumber(arrSum(i)/Counter),2) & "</td>")
								  Next
							 Response.Write("</tr>" & vbCrlf)
						End If

		
					    if i=0 then 'empty recordset
					  		response.write "<tr><td colspan=""19"">Det finns inga resultat!</td></tr>"
					    end if
                      %>

					</table>
					<%
							  'close and kill recordset/connection objects
					  objrs.close
					  set objrs = nothing
					  Conn.close
					  set Conn = nothing
					%>
					</td>
				</tr>
			</table>
                
		</td>

	</tr>
</table>
</body>
</html>

<%
	Sub createNewTableStart(endPrevTable)
		if endPrevTable then response.write vbCrLf & "</table>" & vbCrLf & "<br />" & vbCrLf
%>

    <span style="padding-left: 28px;" class="rubrik"><b><%=objrs("CompName") %>&nbsp;<%= objrs("Course") %> (<%= objrs("Date") %>)</b></span>

                        <br>
                      
			<table align="center" border="1" style="border-collapse: collapse" bordercolor="1px solid #000000">
				<tr bgcolor="#CDD5E4" style="font-weight: bold">
				<% For I = 1 to 18 %>
					<td width="30" align="center"><a href="top10.asp?Show=Top10&Lane=<%=I%>" target=""><%=I%></a></td>
					<% Next %>
					<td width="30" align="center">Tot</td>
				</tr>
			
<% End Sub %>
Medlem sedan dec. 2003209 inlägg
#19

Doggelito, det där funkade grymt bra när det gäller att få fram totalen.
dock så får jag fortfarande inte upp något snitt för den 3:e (fakade) tävlingen som jag la in för att testa om det loopades ut.

Sen så noterade jag att den räknar rätt på tävlingen 2005 men inte på den från 2004 det tycker jag är än mer konstigt än att den räknar fel över huvud taget, eller vad tycker du??

http://www.monow.se/borg/sub/doggelito2.asp

/S

Medlem sedan juni 20003 076 inlägg
#20

hmm, tror jag hittat felet! :)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>

		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
		<title></title>
		<script language="JavaScript" type="text/javascript" src="/templates/menu.js"></script>
		<link href="stylesheets/stylesheet1.css" rel="stylesheet" type="text/css" >
		<link href="stylesheets/links.css" rel="stylesheet" type="text/css" >
		<link rel="stylesheet" type="text/css" href="stylesheets/table.css">

	</head>

<body>

<table width="695" height="0" border="0" cellspacing="5">
	<tr>

<td>

			
                        <%
                          dim Conn, objrs, i, y, prevDate, currDate, strTot
                          Set Conn = Server.CreateObject("ADODB.Connection") 
                          Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/eb.mdb") 
                          Set objrs = Conn.Execute("SELECT tbl_player.Namn, tbl_player.Efternamn, tbl_res.CompYear, tbl_res.Course, tbl_res.AMT1, tbl_res.AMT2, tbl_res.AMT3, tbl_res.AMT4, tbl_res.AMT5, tbl_res.AMT6, tbl_res.AMT7, tbl_res.AMT8, tbl_res.AMT9, tbl_res.AMT10, tbl_res.AMT11, tbl_res.AMT12, tbl_res.AMT13, tbl_res.AMT14, tbl_res.AMT15, tbl_res.AMT16, tbl_res.AMT17, tbl_res.AMT18, tbl_res.TOTAL, tbl_res.Date, tbl_res.CompName FROM tbl_player INNER JOIN tbl_res ON tbl_player.PlayerId=tbl_res.PlayerId WHERE tbl_res.Surface ='EB' ORDER BY tbl_res.Date, tbl_res.Varv")

			  
                          Dim arrSum, Counter, moreThenOne
                          Counter = 0
						  moreThenOne = false
                          Redim arrSum(18)
						  
                          while not objrs.BOF and not objrs.EOF
	                 		 Counter = Counter +1
                       		 currDate = objrs("Date")
                          	if IsEmpty(prevDate) then 'first iteration
	                  			createNewTableStart(false)
                        	elseif prevDate <> currDate then
			  				
			  					Response.Write("<tr>" & vbCrlf)
			  					For i = 0 To 18
									Response.Write("<td>" & FormatNumber(arrSum(i)/Counter,2) & "</td>")
			 					Next
			 					Response.Write("</tr>" & vbCrlf)
			  					[b]Counter = 1[/b]
								 moreThenOne = true
				
			 					createNewTableStart(true)
			  
                          		Redim arrSum(18)
			  			  
                          	end if
                            
							
                          	y = y + 1
                          	If y Mod 2 = 0 Then
								Response.Write("<tr bgcolor=""#EEEEEE"">")
							Else
								Response.Write("<tr bgcolor=""#FFFFFF"">")
							End If

			          	  	For I = 1 to 18
                            	If len(objrs("AMT" & I)) > 0 Then
			          	  			arrSum(I-1) = arrSum(I-1) + cint(objrs("AMT" & I))
                                End If
								
								Response.Write("<td align=""center"">" & objrs("AMT" & I) & "</td>")
			        		Next 
						
							Response.Write("<td align=""center"">")
	                        strTot = objrs("TOTAL")
							
							arrSum(18) = arrSum(18) + cint(objrs("TOTAL"))
							
	                        if strTot < 20 then 
		                    	response.write "<span class=""blueText"">"&strTot&"</span>"
	                        elseif strTot < 25 then 
		                    	response.write "<span class=""greenText"">"&strTot&"</span>"
	                        elseif strTot < 30 then
		                        response.write "<span class=""redText"">"&strTot&"</span>"
	                         elseif strTot > 29 then
		                        response.write "<span class=""blackText"">"&strTot&"</span>"
	                         End if 	
	                         response.write vbCrLf & "</td>" & vbCrLf & "</tr>" & vbCrLf
	                         prevDate = currDate
	                         objrs.movenext
                        wend

						If Counter >0 Or moreThenOne = false Then
							 Response.Write("<tr>" & vbCrlf)
								  For i = 0 To 18
									   Response.Write("<td>" & FormatNumber(arrSum(i)/Counter),2) & "</td>")
								  Next
							 Response.Write("</tr>" & vbCrlf)
						End If

		
					    if i=0 then 'empty recordset
					  		response.write "<tr><td colspan=""19"">Det finns inga resultat!</td></tr>"
					    end if
                      %>

					</table>
					<%
							  'close and kill recordset/connection objects
					  objrs.close
					  set objrs = nothing
					  Conn.close
					  set Conn = nothing
					%>
					</td>
				</tr>
			</table>
                
		</td>

	</tr>
</table>
</body>
</html>

<%
	Sub createNewTableStart(endPrevTable)
		if endPrevTable then response.write vbCrLf & "</table>" & vbCrLf & "<br />" & vbCrLf
%>

    <span style="padding-left: 28px;" class="rubrik"><b><%=objrs("CompName") %>&nbsp;<%= objrs("Course") %> (<%= objrs("Date") %>)</b></span>

                        <br>
                      
			<table align="center" border="1" style="border-collapse: collapse" bordercolor="1px solid #000000">
				<tr bgcolor="#CDD5E4" style="font-weight: bold">
				<% For I = 1 to 18 %>
					<td width="30" align="center"><a href="top10.asp?Show=Top10&Lane=<%=I%>" target=""><%=I%></a></td>
					<% Next %>
					<td width="30" align="center">Tot</td>
				</tr>
			
<% End Sub %>
291 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
168 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)