webForumDet fria alternativet

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

ASP

68 svar · 937 visningar · startad av plelkes · sida 3 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 apr. 2004778 inlägg
#41

Ok, då har du nog förstått rätt, men gjort det krångligt i din lista. ;)

Medlem sedan mars 2002823 inlägg
#42

Om jag nu skulle utveckla lite mera = för varje dag har jag även ngra (= ca 3) tidpunkter. Och summeringen skall ske

  1. efter varje tidpunkt
  2. varje dag

Jag har gjort lite tillägg (fet-stilt) i ditt pseudokod:
1. Hämta data sorterat efter datum och tid
2. Skapa dagvariabler för volym, energi och "dagen innan"och ”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 8 om inte gå till 11
**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 volym och energi
9. Skriv ut aktuell data
10. Gå till 3
11. Skriv ut volym och energi eftersom dessa tillhör "dagen innan"
12. Nollställ volym och energi och sätt "dagen innan" till aktuell dag
13. Nollställ volym och energi och sätt ”timmen innan” till aktuell timme
14. Addera aktuell volym och energi
15 Skriv ut aktuell data
16. Om fler dagar i recordset gå till 3
17. Om inga fler timmar skriv ut volym och energi
18. Inga fler dagar så skriv ut volym och energi och avsluta

Mina frågor:
har jag ngn logisk sekvens i mina ändringar?****

Medlem sedan mars 2002823 inlägg
#43

Mitt försök

<%@ 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>
    <TD><B>Datum</B></TD>
	<T><B>Tidpunkten</B></TD>
    <TD><B>Vätska</B></TD>
    <TD><B>Volym</B></TD>
    <TD><B>Energi</B></TD>
   </TR>
<%
dat = "" 
tp = ""
v = 0
e = 0
Do While Not rs1.EOF
	If dat <> CDate(rs1("Dag")) then
           if not dat = "" then
	        Response.Write "<TR><TD>&nbsp; </TD>"
		Response.Write "<TD>&nbsp;</TD>"
		Response.Write "<TD><B><U>Volym givet idag:</U></B></TD>"
		Response.Write "<TD>" & v & "</TD></TR>"
		Response.Write "<TR><TD>&nbsp;</TD>"
		Response.Write "<TD>&nbsp;</TD>"
		Response.Write "<TD><B><U>Givet energi</U></B></TD>"
		Response.Write "<TD>" & e & "</TD></TR>"
		end if
	If tp  <> CDate(rs1("tidpunkt")) then
	   if not tp = "" then
	      Response.Write "<TR><TD>&nbsp; </TD>"
		  Response.Write "<TD>&nbsp;</TD>"
		  Response.Write "<TD><B><U>Volym givet </U></B></TD>"
		  Response.Write "<TD>" & v & "</TD></TR>"
		  Response.Write "<TR><TD>&nbsp;</TD>"
		  Response.Write "<TD>&nbsp;</TD>"
		  Response.Write "<TD><B><U>Givet energi</U></B></TD>"
		  Response.Write "<TD>" & e & "</TD></TR>"
		 End If
	   v = cint(rs1("Volym"))
	   e = cint(rs1("Energi"))
	   dat = CDate(rs1("Dag")) 
	   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>"
	  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>"
		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>&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
if not tp = "" then
	      Response.Write "<TR><TD>&nbsp; </TD>"
		  Response.Write "<TD>&nbsp;</TD>"
		  Response.Write "<TD><B><U>Volym givet </U></B></TD>"
		  Response.Write "<TD>" & v & "</TD></TR>"
		  Response.Write "<TR><TD>&nbsp;</TD>"
		  Response.Write "<TD>&nbsp;</TD>"
		  Response.Write "<TD><B><U>Givet energi</U></B></TD>"
		  Response.Write "<TD>" & e & "</TD></TR>"
		 End If
