Newsgroup: it.comp.appl.access
Titolo: casella non associata per ricerca parziale

ho una maschera in cui vi ho una casella combinata non associata per la
ricerca su un campo txt immettendo solo parte del testo, che a dire il
vero mi funziona,ho usato il seguente codice:
Private Sub elenconominativi_Click()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[nominativo_parte] = " & Chr$(34) & _
Me![Elenconominativi] & Chr$(34)
Me.Bookmark = rs.Bookmark
End Sub
Private Sub txtRicerca_Change()
Dim strR As String
Dim strSQL As String
strR = Me!txtricerca.Text
If Not IsNull(Me!txtricerca.Text) Then
    strSQL = "SELECT contatore, Nominativo_parte " & _
    "FROM [Archivio] " & _
    "WHERE (Nominativo_parte Like " & Chr$(34) & "*" & _
    strR & "*" & Chr$(34) & ");"
    Me!Elenconominativi.RowSource = strSQL
    Me!Elenconominativi.Requery
    Me!txtricerca = strR
    Me!txtricerca.SetFocus
    Me!txtricerca.SelStart = 255
End If
End Sub
ho notato adesso che se il testo di un record è identico ad un altro
record, selezionandolo non mi riporta a quel record ma al primo che ha lo
stesso nome.
Come potrei fare a selezionare il record giusto?
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:dss977$c0n$1...@news.newsland.it...

Per effettuare la gestione dei sinonimi una soluzione sia quella di
visualizzare l'esito della ricerca in una casella di riepilogo o in una
casella combinata nelle quali visualizzerai tutti i record sinonimi e dalle
quali selezionerai quello giusto.
Un soluzione del genere la trovi pubblicata sul Sito Comune (link qui
sotto), nella Sezione Forms, nella mia FAQ intitolata "3.114 Come creare un
controllo di ricerca (3)".
-- 
Roberto
-----------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
-----------------------------------------------

Roberto da casa ha scritto:


grazie roberto! vado subito a vedere!


 ha scritto nel messaggio


ho visto, funziona per la ricerca, ma se voglio selezionare un record
sinonimo e andarci sopra, come devo fare dato che se uso 
Private Sub elenconominativi_Click()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[nominativo] = " & Chr$(34) & _
Me![Elenconominativi] & Chr$(34)
Me.Bookmark = rs.Bookmark
End Sub
mi ritorna sul primo nominativo? e non sul sinonimo


 -- 


 > -- 


 ha scritto nel messaggio
news:dt1f6l$42h$1...@news.newsland.it...

Facendo riferimento all'esempio della FAQ 3.114 del Sito Comune, imposta a 1
la Colonna associata della casella di riepilogo, se non l'hai fatto aggiungi
al database i riferimenti alla libreria Microsoft DAO 3.6 quindi a fronte
dell'evento "Su clic" della casella di riepilogo elenconominativi prova a
generare il seguente codice VBA:
Private Sub elenconominativi_Click()
Dim rs As DAO.Rrecordset
Set rs = Me.RecordsetClone
rs.FindFirst "[nominativo] = " & Me![Elenconominativi]
Me.Bookmark = rs.Bookmark
End Sub
-- 


 End Sub
facendo riferimento sempre e solo alla faq del sito comune 3.114 e
seguendo i tuoi consigli mi ritrovo con il seguente codice
Private Sub elenconominativi_Click()
Dim rs As DAO.Recordset
Set rs = Me.RecordsetClone
rs.FindFirst "[nominativi] = " & Me![elenconominativi]
Me.Bookmark = rs.Bookmark
End Sub
Private Sub txtRicerca_Change()
Dim strR As String
Dim strSQL As String
strR = Me!txtricerca.Text
If Not IsNull(Me!txtricerca.Text) Then
    strSQL = "SELECT ID, Nominativi " & _
    "FROM [Archivio nominativi] " & _
    "WHERE (Nominativi Like " & Chr$(34) & "*" & _
    strR & "*" & Chr$(34) & ");"
    Me!elenconominativi.RowSource = strSQL
    Me!elenconominativi.Requery
    Me!txtricerca = strR
    Me!txtricerca.SetFocus
    Me!txtricerca.SelStart = 255
End If
End Sub
a questo punto se clicco su una voce dell'elenco risultante dalla casella
di riepilogo "elenconominativi" esce un messaggio di errore "errore di
run-time 3464 - tipo di dati non corrispondente nell'espressione criterio"
e viene evidenziata gialla in fase di debug la riga 
rs.FindFirst "[nominativi] = " & Me![elenconominativi]
dove stà l'errore? ho controllato le voci e mi sembra che corrispondono!


 ha scritto nel messaggio
news:dtcd1i$g2j$1...@news.newsland.it...

L'errore lho commesso io; prova così:
rs.FindFirst "[ID] = " & Me![elenconominativi]


 ha scritto nel messaggio



Roberto!
sei un fenomeno della natura!!
funziona egregiamente!
come sempre, non ho parole!
grazie
luigi


luigi onofrio ha scritto:





ah! dimenticavo!
Roberto , è possibile inserire questo tuo codice come upgrade dell'esempio
3.114 del sito comune? dato che lo ritengo molto interessante per la
comunità, non vorrei usufruirne solo io!
ciao


 ha scritto nel messaggio
news:dteds4$n78$1...@news.newsland.it...

Invia tu al Sito Comune il materiale di una nuova FAQ da pubblicare sul Sito
Comune.





ma è farina del tuo sacco! io non ne ho nessun merito, e poi cosa intendi
per materiale di una nuova FAQ? la faq già c'è, 3,114, diciamo che è un
upgrade!
luigi





Roberto! ho notato che se ID è un campo contatore o numerico la procedura
funziona, ma se è un campo testo (nel mio caso calcolato con
=IIf(DCount("[ID]";"archivio
nominativi")=0;"0000001";Format$(DMax("[ID]";"archivio
nominativi")+1;"0000000")) dà un messaggio di errore su rs
questo solo per fartelo sapere, io devo pensare come regolarmi  di
conseguenza o inserendo un altro contatore o qualche altro modo, non
vorrei perdere gli zeri iniziali al numero, che mi servono,


 ha scritto nel messaggio
news:dtethv$92h$1...@news.newsland.it...

E' chiaro che se il campo ID è di tipo Testo quella sintassi è sbagliata:
però stavamo discutendo l'esempio che ho pubblicato sul Sito Comune nel
quale il campo ID è di tipo Contatore.
Comunque, se come tu dici, è di tipo Testo, modifica la sintassi in questa
maniera:
rs.FindFirst "[ID] = '" & Me![elenconominativi] & "'"


 luigi
