webForumDet fria alternativet

Microsoft VBScript runtime error '800a01a8' : Object required

69 svar · 1 137 visningar · startad av plelkes · sida 2 av 4

SebbeMedlem sedan jan. 20032 285 inlägg
#21

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
#22

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
#23

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
#24

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
#25

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
#26

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
#27

INSERT INTO tblVetskebalans(Dag, FluidID, Volym, PatID, Na, K, Clorid, Fosfat, Magnesium, Energi ) VALUES(#2003-12-20#,'14',12345, '5803199453', 0, 0, 0, 0, 0, 0)

plelkesMedlem sedan mars 2002823 inlägg
#28

Kan felet vara att det borde stå:

najoner = sngVolym * tblFluids.Naperml
plelkesMedlem sedan mars 2002823 inlägg
#29

jag provade men

Microsoft VBScript runtime error '800a01b6'

Object doesn't support this property or method: 'tblFluids.Naperml'

SebbeMedlem sedan jan. 20032 285 inlägg
#30

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
#31

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
#32

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
#33

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
#34

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
#35

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
#36

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
#37

Tappa inte humöret nu Sebbe, men:

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'CSng'

SebbeMedlem sedan jan. 20032 285 inlägg
#38

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
#39

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
#40

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! ;)

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