PatID kanske är ett tal i din databastabell, och i så fall ska du skriva så här:
PatID = Cint(Request.Form("rapport"))
Annars kan du spinna vidare på denna Google-sökning.
9 svar · 290 visningar · startad av plelkes
Som ni ser denna tråd så får jag ej till det hela*snyft*
Så därför har jag tänkt ut en ny approach:
Upplägget är ju som följer:
Ur tblVetskebalans för varje PatID = Request.Form("rapport")
Samt ur tblPersonuppgifter hämta efternamn och förnamn
Samtliga uppgifter finns i tblVetskebalans, tblPersonuppgifter,tblFluids följande kod:
<%@ Language=VBScript LCID=1053%>
<HTML>
<title>Rapport</title>
<BODY>
<%
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 tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag," & _
" tblVetskebalans.PatID AS patid, tblVetskebalans.FluidID, tblVetskebalans.Energi," & _
" tblVetskebalans.Volym, tblPersonuppgifter.PatID AS ID, tblPersonuppgifter.ftFnamn," &_
" tblPersonuppgifter.ftEnamn FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE" &_
" tblPersonuppgifter.PatID = "&Request.Form("rapport")&" AND tblVetskebalans.PatID = tblVetskebalans.Dag ORDER by Dag ASC"
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("ID")) & "<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>
<%
Do While Not rs1.EOF
Response.Write "<TR><TD>" & 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
vbalans.Close
Set vbalans = Nothing
%>
</TABLE>
</body>
</html>
Ger felutskriften:
SELECT tblFluids.FluidNamn, tblFluids.FluidID, tblVetskebalans.Dag, tblVetskebalans.PatID AS patid, tblVetskebalans.FluidID, tblVetskebalans.Energi, tblVetskebalans.Volym, tblPersonuppgifter.PatID AS ID, tblPersonuppgifter.ftFnamn, tblPersonuppgifter.ftEnamn FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE tblPersonuppgifter.PatID = '1111111111' AND tblVetskebalans.PatID = tblVetskebalans.Dag ORDER by Dag ASC
error '80020009'
PatID kanske är ett tal i din databastabell, och i så fall ska du skriva så här:
PatID = Cint(Request.Form("rapport"))
Annars kan du spinna vidare på denna Google-sökning.
Om du googlar på felet så får du reda på att det uppstår när du i din SELECT hämtar en kolumn av typ TEXT eller BLOB men inte sätter dom sist i sql-satsen.
Skriv om din SELECT.
tyvärr hjälpte det inte...
<%
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 tblFluids.FluidID, tblVetskebalans.FluidID, tblVetskebalans.Energi," &_
" tblVetskebalans.Volym, tblFluids.FluidNamn, tblVetskebalans.Dag," &_
" tblVetskebalans.PatID AS patid, tblPersonuppgifter.ftFnamn," &_
" tblPersonuppgifter.PatID AS ID, tblPersonuppgifter.ftEnamn FROM" &_
" tblVetskebalans, tblFluids, tblPersonuppgifter WHERE tblVetskebalans.PatID" &_
" = tblVetskebalans.Dag AND tblPersonuppgifter.PatID ="&Request.Form("rapport")&" " &_
" ORDER by Dag ASC"
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("ID")) & "<BR>"
Response.Write "<B>" & rs1("ftEnamn") & ", " & rs1("ftFnamn") & "</B><P><P><P>"
%>
Ger
SELECT tblFluids.FluidID, tblVetskebalans.FluidID, tblVetskebalans.Energi, tblVetskebalans.Volym, tblFluids.FluidNamn, tblVetskebalans.Dag, tblVetskebalans.PatID AS patid, tblPersonuppgifter.ftFnamn, tblPersonuppgifter.PatID AS ID, tblPersonuppgifter.ftEnamn FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE tblVetskebalans.PatID = tblVetskebalans.Dag AND tblPersonuppgifter.PatID ='1111111111' ORDER by Dag ASC
error '80020009'/vatskebalans/visa_rapporten102.asp, line 22
Line 22:
personnummer =Left(txt,6) & " - " & Right(txt,4)
Kolla alla dina kolumntyper. Vad är ftFnamn, ftEnamn, Dag och FluidNamn för typer?
de är alla av typen text...
resterande kolumner som ingår är av typen "number"
Då har du inte skrivit om din SELECT-sats. ALLA textfält skall komma sist och som du har skrivit så har du fortfarande fel ordning.
jag fattar att skall komma sist, fattar bara inte hur jag skall formulera selectsatsen
Försökt ändra strSQL till
strSQL = "SELECT * FROM tblVetskebalans, tblFluids, tblPersonuppgifter" &_
" WHERE tblVetskebalans.PatID = tblVetskebalans.Dag AND" &_
" tblPersonuppgifter.PatID = "& pat &" ORDER by Dag ASC"
Men får utskriften:
SELECT * FROM tblVetskebalans, tblFluids, tblPersonuppgifter WHERE tblVetskebalans.PatID = tblVetskebalans.Dag AND tblPersonuppgifter.PatID = '9303060156' ORDER by Dag ASC
ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.
/vatskebalans/visa_rapporten102.asp, line 22
rad 18: Function SvPnr(txt)
rad 19: personnummer =Left(txt,6) & " - " & Right(txt,4)
rad 20: SvPnr = personnummer
rad 21: End Function
rad 22: Response.Write SvPnr(rs1("PatID")) & "<BR>"
rad 23: Response.Write "<B>" & rs1("ftEnamn") & ", " & rs1("ftFnamn") & "</B><P><P><P>"
Du ska inte använda *. Eftersom du har TEXTkolumner måste du sätta dem i rätt ordning.
Du har ju redan formulerat sql-satsen. Nu ska du bara sortera det du hämtar så att alla text-kolumner står SIST i SELECT raden. Det är inte svårare än så.
SELECT tblFluids.FluidID, tblVetskebalans.FluidID,
tblVetskebalans.Energi, tblVetskebalans.Volym,
tblVetskebalans.Dag, tblVetskebalans.PatID AS patid,
tblPersonuppgifter.PatID AS ID, tblFluids.FluidNamn,
tblPersonuppgifter.ftFnamn, tblPersonuppgifter.ftEnamn
Du ska inte ändra något i FROM eller WHERE, bara i SELECT raden.