SebbeMedlem sedan jan. 20032 285 inlägg Jag tycker mig känna igen den där koden. ;)
Testa att skriva SQL-satsen så här istället:
strSQL = "SELECT f.FluidNamn, ft.TypeNamn, ft.TypeID, f.FluidID FROM tblFluidRelat AS fr, tblFluids AS f, tblFluidTypes AS ft WHERE" & _
"fr.FluidID = f.FluidID AND fr.typeID = ft.typeID AND ft.TypeID = " & intType & " ORDER by ft.typeID"
Nej, det är inte samma sak. Du använder objekt.egenskap till t.ex. objConn*.Execute*, objConn*.Open "...", men med recordset använder du som sagt objRS("kolumn")*.
Är inte så bra på att förklara.
/red Ah, @nders har huvudet på skaft. ;)
@ndersMedlem sedan juni 200032 969 inlägg Ang. felmeddelandet: släng in ett mellanslag efter WHERE.
Sen kan jag inte säga tillräckligt många gånger: har man problem med en SQL-fråga, skriv ut den med response.write istället för att exekvera. Mycket lättare att felsöka då.
plelkesMedlem sedan mars 2002823 inlägg Oki, fat konstiga är att det fungerade förrut - men klart ett mellanslag kommer ju bort rätt lätt..
Dock fungerar inte Sebbes kod - för det sker ingen "INSERT" i i tblVetskebalans.Na -> tblVetskebalans.Energi
SebbeMedlem sedan jan. 20032 285 inlägg Va? Funkar det inte med den här koden?
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)
sngVolym = CSng(Request.Form("volym" & lngFluidID))
For Each Value In Request.Form
If Left(Value, 9) = "leggatill" Then
intID = Mid(Value, 10)
Exit For
End If
Next
strSQL = "SELECT * FROM tblFluids WHERE FluidID = " & intID
Set tblFluids = vatskeb.Execute(strSQL)
najoner = sngVolym * tblFluids("Naperml")
kaliumjoner = sngVolym * tblFluids("Kperml")
kloridjoner = sngVolym * tblFluids("Clperml")
fosfatjoner = sngVolym * tblFluids("Pperml")
magnesiumjoner = sngVolym * tblFluids("Mgperml")
energi = sngVolym * tblFluids("Eperml")
Set tblFluids = Nothing
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, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#" & d & "#,'" & lngFluidID & "'," & Request.Form("volym" & lngFluidID) & ", '" & pnr & "', " & najoner & ", " & kaliumjoner & ", " & kloridjoner & ", " & fosfatjoner & ", " & magnesiumjoner &", " & energi &")"
Response.Write strSQL
vatskeb.Execute strSQL, , 128
End if
Next
vatskeb.close
Set vatskeb = Nothing
Response.Redirect "101.asp"
plelkesMedlem sedan mars 2002823 inlägg
Sebbe skrev:
Va? Funkar det inte med den här koden
Dess värre inte...
Sker ingen tillskrivning i fälten
tblVetskebalans.Na
tblVetskebalans.K
tblVetskebalans.Clorid
tblVetskebalans.Fosfat
tblVetskebalans.Magnesium
tblVetskebalans.Energi
SebbeMedlem sedan jan. 20032 285 inlägg Hur ser det ut om du skriver ut SQL-satsen då?
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, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#" & d & "#,'" & lngFluidID & "'," & Request.Form("volym" & lngFluidID) & ", '" & pnr & "', " & najoner & ", " & kaliumjoner & ", " & kloridjoner & ", " & fosfatjoner & ", " & magnesiumjoner &", " & energi &")"
Response.Write strSQL : Response.End
vatskeb.Execute strSQL, , 128
End if
Next
plelkesMedlem sedan mars 2002823 inlägg Kan felet vara att det borde stå:
najoner = sngVolym * tblFluids.Naperml
SebbeMedlem sedan jan. 20032 285 inlägg Hm... Så här då?
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
For Each Value In Request.Form
If Left(Value, 9) = "leggatill" Then
intID = Mid(Value, 10)
ElseIf Left(Value, 5) = "volym" Then
lngVolym = CLng(Mid(Value, 6))
End If
Next
pnr= Request.Form("personnr")
d = FormatDateTime(Date, 2)
sngVolym = CSng(Request.Form("volym" & lngVolym))
strSQL = "SELECT * FROM tblFluids WHERE FluidID = " & intID
Set tblFluids = vatskeb.Execute(strSQL)
najoner = sngVolym * tblFluids("Naperml")
kaliumjoner = sngVolym * tblFluids("Kperml")
kloridjoner = sngVolym * tblFluids("Clperml")
fosfatjoner = sngVolym * tblFluids("Pperml")
magnesiumjoner = sngVolym * tblFluids("Mgperml")
energi = sngVolym * tblFluids("Eperml")
Set tblFluids = Nothing
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, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#" & d & "#,'" & lngFluidID & "'," & Request.Form("volym" & lngFluidID) & ", '" & pnr & "', " & najoner & ", " & kaliumjoner & ", " & kloridjoner & ", " & fosfatjoner & ", " & magnesiumjoner &", " & energi &")"
Response.Write strSQL
vatskeb.Execute strSQL, , 128
End if
Next
vatskeb.close
Set vatskeb = Nothing
Response.Redirect "101.asp"
plelkesMedlem sedan mars 2002823 inlägg Fortfarande inget*snyft*
Utskrift av strSQL:
INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#2003-12-20#,'14',123456, '5803199453', 0, 0, 0, 0, 0, 0)
SebbeMedlem sedan jan. 20032 285 inlägg Nu har jag kollat lite på formuläret, och det här tror jag nog funkar:
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 Value In Request.Form
If Left(Value, 9) = "leggatill" Then
intID = Mid(Value, 10)
ElseIf Left(Value, 5) = "volym" Then
sngVolym = CSng(Request.Form(Value))
End If
strSQL = "SELECT * FROM tblFluids WHERE FluidID = " & intID
Set tblFluids = vatskeb.Execute(strSQL)
najoner = sngVolym * tblFluids("Naperml")
kaliumjoner = sngVolym * tblFluids("Kperml")
kloridjoner = sngVolym * tblFluids("Clperml")
fosfatjoner = sngVolym * tblFluids("Pperml")
magnesiumjoner = sngVolym * tblFluids("Mgperml")
energi = sngVolym * tblFluids("Eperml")
Set tblFluids = Nothing
If left(formObj,9) = "leggatill" Then
lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#" & d & "#,'" & intID & "'," & sngVolym & ", '" & pnr & "', " & najoner & ", " & kaliumjoner & ", " & kloridjoner & ", " & fosfatjoner & ", " & magnesiumjoner &", " & energi &")"
vatskeb.Execute strSQL, , 128
End if
Next
vatskeb.close
Set vatskeb = Nothing
Response.Redirect "101.asp"
Om det inte funkar har jag tänkt ut ett annat möjligt sätt att lösa det på. :)
plelkesMedlem sedan mars 2002823 inlägg Tyvärr så fungerar inte nu heller
Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression 'FluidID ='.
/vatskebalans/201.asp, line 22
201.asp, line 22
Set tblFluids = vatskeb.Execute(strSQL)
plelkesMedlem sedan mars 2002823 inlägg Kan inte felet ligga i sättet att plocka ut FluidID?
Jag menar det sättet som @nders hjälpte mig med:
@nders skrev:
If left(formObj,9) = "leggatill" Then
lngFluidID = Replace(Request.Form**(formObj**), "leggatill", "")
och ditt sätt:
Sebbe skrev:
For Each Value In Request.Form
If Left(Value, 9) = "leggatill
plelkesMedlem sedan mars 2002823 inlägg Har inte hunnit testa än, men vad sägs om:
<%
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)
strSQL = "SELECT * FROM tblFluids WHERE FluidID = " & lngFluidID
Set tblFluids = vatskeb.Execute(strSQL)
najoner = CSng(Request.Form("volym" & lngFluidID)) * tblFluids.Naperml
kaliumjoner = CSng(Request.Form("volym" & lngFluidID)) * tblFluids.Kperml
kloridjoner = CSng(Request.Form("volym" & lngFluidID)) * tblFluids.Clperml
fosfatjoner = CSng(Request.Form("volym" & lngFluidID)) * tblFluids.Pperml
magnesiumjoner = CSng(Request.Form("volym" & lngFluidID)) * tblFluids.Mgperml
energi = CSng(Request.Form("volym" & lngFluidID)) * tblFluids.Eperml
Set tblFluids = Nothing
If left(formObj,9) = "leggatill" Then
lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#" & d & "#,'" & intID & "'," & sngVolym & ", '" & pnr & "', " & najoner & ", " & kaliumjoner & ", " & kloridjoner & ", " & fosfatjoner & ", " & magnesiumjoner &", " & energi &")"
Response.Write strSQL : Response.End
vatskeb.Execute strSQL, , 128
End if
Next
vatskeb.close
Set vatskeb = Nothing
Response.Redirect "101.asp"
SebbeMedlem sedan jan. 20032 285 inlägg Nu blir jag snart sur på mig själv! ;) Testa det här:
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 Value In Request.Form
If Left(Value, 9) = "leggatill" Then
intID = Mid(Value, 10)
ElseIf Left(Value, 5) = "volym" Then
sngVolym = CSng(Request.Form(Value))
End If
If CStr(intID & "") <> "" AND CStr(sngVolym & "") <> "" Then
strSQL = "SELECT * FROM tblFluids WHERE FluidID = " & intID
Set tblFluids = vatskeb.Execute(strSQL)
najoner = sngVolym * tblFluids("Naperml")
kaliumjoner = sngVolym * tblFluids("Kperml")
kloridjoner = sngVolym * tblFluids("Clperml")
fosfatjoner = sngVolym * tblFluids("Pperml")
magnesiumjoner = sngVolym * tblFluids("Mgperml")
energi = sngVolym * tblFluids("Eperml")
Set tblFluids = Nothing
If left(formObj,9) = "leggatill" Then
lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#" & d & "#,'" & intID & "'," & sngVolym & ", '" & pnr & "', " & najoner & ", " & kaliumjoner & ", " & kloridjoner & ", " & fosfatjoner & ", " & magnesiumjoner &", " & energi &")"
vatskeb.Execute strSQL, , 128
End if
intID = ""
sngVolym = ""
End If
Next
vatskeb.close
Set vatskeb = Nothing
Response.Redirect "101.asp"
plelkesMedlem sedan mars 2002823 inlägg Tappa inte humöret nu Sebbe, men:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'CSng'
SebbeMedlem sedan jan. 20032 285 inlägg Du måste skriva in ett numeriskt värde i textrutan. Men vi kan lägga in en säkerhetscheck:
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 Value In Request.Form
If Left(Value, 9) = "leggatill" Then
intID = Mid(Value, 10)
ElseIf Left(Value, 5) = "volym" Then
If IsNumeric(Trim(Request.Form(Value))) Then
sngVolym = CSng(Trim(Request.Form(Value)))
Else
sngVolym = 1
End If
End If
If CStr(intID & "") <> "" AND CStr(sngVolym & "") <> "" Then
strSQL = "SELECT * FROM tblFluids WHERE FluidID = " & intID
Set tblFluids = vatskeb.Execute(strSQL)
najoner = sngVolym * tblFluids("Naperml")
kaliumjoner = sngVolym * tblFluids("Kperml")
kloridjoner = sngVolym * tblFluids("Clperml")
fosfatjoner = sngVolym * tblFluids("Pperml")
magnesiumjoner = sngVolym * tblFluids("Mgperml")
energi = sngVolym * tblFluids("Eperml")
Set tblFluids = Nothing
If left(formObj,9) = "leggatill" Then
lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#" & d & "#,'" & intID & "'," & sngVolym & ", '" & pnr & "', " & najoner & ", " & kaliumjoner & ", " & kloridjoner & ", " & fosfatjoner & ", " & magnesiumjoner &", " & energi &")"
vatskeb.Execute strSQL, , 128
End if
intID = ""
sngVolym = ""
End If
Next
vatskeb.close
Set vatskeb = Nothing
Response.Redirect "101.asp"
plelkes skrev:
Tappa inte humöret nu Sebbe
Aldrig! ;)
plelkesMedlem sedan mars 2002823 inlägg
Sebbe skrev:
Du måste skriva in ett numeriskt värde i textrutan
Det är det jag alltid skriver..
MEN hur som helst, de ända fält som uppdateras (dvs där värde skrivs är:
tblVetskebalans.Dag
tblVetskebalans.PatID
tblVetskebalans.FluidID
tblVetskebalans.Volym
SebbeMedlem sedan jan. 20032 285 inlägg Vi lägger in en liten koll på volymen då. :)
For Each Value In Request.Form
If Left(Value, 9) = "leggatill" Then
intID = Mid(Value, 10)
ElseIf Left(Value, 5) = "volym" Then
If IsNumeric(Trim(Request.Form(Value))) Then
sngVolym = CSng(Trim(Request.Form(Value)))
Else
sngVolym = 1
End If
End If
If CStr(intID & "") <> "" AND CStr(sngVolym & "") <> "" Then
If sngVolym =< 0 Then
Response.Write(sngVolym) : Response.End
Else
Response.Write("Nu är jag väldigt förvirrad!") : Response.End
End If
strSQL = "SELECT * FROM tblFluids WHERE FluidID = " & intID
Set tblFluids = vatskeb.Execute(strSQL)
najoner = sngVolym * tblFluids("Naperml")
kaliumjoner = sngVolym * tblFluids("Kperml")
kloridjoner = sngVolym * tblFluids("Clperml")
fosfatjoner = sngVolym * tblFluids("Pperml")
magnesiumjoner = sngVolym * tblFluids("Mgperml")
energi = sngVolym * tblFluids("Eperml")
Set tblFluids = Nothing
If left(formObj,9) = "leggatill" Then
lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
strSQL = "INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#" & d & "#,'" & intID & "'," & sngVolym & ", '" & pnr & "', " & najoner & ", " & kaliumjoner & ", " & kloridjoner & ", " & fosfatjoner & ", " & magnesiumjoner &", " & energi &")"
vatskeb.Execute strSQL, , 128
End if
intID = ""
sngVolym = ""
End If
Next
Hoppas inte att jag är förvirrad nu! ;)