Newsgroup: it.comp.appl.access
Titolo: ID e ricerca

Ciao,
in una form ho inserito tre comandi, uno mi serve per aggiungere un
utente alla anagrafica, uno per ricercare un utente ed uno per
annullare l'inserimento.
Non riesco a risolvere un problema. Per evitare una duplicazione degli
utenti vorrei prima poter inserire parte del nome, fare una ricerca,
ottenere, magari in un'altra form, la lista degli utenti che
soddisfano la ricerca e poi mediante doppio click sul nome riempire i
campi dell'anagrafica.
Non vorrei però che appena avvio l'inserimento l'ID utente si
incrementi.
Spero di essere stato chiaro.
Grazie.

 ha scritto nel messaggio 
news:1194358013.4...@v3g2000hsg.googlegroups.com...

[risposta]
Puoi gestire l'evento "su uscita" della casella di testo "nome" inserendoci:
'---
dim strRicerca as string, quanti as integer
strRicerca = "nome=" & chr$(34) & me!nome & chr$(34)
if not isnull(Dlookup("nome","anagrafica",strRicerca)) then
    quanti = dcount("*","anagrafica",strRicerca)
    select case quanti
        case 1
            msgbox me!nome & ", è già stato inserito."
            cancel = true
        case is >1
            docmd.openform "elenco dei nomi doppi",,,strRicerca
            cancel = true
        case else
    end select
endif
'---
Io gestirei anche (o invece) l'evento "prima di aggiornare" con lo stesso 
codice...
Ciao.
-- 
Sergio MAZZA 

 [cut.]
Ciao Sergio,
ho comunque provato il tuo codice e per la cronaca funziona. Lo dico
per chi ha una necessità di questo tipo.
In realtà io ho un bisogno diverso, devo associare la ricerca alla
pressione di un tasto. In questo caso non mi funziona. Come mai?
Ho buttato giù questo codice che però non mi da risultati anche se
presenti:
Dim rst As DAO.Recordset
Dim strR As String
    strR = Me.NomeCognome
    If Not IsNull(Me!NomeCognome) Then
      Set rst = Me.RecordsetClone
      rst.FindFirst "NomeCognome Like """ & Me!NomeCognome & "*"""
      If Not rst.NoMatch Then 'Se un record viene trovato
                            Me.DataEntry = False
                            Me.Bookmark = rst.Bookmark
                            MsgBox "Trovato!"
                            'Me!NomeCognome.SetFocus
                            rst.Close
                            Set rst = Nothing
                        Else
                            MsgBox "non Trovato!"
                            Me.NomeCognome.SetFocus
                            Exit Sub
      End If
   End If

 [cut.]
Ciao Sergio,
ho comunque provato il tuo codice e per la cronaca funziona. Lo dico
per chi ha una necessità di questo tipo.
In realtà io ho un bisogno diverso, devo associare la ricerca alla
pressione di un tasto. In questo caso non mi funziona. Come mai?
[risposta]
Inserisci il codice suggerito nell'evento "su clic" del bottone.
Ho buttato giù questo codice che però non mi da risultati anche se
presenti:
Dim rst As DAO.Recordset
Dim strR As String
    strR = Me.NomeCognome
    If Not IsNull(Me!NomeCognome) Then
      Set rst = Me.RecordsetClone
      rst.FindFirst "NomeCognome Like """ & Me!NomeCognome & "*"""
      If Not rst.NoMatch Then 'Se un record viene trovato
                            Me.DataEntry = False
                            Me.Bookmark = rst.Bookmark
                            MsgBox "Trovato!"
                            'Me!NomeCognome.SetFocus
                            rst.Close
                            Set rst = Nothing
                        Else
                            MsgBox "non Trovato!"
                            Me.NomeCognome.SetFocus
                            Exit Sub
      End If
   End If
[risposta]
- NomeCognome è il nome vero del campo nella tabella o è un campo calcolato 
(es. NomeCognome : Nome & " " Congnome), o chee?
- Che scrivi dentro Me!NomeCognome?
- Mi sembra inutile il like se cerchi: Sergio MAZZA (nome cognome), utilizza 
l'ugaglianza.
Servono più informazioni...
Ciao.
-- 
Sergio MAZZA 

 Servono più informazioni...
Come sei diventato fiscale! oppure ti hanno sequestrato la palla di vetro?
-- 
ac
y-1=x

 y-1=x
Ciao.
-- 
Sergio MAZZA 

 Servono più informazioni...
Spero di essere stato più preciso.

 Come sei diventato fiscale! oppure ti hanno sequestrato la palla di vetro?
Il punto è che alcune volte pensiamo di essere stati chiari, mentre,
come ora, non ci siamo riusciti.
Che poi questo debba diventare motivo di presa in giro, non è carino.
Il principio è condividere le conoscenze, capita a te qui, capita a me
su altri argomenti.
Non credi? Poi si può anche lasciar perdere e non rispondere ad un
post se non lo si trova  "stimolante".
Ciao


Bada. Non sto prendendo in giro nessuno. Non sono proprio entrato nel 
merito del tuo post e non so ne cosa chiedi ne perche' ed inoltre sei in 
ottime mani. Spesso leggo le risposte di alcuni "individui" perche' le 
trovo utili per la "mia" formazione. Sergio Mazza e' uno di questi.
Con Sergio Mazza, inoltre,  ci scambiamo spesso delle facezie.
Non so se hai notato che ho aggiunto un [OT] all'oggetto e non sono 
intervenuto sul "tuo" post ma su quello di Sergio.
-- 
ac
y-1=x


Manco per sogno. (Alessa' nun me lassà!)
Facciamo così; incolla il codice che hai scritto nell'evento "su clic" del 
bottone.
Magari riesco ad indovinare il perché non funziona...
Ciao.
-- 
Sergio MAZZA 

 Manco per sogno. (Alessa' nun me lassà!)
Se ce l'hai con me. Mi ripeto "Ognuno ha il diritto di eleggere tempo e 
modo della sua propria distruzione" (cit) ;<)
Cmq. Per come ha fatto le cose se non mette su una transazione temo che 
ha perso poiche', quando decide di annullare l'inserimento, ormai e' 
stato completato. Il tutto potrebbe superarlo se fa una openform di tipo 
dialogo e su quella decide se abbandonare o eseguire l'inserimento.
-- 
ac
y-1=x

 l'inserimento.
Ma tu sei troppo avanti!
Qui secondo me si tratta "solo" di capire quale evento (lui vuole) 
utilizzare per il controllo dei doppi e il codice che sta utilizzando 
(magari facendolo vedere anche a noi)...


 Bada. Non sto prendendo in giro nessuno.
Forse mi sono spiegato male, non era mia intenzione creare "attriti".
Se il mio post ti ha offeso ti chiedo scusa.

 (magari facendolo vedere anche a noi)...
Buongiorno Alessandro e Sergio.
Cerco di essere ancora più preciso sul mio problema.
La form Anagrafica viene aperta "sopra" un'altra form, quest'ultima
necessaria a specificare la condizione fisica dell'utente (Relazione
uno-molti).
Bene, ho inserito un controllo di ricerca non tanto per controllare i
duplicati, cosa che vorrei evitare, ma per richiamarmi un utente e
quindi ripetere gli esami che lo riguardano.
Per cui vorrei ricercare un utente, ricerca anche parziale, ottenere
una lista che soddisfa la ricerca, magari in una nuova finestra, da
cui poi selezionare l'utente su cui aprire una nuova scheda esame.
Sono stato preciso? Alessà che dici? ;)

 ha scritto nel messaggio 
news:1194514632.9...@e9g2000prf.googlegroups.com...


[risposta]
Non so' che ne dice Alessando ma io dico che nunciazzeccagniente col tuo 
primo messaggio; quindi punto e accapo.
Per questa esigenza trovi sul sito comune (
www.sitocomune.com
) Sezione 
Forms, degli esempi...
Ciao.
-- 
Sergio MAZZA