webForumDet fria alternativet

Går inte att lägga till i mdb

ASP

9 svar · 844 visningar · startad av Biasse

Medlem sedan aug. 2003480 inlägg
Frågan#1

Nånting stämmer inte när jag ska lägga till info i mdb.

Får fel på:

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

Vad kan det vara för fel på det?

<%
Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "Select * From order" 
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

  RecSet.AddNew
  
  RecSet("Artnr") = Request.Form("MyArray(2,i)")
  RecSet("Produkt") = Request.Form("MyArray(3,i)")
  RecSet("Antal") = Request.Form("MyArray(1,i)")
  RecSet("Namn") = Request.Form("info(0)")
  RecSet("Adress") = Request.Form("info(1)")
  RecSet("Postnr1") = Request.Form("info(2)")
  RecSet("Postnr2") = Request.Form("info(3)")
  RecSet("Ort") = Request.Form("info(4)")
  RecSet("Tele1") = Request.Form("info(5)")
  RecSet("Tele2") = Request.Form("info(6)")
  RecSet("Mail") = Request.Form("info(7)")
  RecSet("Ovrigt") = Request.Form("info(8)")
  RecSet("Datum") = Request.Form("Now()")
  
  RecSet.Update
	
  RecSet.Close
  Connect.Close
  Set RecSet = nothing
  Set Connect = nothing
%>
Medlem sedan dec. 200012 464 inlägg
#2

Och vad får du för fel då?

Medlem sedan aug. 2003480 inlägg
#3

Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i FROM-instruktion.

Och jag har "adovbs.inc" includerad oxo

Medlem sedan juni 20019 519 inlägg
#4

Jag har svårt att se att dina forms heter "MyArray(2,i)", MyArray(3,i) osv.
Är du säker att det inte är:

<%
Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "Select * From order" 
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic

  RecSet.AddNew
  
  RecSet("Artnr") = MyArray(2,i)
  RecSet("Produkt") = MyArray(3,i)
  RecSet("Antal") = MyArray(1,i)
  RecSet("Namn") = info(0)
  RecSet("Adress") = info(1)
  RecSet("Postnr1") = info(2)
  RecSet("Postnr2") = info(3)
  RecSet("Ort") = info(4)
  RecSet("Tele1") = info(5)
  RecSet("Tele2") = info(6)
  RecSet("Mail") = info(7)
  RecSet("Ovrigt") = info(8)
  RecSet("Datum") = Now()
  
  RecSet.Update
	
  RecSet.Close
  Connect.Close
  Set RecSet = nothing
  Set Connect = nothing
%>

Och order är ett reserverat ord:

Select * From [order]
Medlem sedan aug. 2003480 inlägg
#5

Du har rätt som vanligt.... order var ju felet :)

Medlem sedan okt. 2007446 inlägg
#6

och varför envisas folk med att skapa ett recordset för att stoppa IN saker i databasen?
det går alldeles lysande att göra det där på RÄTT sätt, dvs med en SQL insert

strSQL="INSERT INTO [order](dinafält) VALUES(Dinavärden)"
Connect.Execute(strSQL)

Medlem sedan juni 20019 519 inlägg
#7

Finns delar med .addNew och på detta sätt som Biasse använder sig av som har sina fördelar.

Medlem sedan mars 20041 505 inlägg
#8

rhdf skrev:

och varför envisas folk med att skapa ett recordset för att stoppa IN saker i databasen?
det går alldeles lysande att göra det där på RÄTT sätt, dvs med en SQL insert

ADO är egentligen ett ganska avancerat objektorienterat gränssnitt för databaser.
Tanken är att man ska använda metoder som t.ex. AddNew för att koden ska bli oberoende av databastyp.
Jag är inte helt säker, men AddNew fixar även SQL-injections och är således säkrare.
Man slipper alltså pilla med strängar för att bygga egna SQL-frågor, men allt är en smaksak. :)

Medlem sedan okt. 2007446 inlägg
#9

ja, ADO är egentligen ganska komplext, men i 9 fall av 10 så använder folk den här metoden enbart för att de kopierat/kollat på gamla exempel från tex aspsidan /idg:s webskola.
Med andra ord så använder de inte de mer avancerade funktionerna i ADO

ett tydligt bevis på detta är användandet av variabeln "addera" för att lagra sql-strängar ;)

Medlem sedan feb. 200112 078 inlägg
#10

rhdf skrev:

ja, ADO är egentligen ganska komplext, men i 9 fall av 10 så använder folk den här metoden enbart för att de kopierat/kollat på gamla exempel från tex aspsidan /idg:s webskola.
Med andra ord så använder de inte de mer avancerade funktionerna i ADO

ett tydligt bevis på detta är användandet av variabeln "addera" för att lagra sql-strängar ;)

Ja, "addera" känner vi igen sedan IDG-tiden.

Däremot måste jag nog hålla med de andra om det här med input i databasen via .Addnew; det är ett bra sätt i många fall, vid t.ex. datatypshantering, dynamiska antal inputs (iterering till input) eller för överskådlighet. Prestanda däremot blir ju lite lidande.

Men rent generellt håller jag också med att man skall använda direkta SQL-frågor om man kan vid input.

289 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
143 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
143 ms — ändringar (db)