Det enda jag ser på en gång är att felet skulle kunna uppstå om intType är något annat än numeriskt, d.v.s. att felet uppstår i din QueryString.
Skriv ut SQL-frågan och kontrollera...
7 svar · 321 visningar · startad av plelkes
Igår fungerade sidan som listar vätskor
<%@LANGUAGE="VBSCRIPT" "%>
<HTML>
<HEAD>
<TITLE>Untitled Document</TITLE>
</HEAD>
<%
If Request.QueryString("type") = "" Then
intType = 1
Else
intType = CInt(Request.QueryString("type"))
End If
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("\vatskebalans\db\vbalans.mdb")
strSQL = "SELECT tblFluids.FluidNamn, tblFluidTypes.TypeNamn, tblFluidTypes.TypeID, tblFluids.FluidID FROM " & _
"tblFluidRelat, tblFluids, tblFluidTypes WHERE tblFluidRelat.FluidID = tblFluids.FluidID AND" & _
" tblFluidRelat.typeID = tblFluidTypes.typeID AND tblFluidTypes.TypeID = " & intType & " ORDER by tblFluidTypes.typeID"
[B]Set objRS = objConn.Execute(strSQL)[/B]
If NOT objRS.EOF Then
%>
<table width="800" border="1">
<tr>
<td> </td>
<td colspan="3"><%
Response.Write objRS("TypeNamn")
objRS.Close
%>
</td>
</tr>
<tr>
<td><%
intLast = objConn.Execute("SELECT Max(TypeID) FROM tblFluidTypes")(0)
For i = 1 To intLast
Set objRS = objConn.Execute("SELECT TypeNamn FROM tblFluidTypes WHERE TypeID = " & i)
If NOT i = intType Then
Response.Write("<a href=""?type=" & i & """>" & objRS("TypeNamn") & "</a><BR> ")
objRS.Close
End If
Next
%>
</td>
<td><% strSQL = "SELECT f.FluidNamn, ft.TypeNamn, ft.TypeID, f.FluidID FROM tblFluidRelat fr, tblFluids f, tblFluidTypes ft WHERE fr.FluidID = f.FluidID AND fr.typeID = ft.typeID AND ft.TypeID = " & intType & " ORDER by ft.typeID"
Set objRS = objConn.Execute(strSQL)
%>
<table width="400" border="1">
<form name="fylla" method="post" action="skrivtill_tblVetskebalans.asp">
Patientens personnummer: <input name="personnr" type="text">
<%
Do While Not objRS.EOF
Response.Write "<TR><TD><INPUT NAME=""leggatill" & objRS("FluidID") & """ TYPE=""checkbox"" VALUE="""& objRS("FluidID") &"""></TD>"
Response.Write "<TD>" & objRS("FluidNamn") & "</TD>"
Response.Write "<TD><INPUT NAME=""volym" & objRS("FluidID") & """ TYPE=""text""></TD></TR>"
objRS.MoveNext
Loop
End If
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
</table>
<input type="submit" value="Lägg till Vätskebalansen">
</form>
<br><br>
<br>
<a href="http://www12.brinkster.com/vatskebalans/tblvetskebalans.asp">Lista tblVätskebalans innehåll</a>
</BODY>
</HTML>
Idag när jag kör sidan får jag
Microsoft JET Database Engine error '80004005'
Type mismatch in expression.
/vatskebalans/lista_fluids.asp, line 18 = bold
Sidan där själva skrivning till databasen sker:
<%@LANGUAGE="VBSCRIPT" "%>
<%
Session.LCID = 1053
Set vatskeb = Server.CreateObject( "Adodb.Connection" )
vatskeb.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\vatskebalans\db\vbalans.mdb")
vatskeb.ConnectionString = "Data Source='" & MdbFilePath & "'"
vatskeb.open
pnr= Request.Form("personnr")
d = FormatDateTime(Date, 2)
For each formObj in Request.Form
If left(formObj,9) = "leggatill" Then
lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID) VALUES(#" & d & "#,'" & lngFluidID & "'," & Request.Form("volym" & lngFluidID) & ", '" & pnr & "')"
Response.Write strSQL
vatskeb.Execute strSQL, , 128
End if
Next
vatskeb.close
Set vatskeb = Nothing
Response.Redirect "lista_fluids.asp"
%>
dag är av typen datum
FluidID av typen text
volym av typen tal
PatiID av typen text
Är medveten om att jag dubbelpostar, men i överskådlighetens namn, tycker jag att det är försvarligt..
Det enda jag ser på en gång är att felet skulle kunna uppstå om intType är något annat än numeriskt, d.v.s. att felet uppstår i din QueryString.
Skriv ut SQL-frågan och kontrollera...
Engine^ skrev:
felet skulle kunna uppstå om intType är något annat än numeriskt, d.v.s. att felet uppstår i din QueryString.
Just konstruktionen för "paging" har jag fått hjälp från wf - och fattar inte mycket av, så:
Engine^ skrev:
Skriv ut SQL-frågan och kontrollera...
SELECT tblFluids.FluidNamn, tblFluidTypes.TypeNamn, tblFluidTypes.TypeID, tblFluids.FluidID FROM tblFluidRelat, tblFluids, tblFluidTypes WHERE tblFluidRelat.FluidID = tblFluids.FluidID AND tblFluidRelat.typeID = tblFluidTypes.typeID AND tblFluidTypes.TypeID = 1 ORDER by tblFluidTypes.typeID
Microsoft JET Database Engine error '80004005'Type mismatch in expression.
/vatskebalans/lista_fluids.asp, line 19
tblFluidRelat.FluidID = tblFluids.FluidID
tblFluidRelat.typeID = tblFluidTypes.typeID
Jämförbara typer?
Kan det vara så att det föreligger ett stavfel någonstans?
Om det inte hjälper med @nders förslag, så ser inte jag några fel ivarjefall. :l
Eftersom jag är förkyld så skickar jag med en variant på frågan
SELECT tF.FluidNamn, tFT.TypeNamn, tFT.TypeID, tF.FluidID
FROM (tblFluidRelat tFR
INNER JOIN tblFluids tF
ON tF.FluidID = tFR.FluidID)
INNER JOIN tblFluidTypes tFT
ON tFT.TypeID = tFR.TypeID
WHERE tFT.TypeID = 1
ORDER BY tFT.TypeID
Du kanske får ett annorlunda felmeddelande om inte annat :)
tblFluidRelat.FluidID = tblFluids.FluidID
båda är av typen text
tblFluidRelat.typeID = tblFluidTypes.typeID
båda tal
@nders skrev:
Det beror på vad du lagrar i fälten. Är det tal bör du använda taltyp, är det strängar så ska du använda text.
Men hur kan jag lösa det i mitt fall: i strSQL har jag bl. a,
tblFluids.FluidID = tblFluids.FluidNamn
tblFluids.FluidID = tal
tblFluids.FluidNamn = sträng
Nu ha rjag iof ändrat båda till sträng, men kunde hag ha skrivit min strSQL på annorlunda sätt?