webForumDet fria alternativet

Fungerade igår - idag: "Type mismatch in expression"

ASPur ASP

7 svar · 321 visningar · startad av plelkes

Medlem sedan mars 2002823 inlägg
Frågan#1

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>&nbsp;</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:&nbsp;&nbsp;&nbsp;<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&auml;tskebalans inneh&aring;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..

Medlem sedan dec. 20003 887 inlägg
#2

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

Medlem sedan mars 2002823 inlägg
#3

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

  • Hur skall jag ändra?

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

Medlem sedan juni 200032 967 inlägg
#4

tblFluidRelat.FluidID = tblFluids.FluidID
tblFluidRelat.typeID = tblFluidTypes.typeID

Jämförbara typer?

Medlem sedan dec. 20003 887 inlägg
#5

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 :)

Medlem sedan mars 2002823 inlägg
#6

tblFluidRelat.FluidID = tblFluids.FluidID

båda är av typen text

tblFluidRelat.typeID = tblFluidTypes.typeID

båda tal

  1. Nu verkar det funka:OO
  2. Finns det ngra nackdelar i att jag har ändrat så mänga av fälten till "text"?
Medlem sedan juni 200032 967 inlägg
#7
  1. 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.
Medlem sedan mars 2002823 inlägg
#8

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

137 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)