#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
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.