webForumDet fria alternativet

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

ASP

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 →
Medlem sedan mars 2002823 inlägg
#61

punkt a är löst

Medlem sedan mars 2002823 inlägg
#62

punkt b är löst - jag skrev fel rs1 på rad..

Medlem sedan mars 2002823 inlägg
#63

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??

Medlem sedan mars 2002823 inlägg
#64

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>&nbsp;</TD>"
        Response.Write"<TD>&nbsp;</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

Medlem sedan mars 2002823 inlägg
#65

jag glömde ett end if...
Men det finns även fel i mitt sätt att tänka:

  1. 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
  1. 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
Medlem sedan mars 2002823 inlägg
#66

Ngn av er kära wf som har förslag, idéer?

Medlem sedan mars 2002823 inlägg
#67

snälla, jag hittar inte felet - please hjälp mig*snyft*

Medlem sedan juni 200032 967 inlägg
#68
  1. 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

Medlem sedan mars 2002823 inlägg
#69

tack @nders för detta iaf

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