if not dat = "" then
  Response.Write "<TR><TD>  </TD>"
  Response.Write "<TD> </TD>"
  Response.Write "<TD><B><U>Volym givet idag:</U></B></TD>"
  Response.Write "<TD>" & v & "</TD></TR>"
  Response.Write "<TR><TD> </TD>"
  Response.Write "<TD> </TD>"
  Response.Write "<TD><B><U>Givet energi</U></B></TD>"
  Response.Write "<TD>" & e & "</TD></TR>"
end if

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

</body>
</html>

Slutar i

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'v.Energi p.ftEnamn'.

/vatskebalans/visa_rapporten102.asp, line 16

Medlem sedan apr. 2004778 inlägg
#44

Enligt

query expression 'v.Energi p.ftEnamn'.

så fattas det ett komma mellan dessa variabler i sql-satsen. Ser inte ut så i koden du skickat med men kolla ordentligt.

Medlem sedan mars 2002823 inlägg
#45

Torde vara ngt annat fel...
För

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"

ser väl rätt ut??

Medlem sedan aug. 20012 349 inlägg
#46

plelkes skrev:

Torde vara ngt annat fel...
För

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"

ser väl rätt ut??

Nej, det saknas ett komma

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

tack mrblonde för att du hittade det saknade kommat..

Tyvärr så blev inte resultatet riktigt som jag önskade*snyft*
NI kan själva se om ni kryssar i tex Elvansson

Medlem sedan apr. 2004778 inlägg
#48

Lusläs din HTML-tabell så du har lika många kolumner på varje rad till att börja med.

Medlem sedan mars 2002823 inlägg
#49

Patrik, det skall jag göra hemmifrån se´n

Men tror du att mina ändringar i koden är funkis??
Alltså förutom HTML??

Medlem sedan apr. 2004778 inlägg
#50

Hinner inte riktigt gå igenom din kod just nu.

Jag tror att du borde dela upp funktionaliteten lite när du bygger. Gör en sak i taget och se att det fungerar. SEN sätter du ihop allt och fixar din layout.
Försök inte göra allt på en gång.

Medlem sedan mars 2002823 inlägg
#51

Hoppas du återkommer när du har hunnit kika lite...

PDahlen skrev:

Jag tror att du borde dela upp funktionaliteten lite när du bygger. Gör en sak i taget och se att det fungerar. SEN sätter du ihop allt och fixar din layou

Hur menar du?

Medlem sedan apr. 2004778 inlägg
#52

Om du vill ha ut värdena för varje timma skriv en loop som gör bara det så du ser att du får ut rätt värden.

Sen har du din tidigare loop som tar ut värdena per dag.

Sen har du din andra tidigare loop som tar ut totalvärden.

När alla tre funkar var för sig kan du börja sätta ihop dem.

Medlem sedan mars 2002823 inlägg
#53

Ok - point taken och förstått..
Jag lär behöva mer hjälp. så jag kommer med all säkerhet återkomma

Medlem sedan apr. 2004778 inlägg
#54

När det gäller din HTML-tabell så gör en dummy på hur du vill att den ska se ut i vanlig HTML.
Då ser du var alla variabler skall hamna.

Medlem sedan mars 2002823 inlägg
#55

Mitt försök till pseudokod:
1. Hämta data sorterat efter tidpunkt
2. Skapa variabler för volym, energi och "timmen innan"
3. Loopa recordset
4. Kolla om den aktuella timmen är samma som "timmen innan"
5. Om vi är på samma timme gå till 6 om inte gå till 9
6. Addera aktuella värden till volym och energi
7. Skriv ut aktuell data
8. Gå till 3
9. Skriv ut volym och energi eftersom dessa tillhör "timmen innan"
10. Nollställ volym och energi och sätt "timmen innan " till aktuell tid
11. Addera aktuell volym och energi
12. Skriv ut aktuell data
13. Om fler timmar i recordset gå till 3
14. Inga fler timmar så skriv ut volym och energi och avsluta.

Har suttit och försökt klura fram:
Som recordsettet är upplagd så är det så att:

  1. en patinet har en eller flera dagar
  2. varje dag kan ha en eller flera tidpunkter

Skulle bhöva tipps/förslag på hämtning av data skulle se ut..

