4 messaggi dal 15 giugno 2013
Salve, ho un problema con la duplicazione dei record in una nuova tabella access, ecco il codice della pagina:

set conn=server.createobject("adodb.connection")
conn.open="provider=microsoft.jet.oledb.4.0;data source=" & server.MapPath("db\database.mdb")
set rs=server.CreateObject("adodb.recordset")
sql="select * from Studenti where Id=" & request("Id")

rs.open sql, conn, 3, 3
if request("Id")=0 then rs.addnew
rs("Email")=request("FEmail")

rs.update
response.Redirect("default.asp")
%>

dove FEmail e la mail proveniente da un form, in questo caso modifica sempre lo stesso record, a me servirebbe creare un nuovo record nella tabella Richieste (avente la stessa struttura della tabella Studenti) ogni volta che viene inserita una mail nel form, ho provato con la funzione insert into:

sql="insert into Richieste (Cognome,Nome,Data_Nascita,Test) select Cognome,Nome,Data_Nascita,Test from Studenti where Id=" & request("Id")

ma mi da errore dell'istruzione insert. Qualcuno può aiutarmi, grazie
Modificato da Nyo82 il 18 ottobre 2013 17.17 -
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
a occhio la tua query sembra corretta ma ricontrolla attentamente che la tua sintassi segua fedelmente la documentazione:
http://office.microsoft.com/en-001/access-help/insert-into-statement-HP001032245.aspx
Quel tipo di query è supportato da Access, quindi deve funzionare. Verificalo aprendo il database da Access ed eseguendo la query da lì.

Se funziona, controlla due cose:
  • Se il Request("id") contiene effettivamente un valore
  • Se cambia qualcosa usando il provider ACE (scaricabile da qui), anziché Jet. Dunque cambia la tua connection string con questa.



Una cosa importante: fai attenzione perché sei esposto alla Sql injection. Usare l'input dell'utente nelle query SQL è pericoloso, alcuni utenti si divertono tantissimo a manomettere i siti grazie a questa vulnerabilità che ora è presente nel tuo codice. Qui trovi un articolo di Daniele che spiega il problema e come risolverlo.
http://www.aspitalia.com/script/595/Proteggersi-Attacchi-SQL-Code-Injection-ASP.aspx

ciao,
Moreno

Enjoy learning and just keep making
4 messaggi dal 15 giugno 2013
grazie mille, si era proprio il request (Id) il problema, ho risolto con un select max(Id), così seleziona l'ultimo id creato e aggiunge il campo Email :)
Grazie ancora

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.