Jag är nybörjare så det är kanske ett mycket enkelt problem men jag har inte hittat lösningen någonstans. Rickard. Hej och tack för svar. Problemet är löst:Updatera accesdatabas med ASP
Problem: När jag kör koden nedan så får jag följande meddelande:
Feltyp:
Microsoft JET Database Engine (0x80040E0C)
Det angavs inte någon kommandotext för kommandoobjektet.
Vad är kommandotext och kommandoobjekt och framfr allt: varför funkar det inte?
Är tacksam för er tid.
<%
Dim str_angivare, str_teknisk_allergen100, str_ovrigt_allergen100
Dim cst, MinCon, rs, SQL, strSQL
cst = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
cst = cst & server.mappath("produkter.mdb")
%>
<!--#include file="adovbs.inc"-->
<%
set MinCon = Server.CreateObject("ADODB.Connection")
MinCon.open cst 'dbkoppling
Set rs = Server.CreateObject("ADODB.Recordset") 'recordset skapas
SQL = "SELECT teknisk_allergen100, ovrigt_allergen100 from mintabell"
rs.Open SQL, MinCon
str_angivare = Request("angivare")
str_teknisk_allergen100 = rs("teknisk_allergen100")
str_ovrigt_allergen100 = rs("ovrigt_allergen100")
if str_angivare = "teknisk_allergen100" then
if str_teknisk_allergen100 = "dolj" then
strSQL = "UPDATE mintabell SET teknisk_allergen100 = visa"
elseif str_teknisk_allergen100 = "visa" then
strSQL = "UPDATE mintabell SET teknisk_allergen100 = dolj"
end if
elseif str_angivare = "ovrigt_allergen100" then
if str_ovrigt_allergen100 = "dolj" then
strSQL = "UPDATE mintabell SET ovrigt_allergen100 = visa"
elseif str_ovrigt_allergen100 = "visa" then
strSQL = "UPDATE mintabell SET ovrigt_allergen100 = dolj"
end if
end if
MinCon.Execute strSQL
rs.Close
MinCon.Close
Set MinCon = Nothing
%>Sv: Updatera accesdatabas med ASP
Först av allt..
<code>
<!--#include file="adovbs.inc"-->
</code>
.. använder du inte så du kan skippa den.
Sen för tydlighetens skull så rekomendera jag att du skriver..
<code>
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="produkter.mdb"
Set rs = Server.CreateObject("ADODB.Recordset") 'recordset skapas
SQL = "SELECT teknisk_allergen100, ovrigt_allergen100 from mintabell"
rs.Open SQL, Connection
</code>
.. detta för att lättare kunna se vad du gör.
Sen så förstår jag inte resterande av din kod, om du förklara hur du har tänkt dig, så är det lättare att
hjälpa dig.Sv:Updatera accesdatabas med ASP
Nu ser koden ut enligt nedan, och används för att för att bestämma vilka inkludes (produkter) som ska visas på en produktsida.
Sidan består av flera formular som alla har samma action och alltså anropar samma kod: koden nedan. Vilket formulär som submittats avgörs genom att varje formular har en ”hidden”-tag som heter name=”angivare” och dessa taggars value heter i detta fall ” teknisk_allergen100” och ”ovrigt_allergen100”.
Om t.ex. str_angivare = "teknisk_allergen100" ska inkluden som visar teknisk information för produkten ”allergen100” toggla mellan att renderas eller inte. Är str_angivare = ovrigt _allergen100” i stället så ska övrig infotmation för ” allergen100” toggla mellan att renderas eller inte.
Togglingen sker genom att fälten ”teknisk_allergen100" eller "ovrigt_allergen100” (beroende på ” str_angivare”) hämtas från databasen ”produkter.mdb” och förändras mellan ”visa” och ”dolj”, vilket sedan styr både knappars och inkluders vara eller icke-vara.
De båda fälten i frågahämtas och avläses korrekt från databasen. Det är själva uppdateringen som jag inte lyckas med. Då jag använder nedanstående kod får jag meddelandet:
Feltyp:
ADODB.Recordset (0x800A0CB3)
Aktuellt Recordset kan inte uppdateras. Det kan bero på en begränsning av providern eller den valda låstypen.
Frågan är alltså: Hur ska jag göra för att uppdatera fälten i databasen?
<%
Dim cst, Connection, rs, SQL, strSQL
Dim str_teknisk_allergen100, str_ovrigt_allergen100
Dim str_angivare
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("produkter.mdb")
Set rs = Server.CreateObject("ADODB.Recordset") 'recordset skapas
SQL = "SELECT teknisk_allergen100, ovrigt_allergen100 from mintabell"
rs.Open SQL, Connection
str_angivare = Request("angivare")
str_teknisk_allergen100 = rs("teknisk_allergen100")
str_ovrigt_allergen100 = rs("ovrigt_allergen100")
if str_angivare = "teknisk_allergen100" then
if str_teknisk_allergen100 = "dolj" then
rs.Fields("teknisk_allergen100") = "visa"
elseif str_teknisk_allergen100 = "visa" then
rs.Fields("teknisk_allergen100") = "dolj"
end if
elseif str_angivare = "ovrigt_allergen100" then
if str_ovrigt_allergen100 = "dolj" then
rs.Fields("ovrigt_allergen100") = "visa"
elseif str_ovrigt_allergen100 = "visa" then
rs.Fields("ovrigt_allergen100") = "dolj"
end if
end if
rs.Update
rs.Close
Connection.Close
Set Connection = Nothing
%>Sv: Updatera accesdatabas med ASP
<%
Dim cst, Connection, rs, SQL
Dim allergen100, str_teknisk_allergen100, str_ovrigt_allergen100
Dim str_angivare
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("produkter.mdb")
Set rs = Server.CreateObject("ADODB.Recordset") 'recordset skapas
SQL = "SELECT * from mintabell"
rs.Open SQL, Connection, 3, 3
str_angivare = Request("angivare")
str_teknisk_allergen100 = rs("teknisk_allergen100")
str_ovrigt_allergen100 = rs("ovrigt_allergen100")
if str_angivare = "teknisk_allergen100" then
if str_teknisk_allergen100 = "dolj" then
rs("teknisk_allergen100") = "visa"
elseif str_teknisk_allergen100 = "visa" then
rs("teknisk_allergen100") = "dolj"
end if
elseif str_angivare = "ovrigt_allergen100" then
if str_ovrigt_allergen100 = "dolj" then
rs("ovrigt_allergen100") = "visa"
elseif str_ovrigt_allergen100 = "visa" then
rs("ovrigt_allergen100") = "dolj"
end if
end if
rs.Update
str_teknisk_allergen100 = rs("teknisk_allergen100")
str_ovrigt_allergen100 = rs("ovrigt_allergen100")
rs.Close
Connection.Close
Set Connection = Nothing
%>