Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    157

    Modifica valore del campo di un record. ???

    Eccoci di nuovo. Questa volta devo aggiornare (modificare) il campo di un record. Mi spiego dall'inizio:
    ho un modulo di registrazione che l'utente compila e parte una e-mail all'indirizzo da lui indicato. L'email contiene un link che l'utente clicca per confermare la registrazione. Il link contenuto nell'e-mail dovrebbe essere questo:
    codice:
    http://www.sansevero.info/public/webonline/abilita.asp?Utente=prova&abilitato=si
    e, nella pagina richiamata, viene ricercato il record relativo all'utente (non possono esserci duplicati) e, individuato il record, viene cambiato il campo "abilitato" da "no" a "si" (il campo è di testo).
    Il codice interessato dalla ricerca e modifica del campo è il seguente:
    codice:
    <%
    Dim Utente
    Dim abilitato
    Dim Identif	
    Dim Password
    Dim Nome
    Dim Email
    Dim Datas
    Utente = Request.QueryString("Utente")
    abilitato = Request.QueryString("abilitato")
    
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = d:\inetpub\webs\sanseveroinfo\public\webonline\data\db.mdb")
    Set objRs = Server.CreateObject("ADODB.Recordset")
    
    strSQL="SELECT * FROM Users"
    set objRs = objConn.Execute(strSQL)
    ' cerchiamo l'utente
    Do While NOT objRs.EOF
      if objRs("UserName") = Utente then
        ' da qui in poi si dovrebbe modificare il campo "abilitato"
        Identif = objRs("ID")
        Password = objRs("Password")
        Nome = objRs("Name")
        Email = objRs("Email")
        Datas = objRs("InsertDate")
        strsql = "Update Users SET (UserName = '" & Utente & "', PassWord = '" & Password & "',Name = '" & Nome & "',Email = '" & email & "', InsertDate = '" & Datas & "',abilitato = '" & abilitato & "') Where ID = " & Identif
        Set objRs = Server.CreateObject("ADODB.Recordset")
        set objRs = objConn.Execute(strsql)
        objConn.Update
        objRs.Update
      end if
    objRs.Movenext
    Loop
    
    'chiusura database
    objRs.Close
    Set objRs = Nothing
    objConn.Close
    Set objConn = Nothing
    %>
    Il record dell'utente lo trova, ma poi mi da un errore di sintassi nell'aggiornamento del record. Poi ho pensato che l'errore mi fosse causato dal fatto che inizialmente non avevo messo nella stringa di aggiornamento tutti i campi del record, così mi sono creato le variabili e, dopo aver trovato il record, ho assegnato loro i valori dei campi e poi le ho messe in ordine nella stringa di aggiornamento... nemmeno questo ha funzionato...
    Con un "response.write", richiamando nel browser il link supra dato, è possibile vedere la stringa query che il browser dice di avere errori di sintassi.
    Poi ci ho messo objConn.Update e objRs.Update senza sapere che cosa in realtà serve...
    Spero che qualcuno mi riesca a chiarire l'errore, cosa ho omesso, ecc.

    Grazie, ciao.
    Luca

  2. #2
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    non puoi usare l'update con un recordset forward only

    set objRs = objConn.Execute(strSQL)
    cambia questo in

    objRs.Open strSQL ,objConn,2,3

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    157
    Non è cambiato niente purtroppo...
    Vedi tu stesso a questo indirizzo:
    codice:
    http://www.sansevero.info/public/webonline/abilita.asp?Utente=prova&abilitato=si
    La riga 31 indicata dall'errore corrisponde proprio a questo:
    codice:
    objRs.Open strSQL ,objConn,2,3
    Prima dell'errore ho visualizzato la stringa con un response.write, giusto per capire se è veramente sbagliata o no.
    Comunque ti riporto qui il codice della pagina in questione:
    codice:
    <%
    Dim Utente
    Dim abilitato
    Dim Identif	
    Dim Password
    Dim Nome
    Dim Email
    Dim Datas
    Utente = Request.QueryString("Utente")
    abilitato = Request.QueryString("abilitato")
    
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = d:\inetpub\webs\sanseveroinfo\public\webonline\data\db.mdb")
    Set objRs = Server.CreateObject("ADODB.Recordset")
    
    strSQL="SELECT * FROM Users"
    set objRs = objConn.Execute(strSQL)
    ' cerchiamo l'utente
    Do While NOT objRs.EOF
      if objRs("UserName") = Utente then
        Identif = objRs("ID")
        Password = objRs("Password")
        Nome = objRs("Name")
        Email = objRs("Email")
        Datas = objRs("InsertDate")
        strsql = "Update Users SET (UserName = '" & Utente & "', PassWord = '" & Password & "',Name = '" & Nome & "',Email = '" & email & "', InsertDate = '" & Datas & "',abilitato = '" & abilitato & "') Where ID = " & Identif
        response.write strsql
        Set objRs = Server.CreateObject("ADODB.Recordset")
        objRs.Open strSQL ,objConn,2,3
        objConn.Update
        objRs.Update
      end if
    objRs.Movenext
    Loop
    
    'chiusura database
    objRs.Close
    Set objRs = Nothing
    objConn.Close
    Set objConn = Nothing
    %>
    Grazie, ciao.
    Luca

  4. #4
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    hai ragione ti ho fatto cambiare il recordset ma non serviva

    ho fatto delle modifiche pulendo un po' il codice

    codice:
    <%
    'Estrai direttamente l'utente interessato
    strSQL			= "SELECT * FROM Users where UserName = '" & Utente & "';"
    set objRs 		= objConn.Execute(strSQL)
    'Se lo trovi fai l'update
    if not objRs.EOF
        Identif 	        = objRs("ID")
        Password 	        = objRs("Password")
        Nome 		= objRs("Name")
        Email 		= objRs("Email")
        Datas 		= objRs("InsertDate")
        SQLUpdate 	        = "Update Users SET UserName = '" & Utente & "'," &_ 
    	   	          "PassWord = '" 	& Password	& "'," &_ 
    	   		  "Name = '" 		& Nome 		& "'," &_ 
    	   		  "Email = '" 		& Email 	& "', " &_ 
    		    	  "InsertDate = '"  & Datas 	& "'," &_   
    	  		  "abilitato = '" 	& Utente 	& "'" &_ 
    	  		  "Where ID = " 	&  Identif	& ";"
        'Esegui un execute con l'oggetto connection senza creare nuovi recordset   
        objConn.Execute SQLUpdate
    else
    'Altrimenti mandi l'errore (da personalizzare)
    	Response.Write("Impossibile trovare l'utente")
    end if
    Set objRs = Nothing
    objConn.Close
    Set objConn = Nothing
    %>
    riguardo alla riga in grassetto se InsertDate è in formato testo va bene cosi altrimenti se in formata data/ora va cambiata in
    codice:
    "InsertDate = #"  & Datas 	& "#," &_

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    157
    Niente, ancora lo stesso errore...
    codice:
    http://www.sansevero.info/public/webonline/abilita.asp?Utente=prova&abilitato=si
    Ho inserito un response.write per vedere la stringa.
    La linea 37 è questa:
    codice:
    objConn.Execute SQLUpdate
    e l'intero codice questo:
    codice:
    <%
    Dim Utente
    Dim abilitato
    Dim Identif	
    Dim Password
    Dim Nome
    Dim Email
    Dim Datas
    Utente = Request.QueryString("Utente")
    abilitato = Request.QueryString("abilitato")
    
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = d:\inetpub\webs\sanseveroinfo\public\webonline\data\db.mdb")
    Set objRs = Server.CreateObject("ADODB.Recordset")
    
    'Estrai direttamente l'utente interessato
    strSQL			= "SELECT * FROM Users where UserName = '" & Utente & "';"
    set objRs 		= objConn.Execute(strSQL)
    'Se lo trovi fai l'update
    if not objRs.EOF then
        Identif 	        = objRs("ID")
        Password 	        = objRs("Password")
        Nome 	        	= objRs("Name")
        Email 				= objRs("Email")
        Datas 				= objRs("InsertDate")
        SQLUpdate 	        = "Update Users SET UserName = '" & Utente & "'," &_ 
    	   	      "PassWord = '" 	& Password	& "'," &_ 
    	   		  "Name = '" 		& Nome 		& "'," &_ 
    	   		  "Email = '" 		& Email 	& "'," &_ 
                  "InsertDate = #"  & Datas 	& "#," &_  
    	  		  "abilitato = '" 	& abilitato & "' " &_ 
    	  		  "Where ID = " 	& Identif	& ";"
        'Esegui un execute con l'oggetto connection senza creare nuovi recordset   
        Response.Write SQLUpdate
        objConn.Execute SQLUpdate
    else
    'Altrimenti mandi l'errore (da personalizzare)
    	Response.Write("Impossibile trovare l'utente")
    end if
    Set objRs = Nothing
    objConn.Close
    Set objConn = Nothing
    %>
    Grazie per il tempo che mi stai dedicando

  6. #6
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    abilitato è un True/false?

  7. #7
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    a parte che ora che mi ci fai pensare tu vuoi solo aggiornare l'abilitazione no?

    se è cosi ti basta aggiornare quel campo senza aggiornare gli altri
    codice:
    if not objRs.EOF then
        Identif 	        = objRs("ID")
        SQLUpdate 	        = "Update Users SET abilitato = '" 	& abilitato & "' " &_
    	  		  "Where ID = " 	& Identif	& ";"
        objConn.Execute SQLUpdate
    else
    'Altrimenti mandi l'errore (da personalizzare)
    	Response.Write("Impossibile trovare l'utente")
    end if
    se abilitato è un True/false
    se è si devi sostituire con 1 se no con 0
    Update Users SET abilitato = 1 where id = " & Identif se lo vuoi abilitare

    Update Users SET abilitato = 0 where id = " & Identif NON lo vuoi abilitare

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    157
    Tutti i campi sono di testo e "abilitato" è un campo di testo di lunghezza 2 caratteri con valore predefinito "no".
    ID è un "contatore" e InsertDate è un "Data/ora".

  9. #9
    Utente di HTML.it L'avatar di kluster
    Registrato dal
    Jul 2003
    Messaggi
    1,288
    aggiorna la pagina di questo 3d che ho modificato il post e controlla che nella tabella non ci sia qualcosa che non accetta i Null (consenti lunghezza 0)

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    157
    Finalmente!! Ora funziona.
    Ritengo che la sintassi in asp sia davvero tortuosa (più che in Visual Basic, che utilizzo quotidianamente).

    Ora sono alle prese con la memorizzazione dei dati del form in un database e il contestuale invio dei dati via e-mail all'indirizzo specificato dall'utente nel form, con il link alla pagina abilita.asp fin'ora lavorata.

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.