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.
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.
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
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.
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
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å.
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.
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>
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.
274 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a