webForumDet fria alternativet

Microsoft VBScript runtime error '800a01a8' : Object required

69 svar · 1 137 visningar · startad av plelkes

plelkesMedlem sedan mars 2002823 inlägg
#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?

SebbeMedlem sedan jan. 20031 603 inlägg
#2

Jag förstår inte riktigt vad du ska göra. Du måste väl öppna ett recordset i alla fall? :q

plelkesMedlem sedan mars 2002823 inlägg
#3

Ursäkta Sebbe men jag förstår inte...

plelkesMedlem sedan mars 2002823 inlägg
#4

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

SebbeMedlem sedan jan. 20031 603 inlägg
#5

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.

plelkesMedlem sedan mars 2002823 inlägg
#6

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?

SebbeMedlem sedan jan. 20031 603 inlägg
#7

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

plelkesMedlem sedan mars 2002823 inlägg
#8

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

SEdan bifogar jag de två tabellerna...

Börjar de tklarna vad jag vill göra?

SebbeMedlem sedan jan. 20031 603 inlägg
#9

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?

plelkesMedlem sedan mars 2002823 inlägg
#10

Enligt FluidID, ja

SebbeMedlem sedan jan. 20031 603 inlägg
#11

Jo, men hur vet man vilket FluidID? Följer det med en querystring med ID:t? (Request.QueryString("id"))

plelkesMedlem sedan mars 2002823 inlägg
#12

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

plelkesMedlem sedan mars 2002823 inlägg
#13

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

SebbeMedlem sedan jan. 20031 603 inlägg
#14

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"
plelkesMedlem sedan mars 2002823 inlägg
#15

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

SebbeMedlem sedan jan. 20031 603 inlägg
#16

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"
plelkesMedlem sedan mars 2002823 inlägg
#17

Sebbe, dock ahr jag lite frågor:

  1. var i din kod sker själva till "INSERT" av Na, K osv?

  2. 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
    
SebbeMedlem sedan jan. 20031 603 inlägg
#18

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

plelkesMedlem sedan mars 2002823 inlägg
#19

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)
plelkesMedlem sedan mars 2002823 inlägg
#20

Är

tblFluids("Kperml")

Samma Sak som

tblFluids.Kperml
138 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
135 ms — hämta tråd, inlägg och bilagor (db)