#550 - Aggiungere una maschera di modifica di un database
In passato ci siamo già occupati di comodi script per emulare, nel limite del possibile, le funzionalità offerte dal datagrid di ASP.NET.
L'esempio di oggi sfrutta parte del codice già visto nello script #456 e consente di creare una maschera, neutra rispetto al database, per la modifica di record.
Unita a quanto abbiamo già visto ci permette di creare un sistema di gestione dei dati che con alcune piccole aggiunte può essere sfruttato facilmente come sistema di back office.
<%
Sub Modifica(tabella, chiave)
' stringa di conn
SQLConn = "Provider=sqloledb; Data Source=(local); Initial Catalog=northwind; Integrated Security=SSPI;"
set conn = server.createobject("ADODB.Connection")
conn.open sqlconn
if request("modifica") = "1" then
' ciclo su tutti i campi inviati tramite metodo POST
for each item in Request.Form
' se i primi 4 char contengono SQL_
if Mid(item, 1, 4) = "SQL_" then
SQL1 = SQL1 & Mid(item, 5) & " = "
SQL1 = SQL1 & "'" & Replace(Request.Form(item), "'", "''") & "', "
end if
next
' costruzione query e modifica
SQL = "UPDATE " & tabella & " SET " & Left(SQL1, Len(SQL1)-2)
SQL = SQL & " WHERE " & chiave & " = '" & Replace(request("chiave"), "'", "''") & "'"
' informazione di debug: volendo si può rimuovere
Response.write ("Query Eseguita:" & SQL & "<br>")
conn.Execute SQL, aff
if aff = 1 then
Response.Write("Record modificato con sucesso")
else
Response.Write("Record non modificato")
end if
else
' ricavo struttura e form
strSQL = "SELECT * FROM " & tabella & " WHERE " & chiave & " = '" & Replace(request("chiave"), "'", "''") & "'"
Set rs = conn.Execute(strSQL)
' ricavo il nome dei campi
For i = 0 to RS.Fields.Count - 1
' escludi chiave
if RS(i).Name <> chiave then
intestazione = intestazione & "<tr><td>" & RS(i).Name
intestazione = intestazione & "</td><td><input type=""text"" name=""SQL_" & RS(i).Name & """ value=""" & rs(i) & """></td></tr>"
end if
Next
set rs = Nothing
Response.Write ("<form method=post>")
Response.Write ("<input type=""hidden"" name=""tabella"" value=""" & tabella & """>")
Response.Write ("<input type=""hidden"" name=""modifica"" value=""1"">")
Response.Write ("<table border=1>")
Response.Write (intestazione)
Response.Write ("<tr><td><input type=""submit"" value=""Inserisci""></td></tr>")
Response.Write ("</table>")
end if
conn.Close
set Conn = Nothing
End Sub
call Modifica(Request("tabella"), Request("nomechiave"))
%>
Per testare lo script bisogna richiamarlo con una sintassi come questa:
http://localhost/test/modifica.asp?tabella=Customers&nomechiave=CustomerID&chiave=ALFKI
Ovviamente funziona anche con Access e con tutti gli OLE-db provider che supportano i Fields dell'oggetto Recordset.
Per approfondimenti sulla questione si veda:
#372 - Un semplice Datagrid con ASP
http://www.aspitalia.com/liste/usag/script.aspx?ID=372
#408 - Un datagrid con ordinamento con ASP
http://www.aspitalia.com/liste/usag/script.aspx?ID=408
#441 - Elencare tutte le tabelle di un database con OpenSchema
http://www.aspitalia.com/liste/usag/script.aspx?ID=441
#456 - Creare in automatico una maschera di inserimento record
http://www.aspitalia.com/liste/usag/script.aspx?ID=456
Approfondimenti
- Real Code Launch 2008: grazie!
- Uno sguardo a LINQ to SQL
- Installare ASP.NET ed i tool in un colpo solo
- Microsoft Security Bulletin di settembre 2008
- Utilizzare Visual Studio 2008 per semplificare lo sviluppo con LINQ to SQL
- Realizzare applicazioni ASP.NET sicure - Seconda parte
- Una noisa limitazione di LINQ To SQL
- Membership API per SQL Server anche senza dbo
- SQL Server 2008 February CTP
- Cosa fare se la vostra applicazione ASP o ASP.NET è vittima di SQL injection
- Cosa c'è in ASP.NET 3.5 Service Pack1
- Intellisense in Sql Server 2008
Commenti
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.







Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!