Avatar billede quarkb Nybegynder
21. november 2015 - 02:23 Der er 7 kommentarer og
1 løsning

SQL INPUT med parameters

Hvorfor virker dette ikke?

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\wwwSites\sql.uldbjerg.dk\DB\uldbjerg.mdb"
Set Cmd = Server.CreateObject("ADODB.Command")

sql = "INSERT INTO Adresse (Adresse, PostNr, By) VALUES (?,?,?)"

Cmd.Parameters.Append(Cmd.CreateParameter("@Adresse", 200, 1, 50, Request.Querystring("adr")))
Cmd.Parameters.Append(Cmd.CreateParameter("@PostNr", 3, 1, 50, Request.Querystring("postnr")))
Cmd.Parameters.Append(Cmd.CreateParameter("@By", 200, 1, 50, Request.Querystring("by")))

conn.Execute sql,recaffected

conn.close

JEg får denne fejl:
Microsoft JET Database Engine error '80040e14'

Syntax error in INSERT INTO statement.

/insert.asp, line 23


Line 23 =  conn.Execute sql,recaffected
Avatar billede arne_v Ekspert
21. november 2015 - 02:36 #1
BY er et reserveret ord i SQL.

Proev:

sql = "INSERT INTO Adresse (Adresse, PostNr, [By]) VALUES (?,?,?)"
Avatar billede arne_v Ekspert
21. november 2015 - 02:36 #2
eller bedre omdoeb det felt!!
Avatar billede quarkb Nybegynder
21. november 2015 - 10:42 #3
Jeg har ændret feltet By til City, men uden held, dog kan jeg få dette til at virke:

sAdresse = "Adresse"
sPostNr = "1234"
sCity = "By navn"

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\wwwSites\sql.uldbjerg.dk\DB\uldbjerg.mdb"
Set Cmd = Server.CreateObject("ADODB.Command")

sql = "INSERT INTO Adresse (Adresse, PostNr, City) VALUES ('" & sAdresse & "', '" & sPostNr & "', '" & sCity & "')"

conn.Execute sql

conn.close

Men dette:

sAdresse = "Adresse"
sPostNr = "1234"
sCity = "By navn"

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\wwwSites\sql.uldbjerg.dk\DB\uldbjerg.mdb"
Set Cmd = Server.CreateObject("ADODB.Command")

sql = "INSERT INTO Adresse (Adresse, PostNr, City) VALUES (?,?,?)"

Cmd.Parameters.Append(Cmd.CreateParameter("@Adresse", 200, 1, 50, sAdresse))
Cmd.Parameters.Append(Cmd.CreateParameter("@PostNr", 3, 1, 50, sPostNr))
Cmd.Parameters.Append(Cmd.CreateParameter("@City", 200, 1, 50, sCity))

conn.Execute sql

conn.close

giver fejlen:

No value given for one or more required parameters.
/insert.asp, line 26

Line 26 = conn.Execute sql
Avatar billede arne_v Ekspert
21. november 2015 - 15:01 #4
conn.Execute sql

skal vel vaere:

Cmd.CommandText = sql
Cmd.Execute
Avatar billede quarkb Nybegynder
21. november 2015 - 16:42 #5
Takker, men det ser ikke ud til at virker helt som det skal, får nu denne fejl:
The connection cannot be used to perform this operation. It is either closed or invalid in this context.

line = Cmd.Execute

conn.Execute sql er udskiftet med:
Cmd.CommandText = sql
Cmd.Execute

Så de hele nu ser sådan ud:
<%
sAdresse = "Adresse"
sPostNr = "1234"
sCity = "By navn"

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\inetpub\wwwSites\DB\database.mdb"
Set Cmd = Server.CreateObject("ADODB.Command")

sql = "INSERT INTO Adresse (Adresse, PostNr, City) VALUES (?,?,?)"

Cmd.Parameters.Append(Cmd.CreateParameter("@Adresse", 200, 1, 50, sAdresse))
Cmd.Parameters.Append(Cmd.CreateParameter("@PostNr", 3, 1, 50, sPostNr))
Cmd.Parameters.Append(Cmd.CreateParameter("@City", 200, 1, 50, sCity))

Cmd.CommandText = sql
Cmd.Execute

conn.close
%>
Avatar billede arne_v Ekspert
21. november 2015 - 16:56 #6
cmd.ActiveConnection = conn
Cmd.CommandText = sql
Cmd.Execute
Avatar billede quarkb Nybegynder
21. november 2015 - 17:18 #7
Perfekt takker, lav et svar og point er dine.

o:)
Avatar billede arne_v Ekspert
21. november 2015 - 17:22 #8
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester