webForumDet fria alternativet

Räkna volym och energi för varje enskild datum

ASP

68 svar · 937 visningar · startad av plelkes

Medlem sedan mars 2002823 inlägg
Frågan#1

Just nu ser koden ut

 <%
pat = Request.Form("rapport")
Set vbalans = Server.CreateObject("ADODB.Connection")
vbalans.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vbalans.ConnectionString = "Data Source='" & MdbFilePath & "'"
vbalans.open
strSQL = "SELECT f.FluidNamn, f.FluidID, v.Dag, v.PatID, v.Volym, v.Energi," &_
         " p.ftEnamn, p.ftFnamn FROM (tblVetskebalans v INNER JOIN tblFluids f"&_
          " ON v.FluidID = f.FluidID) INNER JOIN tblPersonuppgifter p ON v.PatID = p.PatID" &_
          " WHERE p.PatID = "& pat &""
		  Set rs1 = vbalans.Execute (strSQL)
'formatera till svensk personnummer
Function SvPnr(txt)
      personnummer =Left(txt,6) & " - " & Right(txt,4)
  SvPnr = personnummer
End Function
Function FirstVersal(txt)
      versal = UCase(Left(txt,1)) & LCase(Right(txt, Len(txt)-1))
  FirstVersal = versal
End Function
    Response.Write SvPnr(rs1("PatID")) & "<BR>"
    Response.Write "<B>" & FirstVersal(rs1("ftEnamn")) & ", " & FirstVersal(rs1("ftFnamn")) & "</B><P><P><P>"
%>
<TABLE border=1>
  <TR>
    <TD><B>Datum</B></TD>
    <TD><B>Vätska</B></TD>
    <TD><B>Volym</B></TD>
    <TD><B>Energi</B></TD>
   </TR>
<%
v = 0
e = 0
dat = ""
 Do While Not rs1.EOF
v = v + cint(rs1("Volym"))
e = e + cint(rs1("Energi"))
If dat <> CDate(rs1("Dag")) then
dat = CDate(rs1("Dag"))  
       Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
 Else
       Response.Write "<TR><TD>&nbsp;</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
End If
rs1.MoveNext
Loop

vbalans.Close
Set vbalans = Nothing
 %>
</TABLE>
<BR><BR><BR>
<%
Response.Write "<B><U>Totala volymen är</U></B>" & ":     " & v & "<BR>"
Response.Write "<B><U>Totala energi är</U></B>" & ":        " & e & "<BR>"
%>

Som ger följande utskrift

111111 - 1111
Elvansson, Elvan
Datum Vätska Volym Energi
2004-03-21 Blod 1000 0
Sondmat 550 275
Sondmat 550 275
Sondmat 550 275
2004-04-29 Albumin 40 mg/ml 76 0
2004-05-02 Proviva 123 0

Totala volymen är: 2849
Totala energi är: 825

Om jag istället vill sumera för alla aktuella datum - hur skulle koden se ut då?

Medlem sedan mars 2002823 inlägg
#2

Har försökt med följande ändring (= fet-stil)

<%@ Language=VBScript LCID=1053%>
<HTML>
<title>Rapport</title>
<BODY>
 <%
pat = Request.Form("rapport")
Set vbalans = Server.CreateObject("ADODB.Connection")
vbalans.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vbalans.ConnectionString = "Data Source='" & MdbFilePath & "'"
vbalans.open
strSQL = "SELECT f.FluidNamn, f.FluidID, v.Dag, v.PatID, v.Volym, v.Energi," &_
         " p.ftEnamn, p.ftFnamn FROM (tblVetskebalans v INNER JOIN tblFluids f"&_
          " ON v.FluidID = f.FluidID) INNER JOIN tblPersonuppgifter p ON v.PatID = p.PatID" &_
          " WHERE p.PatID = "& pat &""
		  Set rs1 = vbalans.Execute (strSQL)
