Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di EmTmE
    Registrato dal
    Jun 2001
    Messaggi
    333

    database access con comando rs.update

    Salve a tutti e grazie in anticipo per qualsiasi suggerimento.
    Il mio problema è quasi banale...
    Devo aprire un database .mdb leggere le info contenute e modificare il campo password con una nuova pass generata con randomize.
    Fin qui tutto ok ma ho problemi a fare registrare le modifiche ...
    In pratica o riesco a far modificare o il primo record o l'ultimo quelli nel mezzo non me li memorizza.
    Qui il codice ....
    <% session("referer")= session("pagina")
    session("pagina")= "http://"&request.ServerVariables("HTTP_HOST")&request.Ser verVariables("PATH_INFO")&"?"&request.QueryString( )
    Dim Conn

    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&server.mappath("/database/miodb.mdb")


    %><%
    Dim caratteri, passgen, carattere, ecc. ecc.
    SQL = " SELECT * FROM Utenti Where Confermato=true "
    Set RS = Conn.Execute, SQL, 2, 2
    If Not RS.EOF Then RS.MoveFirst
    Do While Not RS.EoF
    ID = RS("ID")
    Nome = RS("Nome")
    ecc. ecc.
    UserID=RS("UserID")
    Password=RS("Password")
    Confermato=RS("Confermato")
    response.Write("La vecchia pass è : ")
    response.Write RS("Password")
    caratteri = "0123456789abcdefghijklmnopqrstuvwxyz"
    Randomize ' inizializza il generatore di numeri casuale
    Do Until len(passgen) = 10 ' lunghezza della password
    carattere = Int((37 * Rnd) + 1) ' Genero valore casuale compreso tra 0 e z.
    passgen = passgen & Mid(caratteri,carattere,1)
    Loop
    Password=passgen
    response.Write(" La nuova pass random è: ")
    response.Write(Password)
    response.Write("
    ")
    passgen=0000000000
    rs.update
    RS.MoveNext
    Loop
    SQL = " UPDATE Utenti Set Nome = '" & Nome & "', Cognome = '" & Cognome & "', Via = '" & Via & "', Civico = '" & Civico & "', CAP = '" & CAP & "', Citta = '" & Citta & "', Provincia = '" & Provincia & "', Stato = '" & Stato & "', Telefono = '" & Telefono & "', RagioneSociale = '" & RagioneSociale & "', CodiceFiscale = '" & CodFiscale & "', PartitaIva = '" & PIva & "', Mail = '" & EMail & "', Password = '" & Password & "', UserID = '" & UserID & "' , Confermato = " & Confermato & " , Rivenditore = " & Rivenditore & " WHERE ID = " & id
    Set RS = Conn.Execute(SQL)
    Set RS = Nothing
    Conn.Close
    Set Conn = Nothing
    %>
    Suppongo che il problema sia di mia ignoranza sull'uso della funzione update dato che con questo codice dopo aver modificato la prima pass mi da errore dicendo che non posso apportare altre modifiche essendo la connessione chiusa.
    Ancora grazie a tutte le anime buone che avranno voglia di rispondermi...

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Innazitutto questa:

    codice:
    SQL = " UPDATE Utenti Set Nome = '" & Nome & "', Cognome = '" & Cognome & "', Via = '" & Via & "', Civico = '" & Civico & "', CAP = '" & CAP & "', Citta = '" & Citta & "', Provincia = '" & Provincia & "', Stato = '" & Stato & "', Telefono = '" & Telefono & "', RagioneSociale = '" & RagioneSociale & "', CodiceFiscale = '" & CodFiscale & "', PartitaIva = '" & PIva & "', Mail = '" & EMail & "', Password = '" & Password & "', UserID = '" & UserID & "' , Confermato = " & Confermato & " , Rivenditore = " & Rivenditore & " WHERE ID = " & id
    Set RS = Conn.Execute(SQL)
    diventa così:
    codice:
    SQL = " UPDATE Utenti Set Nome = '" & Nome & "', Cognome = '" & Cognome & "', Via = '" & Via & "', Civico = '" & Civico & "', CAP = '" & CAP & "', Citta = '" & Citta & "', Provincia = '" & Provincia & "', Stato = '" & Stato & "', Telefono = '" & Telefono & "', RagioneSociale = '" & RagioneSociale & "', CodiceFiscale = '" & CodFiscale & "', PartitaIva = '" & PIva & "', Mail = '" & EMail & "', Password = '" & Password & "', UserID = '" & UserID & "' , Confermato = " & Confermato & " , Rivenditore = " & Rivenditore & " WHERE ID = " & id
    Conn.Execute(SQL)
    Roby

  3. #3
    Utente di HTML.it L'avatar di EmTmE
    Registrato dal
    Jun 2001
    Messaggi
    333
    Prima di tutto grazie
    fatto ma mi da errore nella connection execute
    in pratica se non specifico il locktype mi attacco ma se lo specifico in questo modo mi da errore di sintassi con expected end of statement qui
    Set RS = Conn.Execute, SQL, 2, 2

  4. #4
    a cosa ti serve l'update dentro il loop ?

    codice:
    rs.update 
    RS.MoveNext
    dopo il loop chiudi il recordset
    codice:
    RS.Close
    Set RS = Nothing
    e dopo
    codice:
    Conn.Execute sql
    Conn.Close
    Set Conn = Nothing

    prova e fai sapere
    prude il dito, lui sdraiato
    ha giocato a guardie e ladri col ladro sbagliato

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Al posto di

    codice:
    Set RS = Conn.Execute, SQL, 2, 2
    devi mettere:

    codice:
    Set RS = server.createobject("adodb.recordset")
    RS.Open sql, Conn, 2, 2
    Roby

  6. #6
    Utente di HTML.it L'avatar di EmTmE
    Registrato dal
    Jun 2001
    Messaggi
    333
    Originariamente inviato da GudFella
    a cosa ti serve l'update dentro il loop ?

    codice:
    rs.update 
    RS.MoveNext
    dopo il loop chiudi il recordset
    codice:
    RS.Close
    Set RS = Nothing
    e dopo
    codice:
    Conn.Execute sql
    Conn.Close
    Set Conn = Nothing

    prova e fai sapere
    Allora rs.update era il disperato tentativo di far aggiornare tutti i record del recordset ma senza risultati...
    per le altre modifiche mi sono incartato ossia cosa devo togliere e cosa lasciare ? con i dopo che mi hai messo mi sono perso... (sono delle ore che mi arrovello ed ho perso freschezza da molto) potrei chiederti di ricopiare il codice con le ' per le mie righe da modificare e le tue aggiunte in modo che non faccio troppi casini?
    Sempre grazie a tutti

  7. #7
    Utente di HTML.it L'avatar di EmTmE
    Registrato dal
    Jun 2001
    Messaggi
    333
    Originariamente inviato da Roby_72
    Al posto di

    codice:
    Set RS = Conn.Execute, SQL, 2, 2
    devi mettere:

    codice:
    Set RS = server.createobject("adodb.recordset")
    RS.Open sql, Conn, 2, 2
    Roby
    Fatto adesso si ragiona ...
    ma mi modifica solo ultimo record e non tutti quelli che soddisfano la condizione di confermato = true fatta nella select...
    a video è tutto ok ossia scorre il db legge e stampa tutti i valori trovati nel campo password e mi scrive le passgen di fianco ma di salvarle nel database niente.
    Di seguito ultima versione del codice
    codice:
    <% session("referer")= session("pagina")
    session("pagina")= "http://"&request.ServerVariables("HTTP_HOST")&request.ServerVariables("PATH_INFO")&"?"&request.QueryString()
    Dim Conn
    
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&server.mappath("/database/miodb.mdb")
    
    
    %>
    	Dim caratteri, passgen, carattere, ecc. ecc.
    	SQL = " SELECT * FROM Utenti Where Confermato=true "
    		'Set RS = Conn.Execute (SQL)
    		Set RS = server.createobject("adodb.recordset")
    		RS.Open sql, Conn, 2, 2
    		If Not RS.EOF Then RS.MoveFirst
    		Do While Not RS.EoF
    			ID = RS("ID")
    			Nome = RS("Nome")
    			ecc. ecc.
    			UserID=RS("UserID")
    			Password=RS("Password")
    			Confermato=RS("Confermato")
    	response.Write("La vecchia pass è : ")
    	response.Write RS("Password")
    caratteri = "0123456789abcdefghijklmnopqrstuvwxyz" 
    Randomize ' inizializza il generatore di numeri casuale 
    Do Until len(passgen) = 10 ' qui imposti la lunghezza della password 
    carattere = Int((37 * Rnd) + 1) ' Genera un valore casuale compreso tra 0 e z. 
    passgen = passgen & Mid(caratteri,carattere,1)
    Loop 
    Password=passgen
    	response.Write(" La nuova pass random è: ")
    	response.Write(Password)
    	response.Write("
    ")
    	passgen=0000000000
    	rs.update 
    	RS.MoveNext
    	Loop
    	RS.Close
    	Set RS = Nothing
    'Conn.Execute sql
    'Conn.Close
    'Set Conn = Nothing
    	SQL = " UPDATE Utenti Set Nome = '"  & Nome & "', Cognome = '"  & Cognome & "', Via = '"  & Via & "', Civico = '"  & Civico & "', CAP = '"  & CAP & "', Citta = '"  & Citta & "', Provincia = '"  & Provincia & "', Stato = '"  & Stato & "', Telefono = '"  & Telefono & "', RagioneSociale = '"  & RagioneSociale & "', CodiceFiscale = '"  & CodFiscale & "', PartitaIva = '"  & PIva & "', Mail = '"  & EMail & "', Password = '"  & Password & "', UserID = '"  & UserID & "' , Confermato = "  & Confermato & " , Rivenditore = " & Rivenditore & " WHERE ID = "  & id
    	Conn.Execute(SQL)
    	Set RS = Nothing
    	Conn.Close
    	Set Conn = Nothing
    %>

  8. #8
    Utente di HTML.it L'avatar di EmTmE
    Registrato dal
    Jun 2001
    Messaggi
    333
    up
    sempre grazie a tutti

  9. #9
    Utente di HTML.it L'avatar di EmTmE
    Registrato dal
    Jun 2001
    Messaggi
    333
    scusate se "riposto" ma sono proprio fermo e senza speranza...

  10. #10
    non ho capito come si dispiega il codice...perchè ci sono due update? togli un pò di response e postane una versione piu chiara

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.