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
https://www.aspitalia.com/liste/usag/script.aspx?ID=372
#408 - Un datagrid con ordinamento con ASP
https://www.aspitalia.com/liste/usag/script.aspx?ID=408
#441 - Elencare tutte le tabelle di un database con OpenSchema
https://www.aspitalia.com/liste/usag/script.aspx?ID=441
#456 - Creare in automatico una maschera di inserimento record
https://www.aspitalia.com/liste/usag/script.aspx?ID=456
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.