Newsgroup: it.comp.appl.access
Titolo: Funzione di ricerca

Salve a tutti e Buone feste.
Ho una maschera nella quale in una casella di riepilogo visualizzo tutti i
nomi dei clienti contenuti nella tabella clienti, una casella per la ricerca
e i campi anagrafici del cliente.
Quando seleziono dalla casella di riepilogo un nominativo visualizzo i dati
anagrafici dell cliente selezionato e questo è OK.
La casella di ricerca invece la uso per ricercare o per codice cliente o per
nome cliente, quindi quando entro nel campo azzero il contenuto e mostro
l'intero recordset clienti nella casella di riepilogo e man mano che digito
filtro il contenuto della casella di riepilogo.
Dopo aver trovato il nominativo devo però spostarmi sulla casella di
riepilogo e cliccare il nominativo per poter visualizzare i dati anagrafici.
Io vorrei che mentre digito la casella di riepilogo non venisse filtrata ma
vorrei che evidenziasse il nominativo che in quel momento corrisponde alla
ricerca digitata e nello stesso momento
vorrei poter vedere i dati anagrafici.
Non so se sono stato chiaro, in tal caso allego i due eventi che gestiscono
la casella CERCA
Private Sub Cerca_GotFocus()
    Me.Cerca = Null
    Me.ElencoClienti.RowSource = "SELECT CLIENTI.cli_nome FROM CLIENTI ORDER
BY CLIENTI.cli_nome"
End Sub
Private Sub Cerca_Change()
On Error GoTo ErrMan
    Dim CaratteriDigitati As String
    Dim sql As String
    Dim j, tmp, tmplen
    CaratteriDigitati = Me.Cerca.Text
    tmp = UCase(CaratteriDigitati)
    tmplen = Len(tmp)
                If Asc(Me.Cerca.Text) < 48 Or Asc(Me.Cerca.Text) < 57 Then
                   sql = "SELECT CLIENTI.cli_nome,CLIENTI.[cli_cod] FROM
CLIENTI WHERE [cli_cod] LIKE '" & CaratteriDigitati & "*'" & "ORDER BY
CLIENTI.cli_nome"
                Else
                    If Asc(Me.Cerca.Text) < 48 Or Asc(Me.Cerca.Text) > 57
Then
                       sql = "SELECT CLIENTI.cli_nome,CLIENTI.[cli_cod] FROM
CLIENTI WHERE cli_nome LIKE '" & CaratteriDigitati & "*'" & "ORDER BY
CLIENTI.cli_nome"
                    End If
                End If
    Me.ElencoClienti.RowSource = sql
Exit Sub
ErrMan:
    If Err.Number = 5 Then Resume Next
End Sub
Grazie, Alberto

 wrote in message
978014229.418614@NNTPCache01...

______
Se ho capito bene, dopo aver trovato il nominativo che ti interessa, su
uscita della casella ricerca, non ti conviene impostare la
caselladiriepilogo=caselladiricerca
e poi fai una requery della casella di riepilogo?
ciao Riccardo

 ha scritto nel messaggio
news:92fg6a$oeh$1...@news.panservice.it...

Quello che dici tu l'ho fatto e nel codice si vede con :
Me.ElencoClienti.RowSource = sql
ma non vorrei filtrare la casella di riepilogo ma vorrei vedere tutti i
nominativi ed evidenziare il nominativo che in quel momento corrisponde alla
ricerca, e nello stesso momento vedere i dati anagrafici.
Se aggiungo al codice:
Me.RowSource = sql
quando digito il secondo carattere il cursore mi si sposta su un campo
dell'anagrafica.
Non so se riesco a spiegarmi

 wrote in message
978022807.974775@NNTPCache01...

_____-
hai provato ad impostarla così?
    Me.CasellaRiepilogo.DefaultValue = """Me.CaselladiRicerca"""
l'ho provato con un elenco valori e funziona!
con un controllo non ho fatto la prova, comunque potresti provare a vedere
la Proprietà DefaulValue
così ti fa vedere tutti i nominativi e ti seleziona quello che vuoi tu.
Spero di esserti stato di aiuto
ciao Riccardo

Scusa se insisto........ ma se io non digito il nome completo cosa succede ?
La funzione che ho creato cerca mentre digito carattere per carattere !


________
Non sono molto pratico di VB, però , se tu non digiti tutto il nome vuoi
dire che ad un certo punto ti fermi nella digitazione e nella casella di
riepilogo ti compare solo il nome con le iniziali digitare e basta?
Per fare questo ti sposti con il mouse?
Se è così, mi è venuta un'idea, ma non so se possa funzionare!
Prova a crearti un'altra casella di riepilogo (CasRiep1) nascosta e la
posizioni sopra l'altra e su Evento Invio (o qualcosa di simile)della
casella di ricerca :
Nascondi la Casella di Riepilogo filtrata
Scopri la Casella di Riepilogo nuova (CasRiep1)
Imposti il DefaultValue della CasRiep1 alla stringa che hai nella Casella di
Riepilogo filtrata.
Spero di esserti stato di aiuto.
ciao Riccardo