Newsgroup: it.comp.appl.access
Titolo: Problema Confronto 2 campi stringa

Salve a tutti,
sto implementando un sistema di modifica password che deve poter
ovviamente essere solo modificata dall'utente interessato.
utenti e password sono memorizzati in una tabella e ho creato una
maschera frmModificaPsw basata su di essa che possiede i seguenti
campi:
- id
- login
- psw
- tipo
e 2 caselle NON associate
- cboRicercaUser (combo - serve per individuare l'utente tramite il
campo login)
- txtVecchiaPsw (casella di testo per l'iserimento della vecchia
password che devo confrontare con quella del campo psw)
Sull'evento apertura della maschera ho nascosto di default il campo
Psw e ho inserito questa routine nell'evento su click di un pulsante
ModificaPsw:
Private Sub ModificaPsw_Click()
On Error GoTo Err_ModificaPsw_Click
If Me.cboRicercaUser = Me.login AND me.psw = me.txtVecchiaPsw Then
            Me.psw.Visible = True
            Me.psw.Locked = False
            Else
            risp = MsgBox("Il nome operatore e la password inserite
nella casella di Ricerca non corrispondono. Verificare e riprovare!!",
64, "Avviso")
            End If
Exit_ModificaPsw_Click:
    Exit Sub
Err_ModificaPsw_Click:
    MsgBox Err.Description
    Resume Exit_ModificaPsw_Click
End Sub
Il problema è che inserendo anche i valori corretti va sempre nel ramo
ELSE della IF ed è come se non riconoscesse le stringhe uguali!
Sbaglio qualcosa nella sintassi o cosa?
Grazie dell'aiuto!

 ELSE della IF ed � come se non riconoscesse le stringhe uguali!
Hai verificato se i quattro campi/controlli hanno i valori aspettati?
p.e. con
debug.print Me.cboRicercaUser, Me.login, me.psw, me.txtVecchiaPsw
prima della riga con If ... ti scrive i valori nella finestra immediata.
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 Access FAQ:
www.donkarl.com/it
Intanto grazie Karl per la risposta.
Ho fatto come mi hai suggerito ed effettivamente la situazione si
presentava cosi:
debug.print Me.cboRicercaUser, Me.login, me.psw, me.txtVecchiaPsw
4                   rossi               pippo                 pippo
quindi il problema credo che sia nella combo non associata che anche
se visualizza il testo probabilmente memorizza l'id.
Ho anche provato a questo punto a confrontare la combo cboRicercaUser
con il campo 
me.id
 e e le cose sembrerebbero andare meglio:
 debug.print Me.cboRicercaUser, Me.login, me.psw, me.txtVecchiaPsw
4                   4              pippo                 pippo
ma continua ad andare nel ramo ELSE della IF e non riesco proprio a
capire il motivo,sai aiutarmi?
Ti posto anche il codice della routine della combo cboRicercaUser
sull'evento Dopo Aggiornamento (che se non sbaglio ho preso proprio da
un esempio nel tuo sito:
Private Sub cboRicercaUser_AfterUpdate()
    ' Trova il record corrispondente al controllo
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[id] = " & Str(Nz(Me![cboRicercaUser], 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub



A me pare che il combo cboRicercaUser dovrebbe essere a due colonne,
la colonna (0) con l'ID e la colonna (1) col nome stringa dell'utente
il confronto andrebbe fatto cos�:
If Me.cboRicercaUser.Column(1) = Me.login etc.
mentre la ricerca pu� essere fatta cos�:
    ' Trova il record corrispondente al controllo
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[id] = " & Str(Nz(cboRicercaUser.column(0), 0))
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
Fammi sapere se funziona
Ciao
Filippo

 Filippo
Grazie mille Filippo.
Perfetto!
Ho sostituito le righe di codice che mi hai suggerito e sembra essere
tutto a posto dopo qualche tentativo.
Il problema era nella combo...dovevo far riferimento alla "column"
specifica ;-)
Alla prossima

Alla prossima
Molto bene.
Se posso aggiungere un suggerimento, per il confronto tra le due
stringhe del login ti consiglio di usare il seguente accorgimento:
If Ucase$(Me.cboRicercaUser.Column(1)) = Ucase$(Me.login)  etc.
ci� ti mette al riparo dalla eventuale digitazione scorretta
(maiuscole-minuscole) nel campo login da parte dell'utente
Ciao
Filippo