Newsgroup: it.comp.lang.visual-basic
Titolo: Selezione di una riga di un dbGrid

Caio, Qualcuno sa dirmi se è possibile e come fare per selezionare le righe
di un dbGrid man mano che si scrive all'interno di una text box?
Sto cercando di fare una ricerca/selezione rapida per posizionarsi sul
record interessato.
Grazie

 ha scritto

non hai detto se stai usando dao, ado o cosa.
"man mano che si scrive" lo puoi fare, se la tabella e' grossa, solo
usando gli indici e i seek. quindi dao.
se non hai molte righe, puoi provare con findfirst.
in tutti e due i casi guarda la guida. per l'uso di seek da me c'e' del
codice vecchiotto che pero' magari uno spunto te lo puo' dare: vbtrix.
se devi usare le query sql, non so se riesci a farlo "man mano", nel
senso che se scrivi r-o-s-s-i e il db deve eseguire una query tipo
    select * where cognome like trim(txtSearch) & "*"
per ogni lettera che inserisci in txtsearch,
o hai un pc a 5 terahz (e ovviamente il db su ram) o sei mooolto lento a
scrivere :)
ciao, a.
--
andrea....@tin.it
http://www.comune.modena.it/cittadini/apal

gianni ha scritto nel messaggio <WoWg7.24$Ua5.889@psinet-eu-nl>...

Se usi ADODC :
rsADODC.Recordset.Filter = "<NomeCampo> = <Stringa>" 
opp.
rsADODC.Recordset.Filter = "<NomeCampo> Like <Stringa>" & "%"
Ciao
Franco
-- 
Inviato il gio 23 ago 2001 08:53:10 CEST da 62.110.32.33 [62.110.32.33]
http://www.neuromante.net/


"man mano che si scrive" lo puoi fare, se la tabella e' grossa, anche
usando .find, quindi Ado.   :-P
p.es
With rsMio
       .MoveFirst
       .Find "RAGSOC LIKE '" & sMiaStringdiRicerca & "*'"
End With
ciao
ugo
p.s.
La polemica Dao/Ado con Pal mi diverte quasi più di quella Vb/Delphi con
Roal...     :))))))

 rsADODC.Recordset.Filter = "<NomeCampo> Like <Stringa>" & "%"
non conosco ado e, interessandomi parecchio proprio questa possibilita',
chiedo:
su una tabella con parecchie righe (diciamo 50-100k), questo metodo
riesce a riempire la griglia _man mano_ che si scrive ?
in sostanza dovrebbe dare
    text = R ---> tutte le righe R*
    text = RO ---> tutte le righe RO*
    text = ROS ---> tutte le righe ROS*
    text = ROSS ---> tutte le righe ROSS*
    text = ROSSI ---> tutte le righe ROSSI*
mi piacerebbe molto fosse possibile...
grazie, a.

 ha scritto nel messaggio
news:WoWg7.24$Ua5.889@psinet-eu-nl...

Con DAO Reimposterei il Recordsource collegato al dbGrid con una query ad
ogni variazione del contenuto del text
questo esempio dovrebbe selezionare tutte le righe al campo oggetto
contengono il testo digitato in text1
MySQLProto = "select * from tabella where  InStr(1,[Oggetto]," + Chr(34) +
Trim(Text1.Text) + Chr(34) + ")>0 "
datPrimaryRS.RecordSource = MySQL
datPrimaryRS.Refresh
non credo sia conveniente su grossi database
ciao stefano

 Roal...     :))))))
polemica.. polemica.. non puoi paragonare mele e pere, no ? :)
diciamo che si tratta di passioni dure a cedere il passo...
hai risposto a una domanda prima che la postassi, si vede che ado rende
un po' chiaroveggenti :))
pero' parlandone con alfonso, avevo avuto un'impressione diversa. almeno
con tabelle di alcuni mln di righe.
o almeno, da quanto ho capito sul filter, ci sono limiti molto forti
rispetto al seek.
hanno migliorato tanto l'efficienza ? con i vecchi metodi, tra findfirst
e seek non c'e' confronto.
d'altronde, se ado ha reintrodotto indici e seek, sara' solo per
nostalgia ? il prossimo passo sara' un ado a 16 bit ? :)
cmq la tua risposta mi consola almeno un po'. diciamo che stai cercando
di indorarmi l'inevitabile pillolona che dovra' installarmi :)
in realta' sto temporeggiando sperando che arrivi presto .net e cambi di
nuovo tutto, cosi' salto una classe, e tanto peggio per i primi della
classe della vecchia innovazione !
ciao, a.

...

Yesssss !!!!
Io l'ho usato con ComponentOne dbGrid 7 e ADODC.
Funziona egregiamente.
All'apertura della finestra carico tutti i dati della tabella (~7000
record) per poi filtrarli in base ad un  textbox e la colonna selezionata.
All'evento Change del TextBox -->   CambiaWhere TextBox.Text
E la funzione CambiaWhere utilizza 
rsADODC.Recordset.Filter = "<NomeCampo> Like <Stringa>" & "%".
A parte la lentezza del caricamento iniziale dei dati (non eccessiva se
lavori su un PIII 1000Khz),la .Filter lavora sui dati del recordset (in
locale).
Ciao
Franco
-- 
Inviato il gio 23 ago 2001 10:04:03 CEST da 62.110.32.33 [62.110.32.33]
http://www.neuromante.net/

 Franco
non ho piu' scuse :) (*)
grazie, a.
(*) non ho neanche un p3/1ghz :))


Con l'arrivo di Net (spero che Roal non mi legga...), temo dovrò abbandonare
Vb...
ciao
ugo

 Vb...
no, figurati. sarai ancora li' cioe' qui. tutto il pregresso dovrai pur
gestirtelo. o pensi di fare al solito modo:
    cliente: buongiorno, qual buon vento ?
    ugo: ci sono novita' !
    cliente: di che tipo ?
    ugo: deve cambiare tutto il suo s.i. !
    cliente: [censored]
:)
quanto a roal, sull'abbandonare vb, non credo sara' lui a piangere...
potresti anche baloccarti un attimo con delphi + interbase, no ?

 :)
Beh, diciamo che [censored] sarebbe cmq un eufemismo...!!!
ciao
ugo