punkt a är löst
Räkna volym och energi för varje enskild datum
68 svar · 937 visningar · startad av plelkes · sida 4 av 4
Frågan, av plelkes
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.
Läs frågan i sin helhet →punkt b är löst - jag skrev fel rs1 på rad..
Nu när jag har fått det funka så här långt ;) har jag skrivit en ny pseudokod:Pseudokoden2
1. Hämta data sorterat efter datum, och tid
2. Skapa variabler för
vd = dygnsvolym
de = dygnsenergi
"dagen innan"
vt = timmsvolym
et = timmsenergi
”timmen innan”
3. Loopa recordset
4. Kolla om den aktuella dagen är samma som "dagen innan"
5. Om vi är på samma dag gå till 6 om inte gå till 16
6. Kolla om den aktuella timmen är samma som ”timmen innan”
7. Om vi är på samma timme gå till 8 om inte gå till 11
8. Addera aktuella värden till vt och et
9. Skriv ut : namn, volym
10. Gå till 3
11. skriv ut vt och et eftersom dessa tillhör ”timmen innan”
12. Nollställ vt och et och sätt "timmen innan" till aktuell tid
13. Skriv ut: klockslag, namn, volym
14. Om fler timmar i recordset gå till 3
15. Inga fler timmar skriv ut: vt och et
16. Skriv ut vd och ed eftersom dessa tillhör "dagen innan"
17. Nollställ vd och ed och sätt "dagen innan" till aktuell dag
18. Addera aktuell vd och ed
19. Skriv ut: dat, klockslag, namn, volym
20. Om fler dagar i recordset gå till 3
21. Inga fler dagar så skriv ut volym och energi och avsluta.
Några kommentarer till ovanstående??
Stärkt av framgångarna har jag försökt koppla ihop det hela
<%@ 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, v.tidpunkt 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 &" ORDER BY v.dag"
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>
<TH>Datum</TH>
<TH>Klockslag</TH>
<TH>Namn</TH>
<TH>Volym</TH>
</TR>
<%
dat = ""
tp = ""
vt = 0
et = 0
vd = 0
de = 0
Do While Not rs1.EOF
If dat <> CDate(rs1("Dag")) then
If tp <> CDate(rs1("tidpunkt")) then
if not tp = "" then
Response.Write "<TR>"
Response.Write "<TD COLSPAN = 4 Align = right >"
Response.Write "<B><U>Givet volym</U></B></TD>"
Response.Write "<TD>" & vt & "</TD></TR>"
Response.Write "<TR>"
Response.Write "<TD COLSPAN = 4 Align = right>"
Response.Write "<B><U>Energi</U></B></TD></TD>"
Response.Write "<TD>" & et & "</TD></TR>"
end if
If not dat = "" then
Response.Write "<TR>"
Response.Write "<TD COLSPAN = 5 Align = right >"
Response.Write "<B><U>Under dygnet givet volym</U></B></TD>"
Response.Write "<TD>" & vt & "</TD></TR>"
Response.Write "<TR>"
Response.Write "<TD COLSPAN = 5 Align = right>"
Response.Write "<B><U>Energi givet under dygnet</U></B></TD></TD>"
Response.Write "<TD>" & de & "</TD></TR>"
end if
dat = CDate(rs1("Dag"))
vt = cint(rs1("Volym"))
et = cint(rs1("Energi"))
tp = CDate(rs1("tidpunkt"))
Response.Write "<TR><TD>" & CDate(rs1("Dag"))& "</TD>"
Response.Write "<TD>" & CDate(rs1("tidpunkt"))& "</TD>"
Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
Response.Write "<TD>" & rs1("Volym") & "</TD></TR>"
Else
vt = vt + cint(rs1("Volym"))
et = et + cint(rs1("Energi"))
Response.Write "<TR><TD> </TD>"
Response.Write"<TD> </TD>"
Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
Response.Write "<TD>" & rs1("Volym") & "</TD></TR>"
End If
Else
vd = vt + vt
de = de + de
rs1.MoveNext
Loop
if not tp = "" then
Response.Write "<TR>"
Response.Write "<TD COLSPAN = 4 Align = right >"
Response.Write "<B><U>Givet volym</U></B></TD>"
Response.Write "<TD>" & vt & "</TD></TR>"
Response.Write "<TR>"
Response.Write "<TD COLSPAN = 4 Align = right>"
Response.Write "<B><U>Energi</U></B></TD></TD>"
Response.Write "<TD>" & et & "</TD></TR>"
end if
If not dat = "" then
Response.Write "<TR>"
Response.Write "<TD COLSPAN = 5 Align = right >"
Response.Write "<B><U>Under dygnet givet volym</U></B></TD>"
Response.Write "<TD>" & vt & "</TD></TR>"
Response.Write "<TR>"
Response.Write "<TD COLSPAN = 5 Align = right>"
Response.Write "<B><U>Energi givet under dygnet</U></B></TD></TD>"
Response.Write "<TD>" & de & "</TD></TR>"
end if
vbalans.Close
Set vbalans = Nothing
%>
<BR><BR><BR>
</TABLE>
</body>
</html>
får dock fel:
Microsoft VBScript compilation error '800a040e'
'loop' without 'do'
/vatskebalans/visa_rapporten102.asp, line 87
Loop
^
Mend et h ade jag väl inte förrut heller?
Har ju inte tagit bort ngt utan bara lagt till
Rad 87: är bara loop
jag glömde ett end if...
Men det finns även fel i mitt sätt att tänka:
- Får felutskrift
Microsoft VBScript runtime error '800a005e'
Invalid use of Null: 'CDate'/vatskebalans/visa_rapporten102.asp, line 45
rad 45
If tp <> CDate(rs1("tidpunkt")) then
- om ni klickar i Elvansson ser ni:
a) För 040321 skall det finnas flera poster ( 4 poster för kl 00:00)
b) för 040603 skall det finnass:2psoter 14:42, 1 post kl 00:00 och 1post kl 14:20
c) energi givet under dygnet adderas inte ihop
Ngn av er kära wf som har förslag, idéer?
snälla, jag hittar inte felet - please hjälp mig*snyft*
- Du får inte göra CDate() på ett värde som är null. Du får kontrollera det innan du gör CDate(). Du kan använda funktionen IsDate().
De andra delarna hinner jag inte sätta mig in i dessvärre.
mvh
tack @nders för detta iaf
