Newsgroup: it.comp.lang.visual-basic
Titolo: problema da aspirante collega

Salve, sto seguendo un corso di programmazione vb, e cerco quando posso di
esercitarmi per conto mio.
Ho creato un codice per la registrazione di un utente e l'inserimento dei
suoi dati in un database.
La connessione al db funziona, l'utente immette dati quali: nome utente,
password, conferma password e email.
Avviene il controllo per verificare che all'interno del database l'utente
non sia già presente, o con l'email, o con lo stesso
nome utente e password. Alla fine, se l'utente non è già presente nel db,
gli dovrebbe essere inviata una mail di conferma
per l'avvenuta registrazione
Ma sorge il primo problema. Ho inserito (forse sbagliando) i controlli in un
ciclo do while not objRs.eof, ma pur effettuando i controlli,
ANCHE SE TROVA L'UTENTE già presente nel db, manda il messaggio di errore ma
alla fine lo inserisce lo stesso ed invia l'email (quindi utente doppio se
non triplo o quadruplo).
In effetti, arrivo a capire il perchè faccia questo, visto che il codice non
fa altro che eseguire quello che io gli dico di fare, quello che non
riesco a fare è impedirgli di mandare l'email e registrare l'utente se
riscontra che lo stesso è già presente
Il secondo problema è che mi viene un messaggio su objRs.Close che dice che
l'operazione non è consentita se l'oggetto è chiuso... ma l'oggetto
è aperto... altrimenti non riuscirebbe a fare i controlli... è giusto il mio
ragionamento o mi sfugge qualcosa?
Il terzo problema è su objConn.Close, che mi viene evidenziato in seguito al
messaggio di errore "variabile oggetto o variabile del blocco with non
impostata"
e qui, sinceramente brancolo abbastanza nel buio, visto che l'unico with che
ho utilizzato non si trova in quel pezzo di codice....
Scusatemi per la lunghezza... ma sono un paio di giorni che ci sono sopra  e
purtroppo non riesco a venirne a capo
Grazie mille per le eventuali risposte
Private Sub cmdEntra_Click()
strUtente = Trim(txtUtente.Text)
strPassword = txtPassword.Text
strConfermaPassword = txtConfermaPassword.Text
strEmail = Trim(txtEmail.Text)
Set objConn = CreateObject("ADODB.Connection")
objConn.Open "inserimento"
Set objRs = CreateObject("ADODB.Recordset")
objRs.Open "inserimento", objConn
While Not objRs.EOF
        If (strUtente = objRs("utente")) And (strPassword =
objRs("password")) Then
            MsgBox "utente già inserito"
          Me.txtUtente.Text = ""
    Me.txtUtente.SetFocus
        End If
            If (strUtente = "") Or (strPassword = "") Or
(strConfermaPassword = "") Or (strEmail = "") Then
            MsgBox "riempire tutti i campi"
            End If
                If strPassword <> strConfermaPassword Then
                MsgBox "Password non coincide, reinserire password"
                Me.txtPassword.Text = ""
                Me.txtConfermaPassword.Text = ""
                    End If
    If (strEmail = objRs("email")) Then
    MsgBox "email già presente"
    Me.txtEmail.Text = ""
    Me.txtEmail.SetFocus
    End If
                objRs.MoveNext
                Wend
        Set objRs = objConn.Execute("Insert into inserimento (utente,
password, conferma_password, email) Values ( ' " & strUtente & " ' ,' " &
strPassword & "' , '" & strConfermaPassword & "' , '" & strEmail & "')")
                   MsgBox "Utente inserito correttamente. Riceverai una
email di conferma "
                    SendMessage
Set objRs = Nothing
objRs.Close
Set objConn = Nothing
objConn.Close
End Sub
Public Sub SendMessage()
 MAPISession1.SignOn
                    With MAPIMessages1
                      .MsgIndex = -1
                      .RecipDisplayName = strEmail
                      .MsgSubject = "Conferma Registrazione"
                      .MsgNoteText = "Salve " & strUtente & " ti confermiamo
che la tua registrazione è avvenuta con successo" & vbCrLf & vbCrLf & vbCrLf
& "Puoi accedere da subito alle informazini che desideri"
                      .SessionID = MAPISession1.SessionID
                      .Send
                    End With
                    MAPISession1.SignOff
End Sub

 While Not objRs.EOF
1) Perchè vuoi farti del male e non usi un bel (a meno che tu non stia
parlando di ASP, e allora dillo :))
Dim objConn As ADODB.Connection
Dim objRs As ADODB.Recordset
Set objConn = new ADODB.Connection
objConn.Open ' Qui dubito funzioni se non specifichi una connection string.
Set objRs = objConn.Execute(...)
2) Impariamo a usare l'SQL: è tanto comodo.
Al posto del Do While
    set objRs = objConn.Execute("SELECT * FROM inserimento" & _
                                "WHERE utente = '" & strUtente & "' " & _
                                "AND   password = '" & strPassword & "'")
    if (objRs.EOF) then
        'utente non trovato
    else
        ' utente trovato
    endif
Per il resto non hai indicato quali siano le righe che ti danno problemi, ma
ripova così prima.
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net


il controllo lo dovrebbe fare, se inserisco un utente che so che c'č mi
manda il messaggio di errore
Grazie mille per i consigli, riprovo a modificare in base ai tuoi
suggerimenti
ciao


objConn.Open perchè l'ho collegato con l'odbc, inoltre gli utenti nuovi
vengono effettivamente inseriti nel db

         End If
...
esce:


 ha scritto nel messaggio
news:Mzjyb.4796$yq1...@tornado.fastwebnet.it...


 ha scritto nel messaggio
news:bqcjpj$211i84$1...@ID-174464.news.uni-berlin.de...