Medlem sedan apr. 2004778 inlägg
#56

Tänk efter lite och gör som jag sa, ta en sak i taget. Gör en lista för att få ut totala variabler, en för dagsvariabler och en för timvariabler.
I din pseudokod ovan, var skapar du dagvariablerna?

Koden för att få ut timvariablerna är exakt samma som dagsvariablerna. Så gör dom separat och sätt sedan ihop dem när de funkar.

Medlem sedan mars 2002823 inlägg
#57

PDahlen skrev:

Tänk efter lite och gör som jag sa, ta en sak i taget. Gör en lista för att få ut totala variabler, en för dagsvariabler och en för timvariabler.
I din pseudokod ovan, var skapar du dagvariablerna?

Jag tror att jag har missuppfattat dig... Jag försökte göra som du sa och ta en sak i sänder..
Jag trodde att jag redan hade både dagsvariablerna och totalavariabler??

Totala variabeln var väl det första ajg fick fram? dvs när patientens totalt erhållna volym och energi räknas ut i slutet av tabellen..

Dagsvariablerna - var inte dessa vi höll på med igår?
Därför trodde jag att du menade att nu skulle jag få fram timvariablerna
MIn pseudokod ovan gällde bara timvariablerna..

Medlem sedan apr. 2004778 inlägg
#58

Ok, jag som missförstod.
Det enda som skiljer dagstotalen och timtotalen är att du skriver ut totalerna oftare. Kodflödet är exakt likadant. Så kopiera dagstotalkoden rakt av och ändra sedan if-frågorna så att de passar för tid.
Så är det bara att köra.

Medlem sedan mars 2002823 inlägg
#59

=PDahlen]Kodflödet är exakt likadant. Så kopiera dagstotalkoden rakt av och ändra sedan if-frågorna så att de passar för tid.

Det var min tänkta strategi

Medlem sedan mars 2002823 inlägg
#60

Nu har jag gjrit som jag fått rådet (hoppas jag)

  1. först skrev HTML-koden för en tabell - och det funkar bra
  2. Så kopiera dagstotalkoden rakt av och ändra sedan if-frågorna så att de passar för tid.

Ändå blev de tinte riktigt som jag tänkt:

<%
tp = "" 
v = 0
e = 0
Do While Not rs1.EOF
	If tp <> CDate(rs1("tidpunkt")) then
		if not tp = "" then
			Response.Write "<TR>"
			Response.Write "<TD COLSPAN = 3 Align = right >"
			Response.Write “<B><U>Givet volym</U></B></TD>”
			Response.Write "<TD>" & v & "</TD></TR>"
			Response.Write "<TR>"
			Response.Write "<TD COLSPAN = 3 Align = right>"
			Response.Write "<B><U>Energi</U></B></TD></TD>"
			Response.Write "<TD>" & e & "</TD></TR>"
		end if
		v = cint(rs1("Volym"))
		e = cint(rs1("Energi"))
		tp = CDate(rs1("Dag")) 
		Response.Write "<TR><TD>" & CDate(rs1("tidpunkt"))& "</TD>"
		Response.Write "<TD>" & rs1("FluidNamn") & "</TD>"
		Response.Write "<TD>" & rs1("Volym") & "</TD>"
	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>"
	End If
rs1.MoveNext
Loop
if not tp = "" then
			Response.Write "<TR>"
			Response.Write "<TD COLSPAN = 3 Align = right >"
			Response.Write “<B><U>Givet volym</U></B></TD>”
			Response.Write "<TD>" & v & "</TD></TR>"
			Response.Write "<TR>"
			Response.Write "<TD COLSPAN = 3 Align = right>"
			Response.Write "<B><U>Energi</U></B></TD></TD>"
			Response.Write "<TD>" & e & "</TD></TR>"
		end if

vbalans.Close
Set vbalans = Nothing
%>
  1. i själva volym kolumnen skrivs inga siffror ut
  2. "koden" hittar inte att vi befinner oss i samma timme...
280 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)