PplelkesMedlem sedan mars 2002823 inlägg Vill helst undvika att röra om i sql-satsen :r
Trodde att ngt sånt skulle funka:
<%
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)
Response.Write "<BR><B>" & strSQL & "</B><P>"
'formatera till svensk personnummer
Function SvPnr(txt)
personnummer =Left(txt,6) & " - " & Right(txt,4)
SvPnr = personnummer
End Function
Response.Write SvPnr(rs1("PatID")) & "<BR>"
Response.Write "<B>" & rs1("ftEnamn") & ", " & 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
v = 0
e = 0
Do While Not rs1.EOF
[B]v = v + rs1("Volym")
e = e + rs1("Energi")[/B]
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>"
rs1.MoveNext
Loop
[B]Response.Write "Totala volymen är " & v & "<BR>"
Response.Write "Totala energi är " & e & "<BR>"[/B]
vbalans.Close
Set vbalans = Nothing
%>
Men får fel:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'v'
PDahlenMedlem sedan apr. 2004778 inläggVad är Volym och Energi för kolumntyper? På vilken rad får du felet?
Det bästa ur prestandasynpunkt är att lägga SUM i sql-satsen.
PDahlenMedlem sedan apr. 2004778 inläggOk, är rad 33
v = v + rs1("Volym")
Prova
v = v + cint(rs1("Volym"))
PplelkesMedlem sedan mars 2002823 inlägg hjälper tyvärr inte
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 = '1111111111'
111111 - 1111
Elvansson, Elvan
Datum Vätska Volym Energi
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'v'
/vatskebalans/visa_rapporten102.asp, line 33
Koden:
<%@ 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)
Response.Write "<BR><B>" & strSQL & "</B><P>"
'formatera till svensk personnummer
Function SvPnr(txt)
personnummer =Left(txt,6) & " - " & Right(txt,4)
SvPnr = personnummer
End Function
Response.Write SvPnr(rs1("PatID")) & "<BR>"
Response.Write "<B>" & rs1("ftEnamn") & ", " & 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
v = 0
e = 0
Do While Not rs1.EOF
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>"
rs1.MoveNext
Loop
Response.Write "Totala volymen är " & v & "<BR>"
Response.Write "Totala energi är " & e & "<BR>"
vbalans.Close
Set vbalans = Nothing
%>
</TABLE>
</body>
</html>
PplelkesMedlem sedan mars 2002823 inlägg upps - det smög tydligen in ett litet extra v
nu är det borta - och verkar funka!!
Men i utskriften kommer först volymmängden och energi och sedan tabellen..
Hur switchar jag detta? dvs
- lista tabellen
- skriv ut volym
- skriv ut energi
PDahlenMedlem sedan apr. 2004778 inläggDet är för att du inte stänger tabellen innan du skriver ut volym och energi. Antingen stänger du tabellen innan eller så sätter du en tabellrad och tabellceller runt volym och energi.
PplelkesMedlem sedan mars 2002823 inlägg Patrik:
du rekomenderar alltså:
StrSQL1 = SELECT SUM (energi) FROM tblVetskebalans
Hur skulle du baka ihop detta med mitt övriga kod?
PplelkesMedlem sedan mars 2002823 inlägg Hellt plötsligt för jag följande med för vissa pat:
Microsoft VBScript runtime error '800a0006'
Overflow: 'cint'
/vatskebalans/visa_rapporten102.asp, line 36
Datum Vätska Volym Energi
2004-05-02 Vitrimix 1099 1099
2004-04-29 Proviva 23 23
2004-04-29 Proviva 125 125
2004-04-29 Sondmat 2345 1172,5
Microsoft VBScript runtime error '800a0006'
Overflow: 'cint'
/vatskebalans/visa_rapporten102.asp, line 36
vad berro detta meddelande på?
PplelkesMedlem sedan mars 2002823 inlägg tror att jag hittade själv svaret när jag googlade:
The maximum value allowed for the CInt function is 3276
Så jag torde ah överskridit detta i min tabell