'formatera till svensk personnummer
Function SvPnr(txt)
      personnummer =Left(txt,6) & " - " & Right(txt,4)
  SvPnr = personnummer
End Function
Function FirstVersal(txt)
      versal = UCase(Left(txt,1)) & LCase(Right(txt, Len(txt)-1))
  FirstVersal = versal
End Function
    Response.Write SvPnr(rs1("PatID")) & "<BR>"
    Response.Write "<B>" & FirstVersal(rs1("ftEnamn")) & ", " & FirstVersal(rs1("ftFnamn")) & "</B><P><P><P>"
%>
<TABLE border=1>
  <TR>
    <TD><B>Datum</B></TD>
    <TD><B>Vätska</B></TD>
    <TD><B>Volym</B></TD>
    <TD><B>Energi</B></TD>
   </TR>
<%
v = 0
e = 0
dat = ""
 Do While Not rs1.EOF
v = v + cint(rs1("Volym"))
e = e + cint(rs1("Energi"))
If dat <> CDate(rs1("Dag")) then
dat = CDate(rs1("Dag"))  
       Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
 Else
       Response.Write "<TR><TD>&nbsp;</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
End If
[B]Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Totala volymen är:</U></B>"
Response.Write "<TD>" v "</TD></TR>"
Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Totala energi är:</U></B>"
Response.Write "<TD>" e "</TD></TR>"[/B]
rs1.MoveNext
Loop

vbalans.Close
Set vbalans = Nothing
 %>
</TABLE>
<BR><BR><BR>
%>
</body>
</html>

Men fungerar ej - tyvärr är jag på jobbet och kan inte få felutskrift...

Medlem sedan feb. 200112 078 inlägg
#3

Det är säkerligen inte det som är felet, men du har iallafall konkatenerat inkorrekt.

Response.Write "<TR><TD> </TD>"
Response.Write "<TD> </TD>"
Response.Write "<B><U>Totala volymen är:</U></B>"
Response.Write "<TD>" & v & "</TD></TR>"
Response.Write "<TR><TD> </TD>"
Response.Write "<TD> </TD>"
Response.Write "<B><U>Totala energi är:</U></B>"
Response.Write "<TD>" & e & "</TD></TR>"
Medlem sedan mars 2002823 inlägg
#4

Tack OveRRidE blev bättre, men inte bra.
Har möblerat om i koden

 <%
pat = Request.Form("rapport")
Set vbalans = Server.CreateObject("ADODB.Connection")
vbalans.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vbalans.ConnectionString = "Data Source='" & MdbFilePath & "'"
vbalans.open
strSQL = "SELECT f.FluidNamn, f.FluidID, v.Dag, v.PatID, v.Volym, v.Energi," &_
         " p.ftEnamn, p.ftFnamn FROM (tblVetskebalans v INNER JOIN tblFluids f"&_
          " ON v.FluidID = f.FluidID) INNER JOIN tblPersonuppgifter p ON v.PatID = p.PatID" &_
          " WHERE p.PatID = "& pat &""
		  Set rs1 = vbalans.Execute (strSQL)
'formatera till svensk personnummer
Function SvPnr(txt)
      personnummer =Left(txt,6) & " - " & Right(txt,4)
  SvPnr = personnummer
End Function
Function FirstVersal(txt)
      versal = UCase(Left(txt,1)) & LCase(Right(txt, Len(txt)-1))
  FirstVersal = versal
End Function
    Response.Write SvPnr(rs1("PatID")) & "<BR>"
    Response.Write "<B>" & FirstVersal(rs1("ftEnamn")) & ", " & FirstVersal(rs1("ftFnamn")) & "</B><P><P><P>"
%>
<TABLE border=1>
  <TR>
    <TD><B>Datum</B></TD>
    <TD><B>Vätska</B></TD>
    <TD><B>Volym</B></TD>
    <TD><B>Energi</B></TD>
   </TR>
