Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    75

    Inserimento multi record

    Buongiorno a tutti,
    ho questo problema:
    tramite un form (con un solo pulsate di invio) invio n record (la quantità non è fissa) ad una pagina ASP che tramite SQL aggiunge i records al DB Access.
    Finchè il record è uno solo non è un problema inserirlo con questo tipo di codice:
    codice:
    Dim conn
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.open(ConnessioneDb)
    sql = "SELECT * FROM Tabella "
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn,3 ,3
    
    Rs.addNew
    	Rs("IdDipendenti") = request.Form("IdDipendenti")
    	Rs("IdCalendario") = request.Form("IdCalendario")
    	Rs("OreLav") = request.Form("OreLav")
    rs.update
    ma quando i record sono tanti immagino che dovrò fare un ciclo che mi faccia tante SQL per ogni record da inserire.
    Qualcuno mi sa suggerire la sintassi da utilizzare?
    Immagino che sia qualcosa del tipo
    codice:
    for i to n
    ....
    SQL= ..ecc
    grazie a tutti!
    Aldo

  2. #2
    metti nel form un hidden in cui ti salvi il numero di record da salvare:

    codice:
    <input type="hidden" name="tot_dipendenti" value="<%= un_valore %>" />
    e poi semplicemente:

    codice:
    tot = cint("0" & request.form("tot_dipendenti"))
    
    for i = 1 to tot
    
    'salvo l'i-esimo record
    
    next
    a prescindere che da salvare ci siano 1 o piu dipendenti
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    75
    Ciao, prima di tutto grazie per la risposta!
    Funziona ma in parte, nel senso che i campi fissi del form di origine vengo inseriti mentre per quelli che cambiano ad ogni record il server restituisce errore.
    Lo so che mi sono spiegato male, quindi ti posto il codice che è meglio.
    IdDipendenti viene inserito correttamente mentre IdCalendario e OreLav no.

    Codice form
    codice:
    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.open(ConnessioneDb)
    sql = "SELECT * FROM Calendario where [Anno]=" & request.form("Anno") & ""
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn,3 ,3
    %>
    
    <form action="OreLavorativeIns.asp" method="post">
    
    <%
    On Error Resume Next
    rs.MoveFirst
    do while Not rs.eof
     %>
    <input id="OreLav" type="text" name="OreLav" size="3" value="<%=rs.fields("OreLav").value %>" />
    <input id="IdCalendario" type="hidden" name="IdCalendario" value="<%=rs.fields("Id").value%>" />
    
    <%
    rs.MoveNext
    loop%>
    
    <input id="TotRecords" type="hidden" name="TotRecords" value="<%=Records%>" />
     <input id="IdDipendenti" type="hidden" name="IdDipendenti" value="<%=request.form("Id")%>" />
    <input id="Submit1" type="submit" value="Aggiorna" />
    </form>
    Codice pagina Inserimento
    codice:
    Dim conn
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.open(ConnessioneDb)
    
    tot = cint("0" & request.form("TotRecords"))
    for i = 1 to tot
    
    sql = "SELECT * FROM Ore "
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn,3 ,3	
    
    Rs.addNew
    	Rs("IdDipendenti") = request.Form("IdDipendenti")
    	Rs("IdCalendario") = request.Form("IdCalendario")
    	Rs("OreLav") = request.Form("OreLav")
    rs.update
    Next
    Grazie molte ancora per l'aiuto
    Aldo

  4. #4
    codice:
    <input id="TotRecords" type="hidden" name="TotRecords" value="<%=Records%>" />
    nel codice che hai postato non valorizzi mai la variabile Records..
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    75
    Scusami mi ero dimenticato di postarsi anche questa parte di codice. Eccolo:
    codice:
    Dim Records
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.open(ConnessioneDb)
    sql = "SELECT COUNT (Id) AS TotaleRecord FROM Calendario where [Anno]=" & request.form("Anno") & ""
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn,3 ,3
    Records= rs("TotaleRecord")
    Ho provato anche a fare il response.write e stamparlo a video per essere sicuro che veniva fatto correttamente ed è ok!

    Grazie
    Aldo

  6. #6
    scusa effettivament enon ti ho detto che i record poi li dovevi numerare altrimenti viene male il request.form. esempio stupido:

    codice:
    <form>
    
    <%
    dim i
    i=0
    while not rs.eof
    
    
    %>
    
    <input type="text" name="prova<%= i %>" value =" prova <%= i %>" />
    
    <%
    i = i+1
    rs.movenext
    wend
    %>
    <input type="hidden" name="totRecords" value="<%= i %>" />
    
    </form>
    quando recuperi:

    codice:
    dim tot
    tot = cint("0" & request.form("totRecords"))
    
    for i = 0 to tot -1
    
    response.write request.form("prova" & i) & "
    "
    
    next
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    75
    Ottimo funziona!
    L'unica cosa dal il form l'ho modificato da così
    codice:
    <input type="text" name="prova<%= i %>" value =" prova <%= i %>" />
    a così
    codice:
    <input type="text" name="prova<%= i %>" value =" prova" />
    perchè altrimenti mi falsava il valore che inserivo nel db.

    Comunque ripeto, soluzione ottima!
    Grazie infinite!
    Aldo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.