webForumDet fria alternativet

Lista de poster enligt två villkor

ASP

29 svar · 589 visningar · startad av plelkes · sida 2 av 2

Frågan, av plelkes

Hej På denna sida ser vi innehållet i en databastbl. Om vi markerar en post/person i tabellen vill jag lista tblinnehållet med två villkor uppfyllda: 1. tblPersonuppgifter.PatID = "&Request.Form("rapport") 2. och dag Vet inte om jag uttryckte mig klart:det jag vi

Läs frågan i sin helhet →
Medlem sedan mars 2002823 inlägg
#21

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'

Medlem sedan apr. 2004778 inlägg
#22

Vad ä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.

Medlem sedan mars 2002823 inlägg
#23

PDahlen skrev:

Vad är Volym och Energi för kolumntyper?

dessa är båda tal

PDahlen skrev:

På vilken rad får du felet?

på rad 33

Medlem sedan apr. 2004778 inlägg
#24

Ok, är rad 33

v = v + rs1("Volym")

Prova

v = v + cint(rs1("Volym"))
Medlem sedan mars 2002823 inlägg
#25

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

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

  1. lista tabellen
  2. skriv ut volym
  3. skriv ut energi
Medlem sedan apr. 2004778 inlägg
#27

Det ä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.

Medlem sedan mars 2002823 inlägg
#28

Patrik:
du rekomenderar alltså:

StrSQL1 = SELECT SUM (energi) FROM tblVetskebalans

Hur skulle du baka ihop detta med mitt övriga kod?

Medlem sedan mars 2002823 inlägg
#29

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

Medlem sedan mars 2002823 inlägg
#30

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

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)