Hej, när jag lägger till en post i min databas via ett formulär dyker ibland följande felmeddelande upp:
Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
Någon som vet vad det beror på?
6 svar · 181 visningar · startad av kristoffer
Hej, när jag lägger till en post i min databas via ett formulär dyker ibland följande felmeddelande upp:
Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.
Någon som vet vad det beror på?
Visa kod.
<html>
<!-- #include virtual="/common/adovbs.inc" -->
<%Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\Database\thebase.mdb"))
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM tabell1"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
RecSet.AddNew
RecSet("Sitenamn") = Request.Form("Sitenamn")
RecSet("URL") = Request.Form("URL")
RecSet("Beskrivning") = Request.Form("Beskrivning")
RecSet("AntalBesok") = 0
RecSet.Update
RecSet.Close
Connect.Close %>
Följande uppgifter har nu lagts till i databasen:<p>
Sitenamn: <b><% =Request.Form("Sitenamn") %></b><p>
URL: <b><% =Request.Form("URL") %></b><p>
Beskrivning: <b><% =Request.Form("Beskrivning") %></b><p>
</html>
Nu har jag hittat vad felmeddelandet beror på men ingen lösning på problemet.
Om operationen
RecSet("URL") = Request.Form("URL")
lägger till en URL som är > 50 bokstäver fungerar det inte. URL är av datatyp text i access-databasen. Anledningen till att jag inte använde hyperlänk-datatyp var att det dök upp två #-tecken, ett framför och ett bakom. Alltså: hur ändrar jag så att URL:ar som är större än 50 bokstäver tillåts?
Ändra datatypen så att den tillåter mer. Bara att ställa om i Access (max 255, annars får du välja datatypen till PM)
Men, snälla alla, sluta upp med addnew när det inte verkligen behövs. En vanlig INSERT-sats är mycket snabbare och lättare.
[Redigerat av emission den 20 jun 2000]
Hur skulle det se ut då? Med en INSERT-sats alltså.
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\Database\thebase.mdb"))
sql="INSERT INTO tabell1 (Sitenamn, URL, Beskrivning, AntalBesok) VALUES ('"&request.form("sitenamn")&"', '"&Request.Form("URL")&"','"&Request.Form("Beskrivning")&"', 0)"
connect.execute(sql)
connect.close
%>
Så där nånting!
------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
www.streetwise.se/fredrik/
[Redigerat av fredrik den 20 jun 2000]
[Redigerat av fredrik den 20 jun 2000]