• User Attivo

    Stampare un Id appena registrato

    A.a.a.a.a.a. Cercasi Santo!!!
    Sarò brevissimo:
    Ho un semplice modulo di registrazione, al pulsante "Iscriviti" si apre una pagina di ringraziamento, che permette la registrazione dei dati inseriti.
    In quest'ultima ho inserito una simpatica immagine che mi collega ad una nuova pagina permettendo all'utente di stampare il modulo riempito.
    Ora, non mi crederete, ma sono almeno 3 giorni che non riesco a far visualizzare questa benedetta pagina.
    Io vi posto, in sintesi, i due script nella speranza di trovare un Santo che mi aiuti.
    PAGINA DI REGISTRAZIONE:

    
    <%@LANGUAGE="VBSCRIPT"%>
    <%
    id=request.form("id")
    data=request.form("data")
    nome=request.form("nome")
    cognome=request.form("cognome")
    data_nascita=request.form("data_nascita")
    &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..
    &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.
    data=replace(data,"'","''")
    nome=replace(nome,"'","''")
    cognome=replace(cognome,"'","''")
    data_nascita=replace(data_nascita,"'","''")
    &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..
    &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.
    Set conn_iscrizione = Server.CreateObject("ADODB.Connection")
    conn_iscrizione.Open "Driver={MySQL};SERVER=XX.XXX.XXX.XX;Database=SqlXXXXX_X;port=XXXX;UID= SqlXXXXX;PWD=XXXXXXXXXXX;"
    sql = "insert into mod_iscri_fis (data, nome, cognome, data_nascita) values ('"&data&"', '"&nome&"', '"&cognome&"', '"&data_nascita&"') "
    set rs=conn_iscrizione.execute(sql) 
    Sql_last_id = "select max(id) as id from mod_iscri_fis where cognome='"&cognome&"' and nome='"&nome&"' "
    'response.Write(Sql)
    set rs_last_id=conn_iscrizione.execute(Sql_last_id)
    Dim iMsg
    Dim iConf
    Dim Flds
    set iMsg = CreateObject("CDO.Message")
    set iConf = CreateObject("CDO.Configuration")
    With iMsg
    Set .Configuration = iConf
    .To = [EMAIL="[email protected];"][email protected];[/EMAIL]
    .From = "[email protected]"
    .Subject = "Modulo di iscrizione da perte del Sig. "& cognome
    .TextBody = "Per visualizzare il modulo di iscrizione collegati al link: http://LINK.asp?id="&rs_last_id("id")
    .Send
    End With
    %>
    **<a href="STAMPA.asp?id=<%=rs_last_id("id")%>"><img src="immagini/stampanti_small.jpg" border="0">**
    **</a>**
     
    **PAGINA DI STAMPA:**
    <%@LANGUAGE="VBSCRIPT"%>
    <%
    Sql_last_id = "select * from mod_iscri_fis where id="&cint(request("id"))&" "
    set rs_last_id=conn_iscrizione.execute(Sql_last_id)
    %>
    <%rs_last_id("data")%>
    <%rs_last_id("nome")%>
    <%rs_last_id("cognome")%>
    <%rs_last_id("luogo_nascita")%>
    ...................................
    
    

    L'errore ricorrente che ji riscontra il browser è sempre alla riga del response: set rs_last_id=conn_iscrizione.execute(Sql_last_id)

    Non ho dubbi di avere commesso qualche errore..... c'è qualcuno che può illuminarmi??

    Grazie 1000


  • User Attivo

    Ciao leftist1973,
    il codice va postato all'interno degli appositi tag code

    Qual'è l'errore che ti viene restituito?


  • User Attivo

    @madai said:

    Ciao leftist1973,
    il codice va postato all'interno degli appositi tag code

    Qual'è l'errore che ti viene restituito?
    Ciao e grazie pert avermi risposto.

    L'errore che mi fà sempre è nella pagina STAMPA, ed è sempre alla riga dell'rs.

    L'ho messo dapertutto questo dannato codice ma cmq non mi funziona 😞 😞 😞

    HELP


  • Moderatore

    Ciao,
    io proverei con:

    
    ...
    Sql_last_id = "select max(mod_iscri_fis.id) as LAST_ID from mod_iscri_fis where cognome='"&cognome&"' and nome='"&nome&"' "
    ...
    
    

    perchè, forse (ma potrei sbagliarmi), la parola "id" è uno delle termini riservate per SQL Server

    PS: ho editato il tuo post perchè c'erano email reali: e non è bene che siano rese pubbliche sia per la privacy sia per evitare spyder di spammer...


  • User Attivo

    @paocavo said:

    Ciao,
    io proverei con:

    >
    ...
    Sql_last_id = "select max(mod_iscri_fis.id) as LAST_ID from mod_iscri_fis where cognome='"&cognome&"' and nome='"&nome&"' "
    ...
    
    >```
    perchè, forse (ma potrei sbagliarmi), la parola "id" è uno delle termini riservate per SQL Server
     
    PS: ho editato il tuo post perchè c'erano email reali: e non è bene che siano rese pubbliche sia per la privacy sia per evitare spyder di spammer...
     
    Provato, ecco l'errore che mi viene visualizzato:
    ** **
    
    ADODB.Recordset error '800a0cc1' 
    Item cannot be found in the collection corresponding to the requested name or ordinal. /stampa_iscrizione_pf.asp, line 176 
     La line 176 corrisponde a questa stringa:   <%=rs_last_id("data")%>
    La prima del form.
     
    Grazie per l'email, mi sono sfuggite
    :ciauz: 
    

  • Moderatore

    In ogni caso io non userei sql secche da far eseguire a conn.execute, usereri l'oggetto Recordset con lock pessimistico ed il metodo AddNew. In questo modo evito di fare due query distinte per ottenere l'ultimo identificativo, qualcosa del tipo:

    
    Set conn_iscrizione = Server.CreateObject("ADODB.Connection")
    conn_iscrizione.Open "Driver={MySQL};SERVER=XX.XXX.XXX.XX;Database=SqlXXXXX_X;port=XXXX;UID= SqlXXXXX;PWD=XXXXXXXXXXX;"
    Set myRecSet = Server.CreateObject("ADODB.Recordset")
    myRecSet.Open("select * from mod_iscri_fis"), conn_iscrizione, adLockPessimistic
    myRecSet.AddNew
     myRecSet("data") = data
     myRecSet("nome") = nome
     myRecSet("cognome") = cognome
     myRecSet("data_nascita") = data_nascita
    myRecSet.Update
    Dim LastID = myRecSet("id")
    myRecSet.Close
    Set myRecSet = Nothing
    Set conn_iscrizione = Nothing
       
    
    

    Non dimenticare di chiudere e distruggere (set nome_oggetto = Nothing) tutti gli oggetti quando non ti servono più!!


  • User Attivo

    @paocavo said:

    In ogni caso io non userei sql secche da far eseguire a conn.execute, usereri l'oggetto Recordset con lock pessimistico ed il metodo AddNew. In questo modo evito di fare due query distinte per ottenere l'ultimo identificativo, qualcosa del tipo:

    >
    Set conn_iscrizione = Server.CreateObject("ADODB.Connection")
    conn_iscrizione.Open "Driver={MySQL};SERVER=XX.XXX.XXX.XX;Database=SqlXXXXX_X;port=XXXX;UID= SqlXXXXX;PWD=XXXXXXXXXXX;"
    Set myRecSet = Server.CreateObject("ADODB.Recordset")
    myRecSet.Open("select * from mod_iscri_fis"), conn_iscrizione, adLockPessimistic
    myRecSet.AddNew
    myRecSet("data") = data
    myRecSet("nome") = nome
    myRecSet("cognome") = cognome
    myRecSet("data_nascita") = data_nascita
    myRecSet.Update
    Dim LastID = myRecSet("id")
    myRecSet.Close
    Set myRecSet = Nothing
    Set conn_iscrizione = Nothing
       
    
    >```
     
    Non dimenticare di chiudere e distruggere (set nome_oggetto = Nothing) tutti gli oggetti quando non ti servono più!!
     
    Caro paocavo, 
    per piacere non chiedermi come, dove, perchè, ma ora funziona, Funziona, FUNZIONAAAAA ![image](http://forum.html.it/forum/images/smilies/tupitupi.gif) ![image](http://forum.html.it/forum/images/smilies/tupitupi.gif) ![image](http://forum.html.it/forum/images/smilies/tupitupi.gif) ![image](http://forum.html.it/forum/images/smilies/tupitupi.gif) 
    
    Io ti descrivo cosa ho fatto:
    1) Ho inserito il file di connessione: 
    <%@LANGUAGE="VBSCRIPT"%>
    <!--#include file="conn_iscrizione.asp" -->
    Ho creato la mia tabella, e prima di inserire i campi ho messo questo script:
    <% 
    Sql_last_id = "select * from mod_iscri_fis where id="&cint(request("id"))
    set rs_last_id=conn.execute(Sql_last_id)
    %>
    
    Infine per ogni campo ho inserito questo script di richiamo:
    <%=rs_last_id("data")%>
    <%=rs_last_id("nome")%>
    <%=rs_last_id("cognome")%>
    
    e cosi via....
    
    GRAZIE 10000000000000000000000 :ciauz:  :fumato:  ;) 
     
    Ps: la tua soluzione la provo subito.