Aggiungere una maschera di modifica di un database

di Daniele Bochicchio, in Classic ASP, 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
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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi