Newsgroup: it.comp.appl.access
Titolo: dao e findfirst

ciao,
sto cercando di far cercare ad una maschera con dei controlli non associati
dei dati in una tabella...
Private Sub Comando4_Click()
  Dim ds1 As DAO.Recordset
  Dim db1 As Database
  Dim primo As Integer
  Dim Utente As String
  Dim Password As String
  Dim Form_utente As String
  Dim Form_password As String
 
 
  Set db1 = CurrentDb
  Set ds1 = db1.OpenRecordset("Utenti", dbOpenDynaset)
    Utente = ds1("Utente")
    Password = ds1("password")
    Form_utente = Forms![mascheralogin]![Utente]
    Form_password = Forms![mascheralogin]![Password]
    ds1.MoveFirst
    ds1.FindFirst (Utente & Password = Form_utente & Form_password)
 
ds1.Update
db1.Close
End Sub
dove sbaglio? perchè che sbagli è sicuro ma non so da dove iniziare...
Grazie
Tz
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Ti complichi la vita forse per nulla...!
Quello che sbagli è la composizione SQL corretta della stringa di
criterio.
che a mio avviso è molto INVENTATA, e dico molto per essere
educato...!
Occhio poi al metodo UPDATE che ti deve essere rimasto attaccato da un
Copy/Paste, ma in questo caso direi serve solo a ricevere un errore...!
In ogni caso visto che immagino Utente sia un Chiave primaria, spero
sia
così, perchè non estrai direttamente il Reocrdset pulito...?
Esempio 1 vale a dire la correzione del tuo:
Set db1 = CurrentDb
  Set ds1 = db1.OpenRecordset("Utenti", dbOpenDynaset)
    Form_utente = Forms![mascheralogin]![Utente]
    Form_password = Forms![mascheralogin]![Password]
    ds1.FindFirst "Utente ='" & Form_utente & "' AND Password = '" &
Form_password & "'"
    If ds1.NoMatch then Msgbox "Nessun utente con questo nome"
    ds1.close
    db1.Close
    Set ds1=Nothing
    Set db1=Nothing
End Sub
Personalmente però farei così:
Dim sSQL
Set db1 = CurrentDb
  sSQL="SELECT * FROM Utenti WHERE Utente='" &  Me![Utente] & "'"
  Set ds1 = db1.OpenRecordset(sSQL)
  If ds1.Eof then Msgbox "Nessun utente con questo nome"
    ds1.close
    db1.Close
    Set ds1=Nothing
    Set db1=Nothing
End Sub
La prima considerazione è che il NomeUtente deve essere UNIVOCO
quindi deve bastare questo per il criterio di verifica.
La 2° considerazione è di tipo formale, vale a dire che dichiarare
una
variabile come hai fatto tu:
Form_password
è o può essere pericoloso per l'uso di parole chiave come Form.
Saluti
@Alex


Ciao sono un completo autodidatta cerco il codice che altre volte mi avete
suggerito e cerco di lavorarci sopra con le conoscenze che apprendo di volta
in volta.
So che agli occh idi una persona che "mastica" codice ogni giorno sono delle
bestialità quelle che scrivo ma cerco proprio attraverso il vostro aiuto di
comprendere sempre di più.
la programmazione, gli DAO e molte altre cose le apprendo quando ho tempo
dal ng.
Grazie ad ogni modo per il tempo che mi/ci dedichi.
Ciao!
TZ


 @Alex
ciao finalmente riesco a vedere quello che mi hai scritto, ok sono riuscito
a mettere dentro il codice corretto che mi hai inviato e se non trova
l'utente mi scrive il messaggio.
nel mio caso avevo creato una barra personalizzata e questa viene carcata
ugualmente quindi indipendentemente da quello che faccio sulla maschera di
login posso lavorare.
trovo un modo per impoostare solo l'inserimento iniziale senza che nessuno
possa inserire delle variazioni e come faccio a ricordare al mio sistema che
io sono l'utente pincopallino?
buona serata a tutti


 Tz
Ciao
@Alex


Ricapitolando perchè sono tonto...
nella maschera login iniziale settata all'apertura dell'applicativo
inserisco:
 - un controllo non associato di nome Utenti;
 - un pulsante Comando2 su cui associo il seguente codice:
Private Sub Comando2_Click()
   Dim sSQL
    Set db1 = CurrentDb
    sSQL = "SELECT * FROM Utenti WHERE Utente='" & Me![Utente] & "'"
    Set ds1 = db1.OpenRecordset(sSQL)
    If ds1.EOF Then MsgBox "Nessun utente con questo nome"
    ds1.Close
    db1.Close
    Set ds1 = Nothing
    Set db1 = Nothing
End Sub
intendo creare 5 livelli di utenti:
1 in sola lettura (per tutte le schede);
2 in modifica (per parte1);
3 in modifica (per parte2);
4 in modifica (per parte1, 2 e 3) e cancella i record di qualunque tabella;
5 che amministra, concede di inserire gli utenti, i permessi e può eliminare
i record.
nella mia tabella utenti l'unico campo inserito è il campo utente?
la toolbar di ci mi hai postato l'esempio è basata su tre differenti toolbar
a seconda dell'utenza, giusto?
il "public variable" mi rimane un pò ostico come cosa da fare...
buona giornata
