P plelkes Medlem sedan mars 2002 823 inlägg Frågan 10 dec. 2003 11:53 #1 Hej igen,
Jag håller på att bli galen*grr*
I timmar har jag letat, men hittar inte felet i nedanstående
<%
Set vatskeb = Server.CreateObject( "Adodb.Connection" )
vatskeb.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\Vatskebalans\vbalans.mdb")
vatskeb.ConnectionString = "Data Source='" & MdbFilePath & "'"
vatskeb.open
pnr= Request.Form("personnr")
ind = 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 "
strSQL = strSQL & "(Dag, PatID, FluidID, Volym) "
strSQL = strSQL & "VALUES(#" & ind & "#, " & pnr & ", " & lngFluidID & ", " & Request.Form("volym" & lngFluidID) & ") "
Response.Write strSQL
vatskeb.Execute strSQL, , 128
End if
Next
vatskeb.close
Set vatskeb = Nothing
Response.Redirect "lista_vetskor.asp"
%>
När sidan kör i PWS så får jag felutskriften:
INSERT INTO tblVetskebalans (Dag, PatID, FluidID, Volym) VALUES(#2003-12-10#, 1234567890, 5, 2222)
Körningsfel i Microsoft VBScript fel '800a01a8'
Objekt krävs.: ''
/vatskebalans/skrivtill_tblVetskebalans.asp, rad 26
Och rad 26 är ändå T O M
Skickar med utskriften av strSQL me, eftersom det ser ut att vara riktigt
O OveRRidE Medlem sedan feb. 2001 12 078 inlägg Nej, ett felmeddelade kommer inte från en tom rad.
Det kommer mycket riktigt från rad 26, frågan är ifall den rad 26 i den koden du visar ovan, verkligen är rad 26 i den fil som felmeddelandet kommer ifrån. Det ser inte ut så.
Kan du posta all kod eller åtminstone hitta vilken rad i rätt fil som meddelandet kommer ifrån?
P plelkes Medlem sedan mars 2002 823 inlägg lista_vetskor.asp
<%
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\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"
Set objRS = objConn.Execute(strSQL)
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="lista_tblVetskebalans.asp">Lista tblVätskebalans innehåll</a>l
skrivtill_tblVetskebalans.asp
<%@LANGUAGE="VBSCRIPT" "%>
<%
Set vatskeb = Server.CreateObject( "Adodb.Connection" )
vatskeb.Provider = "Microsoft.Jet.OLEDB.4.0"
MdbFilePath = Server.MapPath("\Vatskebalans\vbalans.mdb")
vatskeb.ConnectionString = "Data Source='" & MdbFilePath & "'"
vatskeb.open
pnr= Request.Form("personnr")
ind = 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 "
strSQL = strSQL & "(Dag, PatID, FluidID, Volym) "
strSQL = strSQL & "VALUES(#" & ind & "#, " & pnr & ", " & lngFluidID & ", " & Request.Form("volym" & lngFluidID) & ") "
[B]vatskeb.Execute strSQL, , 128[/B]
End if
Next
vatskeb.close
Set vatskeb = Nothing
objConn.Close
Set objConn = Nothing
Response.Redirect "lista_vetskor.asp"
%>
När jag kör detta i PWS (http://localhost/Vatskebalans/lista_vetskor.asp )
Får jag fel:
Microsoft JET Database Engine fel '80040e07'
Typblandningsfel i villkorsuttryck.
/Vatskebalans/skrivtill_tblVetskebalans.asp, rad 20
rad 20 är fetmarkerad
@nders Medlem sedan juni 2000 32 967 inlägg Vad har fälten för datatyper?
P plelkes Medlem sedan mars 2002 823 inlägg Dag = datum
PatID = tal
FluidID = tal
Volym = tal
@nders Medlem sedan juni 2000 32 967 inlägg Hmm, det var som jag trodde. Din SQL-fråga ser faktiskt ut att stämma.
Prova att skriva ut den med Response.write istället för att exekvera, så blir det lättare att kika på.
mvh
P plelkes Medlem sedan mars 2002 823 inlägg Jo jag tycker också att strSQL stämmer..
Så här ser hela "utskriften ut"
INSERT INTO tblVetskebalans (Dag, PatID, FluidID, Volym) VALUES(#2003-12-10#, 5803199453, 22, 666)
Microsoft JET Database Engine fel '80040e07'
Typblandningsfel i villkorsuttryck.
/Vatskebalans/skrivtill_tblVetskebalans.asp, rad 21
och rad 21 är
vatskeb.Execute strSQL, , 128
@nders Medlem sedan juni 2000 32 967 inlägg När jag tänker efter, så funderar jag på om inte personnummer är ett för stort tal för att kunna lagras i ett heltalsfält. Frågan är om man kanske inte ska prova att lagra det som text.
*tänker*
Mvh
O OveRRidE Medlem sedan feb. 2001 12 078 inlägg
@nders skrev:
När jag tänker efter, så funderar jag på om inte personnummer är ett för stort tal för att kunna lagras i ett heltalsfält. Frågan är om man kanske inte ska prova att lagra det som text.
Korrekt. Nio tecken är max för Long Integer (vilket jag antar är fallet).
P plelkes Medlem sedan mars 2002 823 inlägg det har ju fungerat förrut*snyft*
Hur skulle koden se ut om jag har text istället?
@nders Medlem sedan juni 2000 32 967 inlägg Apostrofer runt fältvärdet för personnummer bara, det är den enda skillnaden.
P plelkes Medlem sedan mars 2002 823 inlägg
@nders skrev:
Apostrofer runt fältvärdet för personnummer bara, det är den enda skillnaden.
Jag måste väl göra om datatypen oxå tal ->text, eller?
P plelkes Medlem sedan mars 2002 823 inlägg Nu har jag ändrat alla personnumer-fälten till txt.
Och äntligen verkar det funka ;)
Men...
Det verkar funka även i det fall där jag inte har ändrat strSQL som här
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID) VALUES(#" & d & "#," & lngFluidID & "," & Request.Form("volym" & lngFluidID) & ", [B]" & pnr & "[/B])"
Och funkar även där jag ändrat
strSQL = "INSERT INTO tblPersonuppgifter"
strSQL = strSQL & "(Indag, patID, ftFnamn, ftEnamn) "
strSQL = strSQL & "VALUES(#" & ind & "#, [B]'"& personnr & "'[/B], '" & Tilltnamn & "', '" & Eftn & "')"
Varför är detta så?
I morgon skall jag från Brinkster ladda ner fil + databas till en dator med win98SE och PWS installerad...
Kan jag rälna med ngt strul efter att jag ändra sökvägen till min databas?
spelar det ngt roll att databasen på brinkster är gjord i svenskspråkig access 2000, medan jag "laddar" till en engelskspråkig?