P plelkes Medlem sedan mars 2002 823 inlägg Frågan 20 dec. 2003 15:23 #1 Ni kanske kommer ihåg tråden därjag jobbar vidar på min projekt... Så här långt har jag kommit:
På denna sida fylls rutor och kryssas i.
Själva skrivning till databasen sker på 201.asp och har följande kod
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)
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
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 "101.asp"
Men nu får jag fel:
Microsoft VBScript runtime error '800a01a8'
Object required: 'tblFluids'
/vatskebalans/201.asp, line 12
Rad 12
najoner = CSng(Request.Form("volym" & lngFluidID)) * tblFluids.Naperml
Men jag öppnar ju databasen, detta borde väl räcka, elelr?
S Sebbe Medlem sedan jan. 2003 2 285 inlägg Jag förstår inte riktigt vad du ska göra. Du måste väl öppna ett recordset i alla fall? :q
P plelkes Medlem sedan mars 2002 823 inlägg Ursäkta Sebbe men jag förstår inte...
P plelkes Medlem sedan mars 2002 823 inlägg
Sebbe skrev:
Jag förstår inte riktigt vad du ska göra
Det jag vill göra är att jag till respektive fält i tblVetskebalans lägga till resultatet av multiplikationen...
S Sebbe Medlem sedan jan. 2003 2 285 inlägg Jo, jag menar att du måste väl utföra en SQL-fråga mot databasen och samla resultatet i ett recordset? Du kan inte bara öppna databasen och sedan skriva tabell.kolumn och få ut ett värde.
P plelkes Medlem sedan mars 2002 823 inlägg
Sebbe skrev:
Jo, jag menar att du måste väl utföra en SQL-fråga mot databasen och samla resultatet i ett recordset? Du kan inte bara öppna databasen och sedan skriva tabell.kolumn och få ut ett värde.
Nej det kan jag förståss inte*dumma mig* Du har fullkommligt rätt i det.
Kan du janske hjälpa mig och ge ett exempel på hur jag bör göra istället?
S Sebbe Medlem sedan jan. 2003 2 285 inlägg Jo, om jag fattade skulle jag kunna det. ;)
Vilka poster i databasen är det som ska hämtas? Kommer det med någon querystrring med ett ID eller liknande? :)
P plelkes Medlem sedan mars 2002 823 inlägg Nu fattar ajg inte riktigt din fråga, Sebbe men:
Själva formuläret, dvs där vätska välljs ser ut som:
<form name="fylla" method="post" action="201.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>
SEdan bifogar jag de två tabellerna...
Börjar de tklarna vad jag vill göra?
S Sebbe Medlem sedan jan. 2003 2 285 inlägg Det jag undrar är hur man ska veta vilken av posterna (medicinerna) i tabellen man ska ta ut. Om det har något med FluidID i tabellen att göra eller något annat?
S Sebbe Medlem sedan jan. 2003 2 285 inlägg Jo, men hur vet man vilket FluidID? Följer det med en querystring med ID:t? (Request.QueryString("id"))
P plelkes Medlem sedan mars 2002 823 inlägg det tordde jag att man gjorde genom kobination av
Response.Write "<TR><TD><INPUT NAME=""leggatill" & objRS("FluidID") & """ TYPE=""checkbox"" VALUE="""& objRS("FluidID") &"""></TD>"
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 &" )"
Jag menar att allt har funkat tills jag blandade in tblFluids.Naperml
P plelkes Medlem sedan mars 2002 823 inlägg Vad tror du/Ni om följande:
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
[B]strSQL2 = SELECT * FROM tblVetskebalans, tbl Fluids WHERE tblVetskebalans.FluidID = tblFluids.FluidID
vatskebalans.Execute strSQL2[/B]
pnr= Request.Form("personnr")
d = FormatDateTime(Date, 2)
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
For each formObj in Request.Form
If left(formObj,9) = "leggatill" Then
lngFluidID = Replace(Request.Form(formObj), "leggatill", "")
strSQL1 = "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 strSQL1, , 128
End if
Next
vatskeb.close
Set vatskeb = Nothing
Ändringarna fetstilta
S Sebbe Medlem sedan jan. 2003 2 285 inlägg Jaha, då ska vi se. :)
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) 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 "101.asp"
P plelkes Medlem sedan mars 2002 823 inlägg När jag kör ditt förslag SEbbe:
Microsoft VBScript runtime error '800a01b6'
Object doesn't support this property or method: 'tblFluids.Naperml'
/vatskebalans/201.asp, line 25
S Sebbe Medlem sedan jan. 2003 2 285 inlägg Ojdå, glömde att ändra det. :)
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) 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 "101.asp"
P plelkes Medlem sedan mars 2002 823 inlägg Sebbe, dock ahr jag lite frågor:
var i din kod sker själva till "INSERT" av Na, K osv?
Kan du förklara kodsnutten:
For Each Value In Request.Form
If Left(Value, 9) = "leggatill" Then
intID = Mid(Value, 10)
Exit For
End If
Next
S Sebbe Medlem sedan jan. 2003 2 285 inlägg 1: Använde den första INSERT-satsen du skrev här. Ändra den andra For-satsen till:
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
2: Den tar ut ID-nummret till ID-kolumnen i tblFluids.
Hoppas att det funkar nu. :)
P plelkes Medlem sedan mars 2002 823 inlägg själva sidan där tblVetskebalans skall skrivas ut
<%
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"
Set objRS = objConn.Execute(strSQL)
If NOT objRS.EOF Then
%>
<table width="800" border="1">
<%
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)
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
%>
När får jag nu felutskirften:
Rad 28
Set objRS = objConn.Execute(strSQL)