Visualizzazione dei risultati da 1 a 8 su 8

Discussione: record doppi

  1. #1

    record doppi

    Ciao a tutti,
    sono nuovo in questo forum, m'interesso di onomastica e gestisco on line un elenco di cognomi.
    Mi serve che gli utenti non facciano doppioni di cognomi
    uso un form e un file add.asp che aggiorna il database access
    al momento utilizzo questa connessione:
    Dim Conn
    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("/fpdb/cognomi.mdb")

    raccolgo il cognome da un form
    cognome = Request.Form("cognome")
    cognome = Replace(cognome,"'","’")

    inserisco i dati nel database
    SQL = "INSERT INTO Risultati (Cognome)"
    SQL = SQL & "VALUES ('"&Cognome&"')"
    Conn.Execute(SQL)

    chiudo la connessione e reinderizzo a una pagina di conferma
    Response.Redirect "conferma.asp"

    Tutto funziona regolarmente, ora mi serve che se il cognome è già presente nel database, dovrebbe essere indirizzato in una pagina "errore.asp" in cui avviso che il cognome c'è già.

    Ho provato a fare diverse modifiche con
    i=0
    while not sql.eof
    i=i+1
    wend

    ma commetto sempre qualche errore
    ho proprio bisogno di un esempio pratico, perché ho capito il concetto ma sbaglio sempre sia nella sintassi che nella disposizione sequenziale dello script
    quindi... qualcuno può aiutarmi modificando lo script che uso oppure indicandomi un esempio facile facile?
    Grazie

  2. #2
    prima di inserirlo.... cercalo! se lo trovi, vuol dire che c'è già, e ti regoli di conseguenza.

  3. #3
    Considerando la risposta che ho ricevuto da optime... ho pensato che forse non sono stato abbastanza chiaro, sintetizzo alcuni passaggi, giusto per precisare.

    - il database è on line e viene consultato da tutti liberamente

    - gli utenti del sito aggiungono il cognome (quindi, non sono io che inserisco il cognome).

    - sarebbe logico controllare se il cognome esiste già e di conseguenza non aggiungere un doppione, ma molti non lo fanno e creano doppioni.

    - per evitare doppioni vorrei controllare con uno script il processo di registrazione nel database

    - ho già una pagina asp che aggiorna regolarmente il database e vorrei modificarla

    questo è lo script che uso:

    Dim Conn
    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("/fpdb/cognomi.mdb")
    cognome = Request.Form("cognome")
    Cognome = Replace(Cognome,"'","’")
    SQL = "INSERT INTO Risultati (Cognome)"
    SQL = SQL & "VALUES ('"&Cognome&"')"
    Conn.Execute(SQL)
    Conn.close
    Response.Redirect "conferma.asp"


    Qualcuno può aiutarmi a modificarlo?
    Spero di sì, grazie in anticipo.

  4. #4
    - sarebbe logico controllare se il cognome esiste già e di conseguenza non aggiungere un doppione, ma molti non lo fanno e creano doppioni.

    sarebbe logico si controllare..ma mica lo deve fare l'utente, lo devi fare te

    codice:
    Dim Conn
    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("/fpdb/cognomi.mdb")
    cognome = Request.Form("cognome")
    Cognome = Replace(Cognome,"'","’")
    
    'controllo che non sia già stato inserito
    sql="select Cognome from Risultati where ucase(Cognome)='" & trim(ucase(Cognome)) & "'"
    
    set rs=conn.execute(sql)
    
    if not rs.eof then
    response.write ("cognome già inserito")
    else
    
    
    SQL = "INSERT INTO Risultati (Cognome)"
    SQL = SQL & "VALUES ('"&Cognome&"')"
    Conn.Execute(SQL)
    Response.Redirect "conferma.asp" 
    end if
    set rs=nothing
    Conn.close

  5. #5
    optime ti ha dato la risposta giusta.
    Fai una query prima della INSERT e verifica se il cognome, che l'utente ha digitato, risulta già presente nel DB.
    Se si, allora dai un messaggio di "cognome già presente", se no, allora inserisci.

    Cosa c'è di tanto difficile?
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  6. #6
    codice:
    Dim Conn
    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("/fpdb/cognomi.mdb")
    cognome = Request.Form("cognome")
    Cognome = Replace(Cognome,"'","’")
    
    'controllo che non sia già stato inserito
    sql="select Cognome from Risultati where ucase(Cognome)='" & trim(ucase(Cognome)) & "'"
    
    set rs=conn.execute(sql)
    
    if not rs.eof then
    response.write ("cognome già inserito")
    else
    
    
    SQL = "INSERT INTO Risultati (Cognome)"
    SQL = SQL & "VALUES ('"&Cognome&"')"
    Conn.Execute(SQL)
    Response.Redirect "conferma.asp" 
    end if
    set rs=nothing
    Conn.close
    [/QUOTE]

    Ottimo, funziona, grazie mille!

  7. #7
    Originariamente inviato da maximum
    optime ti ha dato la risposta giusta.
    Fai una query prima della INSERT e verifica se il cognome, che l'utente ha digitato, risulta già presente nel DB.
    Se si, allora dai un messaggio di "cognome già presente", se no, allora inserisci.

    Cosa c'è di tanto difficile?
    Niente... ma era meglio la seconda, grazie!

  8. #8
    Originariamente inviato da dicri
    Niente... ma era meglio la seconda, grazie!
    il ditino che non ha voglia di spinger tasti e produrre codice asp

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 © 2026 vBulletin Solutions, Inc. All rights reserved.