Creare in automatico una maschera di inserimento record

di Daniele Bochicchio, in Classic ASP, Database, Tips,

Negli script #327 e #408 abbiamo costruito un semplice datagrid per mostrare (ed ordinare) i dati prelevati da una tabella di un database usando Classic ASP.
A tal proposito, un utente mi ha chiesto se sia possibile nello stesso modo costruire una pagina che crei la form e provveda ad inserire i dati in maniera altrettanto automatica.
Ebbene, la riposta è ovviamente affermativa e con un po' di codice è possibile integrare il tutto senza problemi:

<%
Sub CreaInserimento(tabella)

   SQLConn = ""' stringa di conn

   set conn = server.createobject("ADODB.Connection")
   conn.open sqlconn

  if request("inserimento") = "1" then
    'inserisco

    ' 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) & ", "
        SQL2 = SQL2 & "'" & Replace(Request.Form(item), "'", "''") & "', "
      end if
    next

    ' costruzione query ed inserimento
    SQL = "INSERT INTO " & tabella & "(" & Left(SQL1, Len(SQL1)-2)
    SQL = SQL & ") VALUES (" & Left(SQL2, Len(SQL2)-2) & ")"
    conn.Execute SQL, aff

    ' informazione di debug: volendo si può rimuovere
    Response.write ("Query Eseguita:" & SQL & "<br>")

    if aff = 1 then
      Response.Write("Record inserito con sucesso")
    else
      Response.Write("Record non inserito")
    end if

  else
    ' ricavo struttura e form

     strSQL = "SELECT * FROM " & tabella

     Set rs = conn.Execute(strSQL)

     ' ricavo il nome dei campi
     For i = 0 to RS.Fields.Count - 1
      intestazione = intestazione & "<tr><td>" & RS(i).Name
       intestazione = intestazione & "</td><td><input type=""text"" name=""SQL_" & RS(i).Name & """></td></tr>"
     Next

    set rs = Nothing

    Response.Write ("<form method=post>")
    Response.Write ("<input type=""hidden"" name=""tabella"" value=""" & tabella & """>")
    Response.Write ("<input type=""hidden"" name=""inserimento"" 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 CreaInserimento(Request("tabella"))
%>

Basterà richiamare la pagina passando come parametro il nome della tabella, ad esempio
http://localhost/admin/inserimento.asp?tabella=prodotti

Apparirà una form, creata automaticamente a runtime, con i nomi dei campi ed un input per ciascuno di essi.
Allo stesso modo una volta inviata la form, verrano ricavati i nomi dei campi (che hanno un prefisso particolare, SQL_) e create al volo la query di inserimento.
Ovviamente allo stesso modo può essere inserito un sistema per l'aggiornamento dei record, anche se è necessario un pizzico di lavoro in più.

Per gli altri script menzionati, 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

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