<%
v = 0
e = 0
dat = ""
 Do While Not rs1.EOF
v = v + cint(rs1("Volym"))
e = e + cint(rs1("Energi"))
If dat <> CDate(rs1("Dag")) then
dat = CDate(rs1("Dag"))  
       Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
 Else
       Response.Write "<TR><TD>&nbsp;</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"

Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Totala volymen är:</U></B>"
Response.Write "<TD>" & v & "</TD></TR>"
Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Totala energi är:</U></B>"
Response.Write "<TD>" & e & "</TD></TR>"
End If
rs1.MoveNext
Loop

vbalans.Close
Set vbalans = Nothing
 %>
</TABLE>

Resultatet är bättre, men inte bra
Jag har nog tänkt fel:

  1. Lista alla givna vätskor för första datumet ( dvs dat =CDate(rs1("Dag"))
  2. sedan skriva ut summan för volym för den dagen
  3. skriva ut summan energi för den dagen
  4. lista nästa gällande datum
Medlem sedan apr. 2004778 inlägg
#5

Skapa en "dagsvariabel" för volym och en för energi.
Ha en variabel som håller koll på "dagen innan". För varje record i din loop kollar du om aktuellt datum är samma som "dagen innan" om det inte är det skriver du ut dagstotalen, nollställer den och sätter "dagen innan" till aktuellt datum.
Om det är samma dag fortfarande plussar du på precis som du gör med totala volymen och energin.

Medlem sedan mars 2002823 inlägg
#6

Tack för hjälpen Patrik, trodde att det var det jag gjorde med ändringarna jag komm påunder resan hem

<%
dat = "" 
Do While Not rs1.EOF
If dat <> CDate(rs1("Dag")) then
   dat = CDate(rs1("Dag")) 
   v = 0
   e = 0
  v = v + cint(rs1("Volym"))
  e = e + cint(rs1("Energi"))
       Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
 Else
       Response.Write "<TR><TD>&nbsp;</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"

Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Totala volymen är:</U></B>"
Response.Write "<TD>" & v & "</TD></TR>"
Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Totala energi är:</U></B>"
Response.Write "<TD>" & e & "</TD></TR>"
End If
rs1.MoveNext
Loop

vbalans.Close
Set vbalans = Nothing
 %>

Men så är inte fallet!!!

PDahlen skrev:

Skapa en "dagsvariabel" för volym och en för energi.

det har jag väl gjort med

v = 0
   e = 0
  v = v + cint(rs1("Volym"))
  e = e + cint(rs1("Energi"))

PDahlen skrev:

Ha en variabel som håller koll på "dagen innan". För varje record i din loop kollar du om aktuellt datum är samma som "dagen innan"

Är inte det jag gör med

dat = "" 
Do While Not rs1.EOF
If dat <> CDate(rs1("Dag")) then
   dat = CDate(rs1("Dag")) 
        Response.Write 
 Else
       Response.Write "<TR><TD>&nbsp;</TD>"
Medlem sedan apr. 2004778 inlägg
#7

Du måste ju plussa på värden även när det inte är samma dag. Med andra ord efter Else

Medlem sedan mars 2002823 inlägg
#8

Vet inte Patrik om det är så här du menar,

<%
dat = "" 
Do While Not rs1.EOF
If dat <> CDate(rs1("Dag")) then
   dat = CDate(rs1("Dag")) 
   v = 0
   e = 0
  v = v + cint(rs1("Volym"))
  e = e + cint(rs1("Energi"))
       Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
 Else
   v = 0
   e = 0
  v = v + cint(rs1("Volym"))
  e = e + cint(rs1("Energi"))
       Response.Write "<TR><TD>&nbsp;</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"

Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Totala volymen är:</U></B>"
Response.Write "<TD>" & v & "</TD></TR>"
Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Totala energi är:</U></B>"
Response.Write "<TD>" & e & "</TD></TR>"
End If
rs1.MoveNext
Loop

vbalans.Close
Set vbalans = Nothing
 %>

Men det funkar ändå inte som jag vill bifogar sidan

Medlem sedan apr. 2004778 inlägg
#9

Du ska inte nollställa dagstotalerna vid Else, bara plussa på.
Sen vet jag inte riktigt vad du gör.
Du använder v och e som totala värden på slutet. Om du ska ha både dag och total så måste du ha två värden för varje.
Sen ska du skriva ut om dagen inte är samma som dagen innan och SEN nollställa.

Medlem sedan mars 2002823 inlägg
#10

funkar ändå inte

<%
dat = "" 
Do While Not rs1.EOF
If dat <> CDate(rs1("Dag")) then
   dat = CDate(rs1("Dag")) 
   v = 0
   e = 0
  v = v + cint(rs1("Volym"))
  e = e + cint(rs1("Energi"))
       Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
 Else
     v = v + cint(rs1("Volym"))
   e = e + cint(rs1("Energi"))
       Response.Write "<TR><TD>&nbsp;</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"

Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Totala volymen är:</U></B>"
Response.Write "<TD>" & v & "</TD></TR>"
Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Totala energi är:</U></B>"
Response.Write "<TD>" & e & "</TD></TR>"
End If
rs1.MoveNext
Loop

vbalans.Close
Set vbalans = Nothing
 %>
Medlem sedan apr. 2004778 inlägg
#11

Nej, klart att det inte funkar. Du har inte gjort det jag skrev i mitt förra inlägg.
Dina fel.
1. Du använder samma variabler (e och v) till både dag och total
2. Du skriver inte ut några dagsvariabler innan du nollställer

Medlem sedan mars 2002823 inlägg
#12
  1. Jag skall inte ha ngr total variabler bara dags total

Du skriver inte ut några dagsvariabler innan du nollställer

Gör jag inte?

Response.Write "<B><U>Totala volymen är:</U></B>"
Response.Write "<TD>" & v & "</TD></TR>"
Response.Write "<TR><TD> </TD>"
Response.Write "<TD> </TD>"
Response.Write "<TD> </TD>"
Response.Write "<B><U>Totala energi är:</U></B>"
Response.Write "<TD>" & e & "</TD></TR>"
End If
rs1.MoveNext

ovanstående kod trodde jag betydde just detta:

  1. jag skriver ut variabeln
  2. jag flyttar mig till nästa post
  3. jag nollställer variablerna
Medlem sedan apr. 2004778 inlägg
#13

Kolla igenom din kod.
Den utskriften ska stå INNAN du nollställer direkt efter IF-frågan som visar att nu har du bytt dag.
Som du gör nu så skriver du ut varje gång som den aktuelle dagen är samma som dagen innan.

Medlem sedan mars 2002823 inlägg
#14

Brinkster bråkar, så jag kommer ej åt...
Menar du så här

<%
dat = "" 
Do While Not rs1.EOF
If dat <> CDate(rs1("Dag")) then
   dat = CDate(rs1("Dag")) 
   v = 0
   e = 0
  v = v + cint(rs1("Volym"))
  e = e + cint(rs1("Energi"))
       Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
 Else
     v = v + cint(rs1("Volym"))
   e = e + cint(rs1("Energi"))
       Response.Write "<TR><TD> </TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"

End If
Response.Write "<B><U>Totala volymen är:</U></B>"
Response.Write "<TD>" & v & "</TD></TR>"
Response.Write "<TR><TD> </TD>"
Response.Write "<TD> </TD>"
Response.Write "<TD> </TD>"
Response.Write "<B><U>Totala energi är:</U></B>"
Response.Write "<TD>" & e & "</TD></TR>"
End If
rs1.MoveNext
Medlem sedan apr. 2004778 inlägg
#15

Nej, du vill ju skriva ut e och v för varje dag. Flytta upp den utskriften så den står direkt innan du nollställer e och v.
Gör även en koll om dat = "". Om det är så så skriver du inte ut eftersom det betyder att det är första dagen du är på.

Medlem sedan mars 2002823 inlägg
#16

Ursäktamig,men jag fattar inte hur jag skall få till det...

<%
dat = "" 
Do While Not rs1.EOF
If dat <> CDate(rs1("Dag")) then
   dat = CDate(rs1("Dag")) 
        Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
       
 Else
         Response.Write "<TR><TD>&nbsp;</TD>"
       Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
       Response.Write "<TD>" & rs1("Volym") & "</TD>"
       Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"

End If
  v = v + cint(rs1("Volym"))
     e = e + cint(rs1("Energi"))

Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Volym givet idag:</U></B>"
Response.Write "<TD>" & v & "</TD></TR>"
Response.Write "<TR><TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<TD>&nbsp;</TD>"
Response.Write "<B><U>Givet energi</U></B>"
Response.Write "<TD>" & e & "</TD></TR>"

v = 0
e = 0
rs1.MoveNext
Loop

vbalans.Close
Set vbalans = Nothing
 %>

gerbättre utskrift,men inte bra - se bilag<

Medlem sedan mars 2002823 inlägg
#17

Nu har jag bollat fram och tillbaka så att ajg ser i kors...
Men inte har jag kommit närmare en lösning...

Medlem sedan apr. 2004778 inlägg
#18

Du skriver fortfarande inte ut e och v för varje dag. Du har inte flyttat in utskriften och nu nollställer du inte ens dagsvärdena när du byter dag.

<%
dat = "" 
v = 0
e = 0
Response.Write "<table>"
Do While Not rs1.EOF
	If dat <> CDate(rs1("Dag")) then
		if not dat = "" then
			Response.Write "<TR><TD> </TD>"
			Response.Write "<TD> </TD>"
			Response.Write "<TD> </TD>"
			Response.Write "<B><U>Volym givet idag:</U></B>"
			Response.Write "<TD>" & v & "</TD></TR>"
			Response.Write "<TR><TD> </TD>"
			Response.Write "<TD> </TD>"
			Response.Write "<TD> </TD>"
			Response.Write "<B><U>Givet energi</U></B>"
			Response.Write "<TD>" & e & "</TD></TR>"
		end if
		v = cint(rs1("Volym"))
		e = cint(rs1("Energi"))
		dat = CDate(rs1("Dag")) 
		Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
		Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
		Response.Write "<TD>" & rs1("Volym") & "</TD>"
		Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
	Else
		v = v + cint(rs1("Volym"))
		e = e + cint(rs1("Energi"))
		Response.Write "<TR><TD> </TD>"
		Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
		Response.Write "<TD>" & rs1("Volym") & "</TD>"
		Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
	End If
rs1.MoveNext
Loop
Response.Write "</table>"

vbalans.Close
Set vbalans = Nothing
%>

Använd den här koden. Jämför den med din så ser du vad du gjort för fel.

Ett tips. När en utskrift blir fel ta fram papper och penna. SKriv upp lite testdata och alla dina variabler. Stega sedan igenom koden rad för rad och skriv på pappret vad variablerna ändras till och vad som skrivs ut.
Ett litet knep som min datalärare lärde mig.

Medlem sedan mars 2002823 inlägg
#19

Patrik, du ärlycklig du som har en datalärare -själv är jag helt obildad och hankar mig fram med hjälp av böcker och er på wf...
Koden funkade nästan... Enda är att utskriften

Volym givet idag:
Givet energi

inte hamnar på dess rätta plats, utan Ovanför tabellen. Kan du hjälpa mig med detta med*ber snällt*
Så ser koden ut

<%@ Language=VBScript LCID=1053%>
<HTML>
<title>Rapport</title>
<BODY>
 <%
pat = Request.Form("rapport")
Set vbalans = Server.CreateObject("ADODB.Connection")
vbalans.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vbalans.ConnectionString = "Data Source='" & MdbFilePath & "'"
vbalans.open
strSQL = "SELECT f.FluidNamn, f.FluidID, v.Dag, v.PatID, v.Volym, v.Energi," &_
         " p.ftEnamn, p.ftFnamn FROM (tblVetskebalans v INNER JOIN tblFluids f"&_
          " ON v.FluidID = f.FluidID) INNER JOIN tblPersonuppgifter p ON v.PatID = p.PatID" &_
          " WHERE p.PatID = "& pat &""
		  Set rs1 = vbalans.Execute (strSQL)
'formatera till svensk personnummer
Function SvPnr(txt)
      personnummer =Left(txt,6) & " - " & Right(txt,4)
  SvPnr = personnummer
End Function
Function FirstVersal(txt)
      versal = UCase(Left(txt,1)) & LCase(Right(txt, Len(txt)-1))
  FirstVersal = versal
End Function
    Response.Write SvPnr(rs1("PatID")) & "<BR>"
    Response.Write "<B>" & FirstVersal(rs1("ftEnamn")) & ", " & FirstVersal(rs1("ftFnamn")) & "</B><P><P><P>"
%>
<TABLE border=1>
  <TR>
    <TD><B>Datum</B></TD>
    <TD><B>Vätska</B></TD>
    <TD><B>Volym</B></TD>
    <TD><B>Energi</B></TD>
   </TR>
<%
dat = "" 
v = 0
e = 0

Do While Not rs1.EOF
	If dat <> CDate(rs1("Dag")) then
		if not dat = "" then
			Response.Write "<TR><TD> </TD>"
			Response.Write "<TD> </TD>"
			Response.Write "<TD> </TD>"
			Response.Write "<B><U>Volym givet idag:</U></B>"
			Response.Write "<TD>" & v & "</TD></TR>"
			Response.Write "<TR><TD> </TD>"
			Response.Write "<TD> </TD>"
			Response.Write "<TD> </TD>"
			Response.Write "<B><U>Givet energi</U></B>"
			Response.Write "<TD>" & e & "</TD></TR>"
		end if
		v = cint(rs1("Volym"))
		e = cint(rs1("Energi"))
		dat = CDate(rs1("Dag")) 
		Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
		Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
		Response.Write "<TD>" & rs1("Volym") & "</TD>"
		Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
	Else
		v = v + cint(rs1("Volym"))
		e = e + cint(rs1("Energi"))
		Response.Write "<TR><TD> </TD>"
		Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
		Response.Write "<TD>" & rs1("Volym") & "</TD>"
		Response.Write "<TD>" & rs1("Energi") & "</TD></TR>"
	End If
rs1.MoveNext
Loop
Response.Write "</table>"

vbalans.Close
Set vbalans = Nothing
%>
<BR><BR><BR>
</TABLE>

</body>
</html>
Medlem sedan apr. 2004778 inlägg
#20

Hade en datalärare. Jag börjar ju bli gammal nu. ;)
Men när det gäller webb (ASP och .NET) så är jag självlärd från böcker. Tänket har jag dock från skolan för sättet att tänka är så gott som likadant i alla programmeringsspråk.
Böcker är bra och att koda är också bra men det viktigaste är att lära sig grunderna och sättet att tänka först. I det här fallet t.ex. så hade du behövt rita upp själva strukturen på hur det ska funka. En pseudokod, innan du skriver koden. Då hade du sett när du skulle addera, nollställa och skriva ut.

Felet du får nu är för att jag hade lagt till en </table>. Ta bort 10:e raden nerifrån. Raden direkt efter Loop där det står Response.Write "</table>"

Ett till tips. När du får ett sånt här fel i utskriften kolla sourcen i webbläsaren och felsök dina tabeller.

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