Newsgroup: it.comp.lang.visual-basic
Titolo: Di alcune domande, la prima.. Datagrid

Ciao,
iizio questa "sessione" di domande con una semplice semplice.
Dato un recordset rsMioRecordSet in ADO, dato su un form una DataGrid
dgMiaGriglia...
perche'
Set dgMiaGriglia.DataSource = rsMioRecordSet
va in errore?
Grazie ( ed una)
Maurizio
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 va in errore?
Ora tocca a me: quale errore?
-- 
ciao, hal

 Ora tocca a me: quale errore?
...
e pure tu hai ragione :-)
Non l'ho scritto subito perche' non avevo a portata di mano il nb e non
volevo scrivere una cosa per un'altra... cmq. gia' che mi dici cosi', vuol
dire che non ho scritto una enorme cavolata :-)
Dunque, nell'evento Form_Activate()
   Set dgMiaGriglia.DataSource = rsMioRecordSet
con il recordset popolato, l'errore restituito e':
Errore di run-time '7004':
Impossiboie assegnare segnalibri al grupo di righe.
Quella indicata e' l'unica istruzione del form
L'errore lo da quando apro il recordset come adOpenDynamic, se invece apro
come adOpenStatic, non restituisce l'errore ma cmq. non popola la griglia.
Idee?
Ciao ed ancora grazie... Maurizio


 Idee?
adOpenStatic va bene, meglio ancora se adOpenKeyset.
cio` che non imposti ancora probabilmente la CursorLocation, che deve
essere adUseClient (di default e` adUseServer).
come puoi facilmente immaginare, per popolare la griglia devi far
pervenire tutte le righe sul client.
-- 
ciao, hal

 pervenire tutte le righe sul client.
...
Fatto, ma nulla.
Quali sono i passaggi per popolare una griglia?
Apro il recordset, imposto la proprieta' DataSource della griglia al
recordset stesso... e gia' qui dovrei avere il popolamento.. giusto?
Niente!!!
Ho anche provato ad impostare...
dgMiaGriglia.Colums(0).DataField = "Campo" (non c'e' bisogno di
specificare il recordset, gia' lo ha... giusto?)
Zero carbonella! Ufff
Ciao... Maurizio


 Zero carbonella! Ufff
Sě, c'č il trucco:
    Set DataGrid1.DataSource = MyRecordset
    DataGrid1.ClearFields  ' Ripulisce dalle impostazioni
    DataGrid1.ReBind       ' Assegna le nuove impostazioni delle colonne
Ciao 

 Sě, c'č il trucco: [...]
...
Ok, ora provo, e se va tutto ok, preparo le alrte domande che avevo in
serbo (ora...se qualcuno fa la battutaccia che queste erano in
italiano...!!! :-) )
P.s.
stavo vedendo anche la DataList... stesso trucchetto?


Mi accodo qui visto che e' l'ultima risposta che ho avuto che mi ha
portato al funzioamento del tutto.
La griglia si popola, ed e' ok.
Ho inserito una TextBox e nell'evento TxtMioTesto_Change() ho inserito
questa istruzione:
if txtMioTesto.Text ="" then rsMioRescordset.Filter ="" else _
 rsMioRecordset.Filter = "nome like '*" & txtMioTesto.Text & "'"
Lo scopo e' chiaro... visualizzare sulla griglia solo i record che hanno
il campo nome che inizia come il testo della TextBox.
Se immetto un testo nella casella, effettivamente il recordset viene
filtrato, la griglia si popola nella maniera corretta e tutto va bene;
anche se cancello una o piu' lettere della casella di testo, ad esempio
passo da Mauri a Maur, Mau, Ma, M funziona tutto egreggiamente e la
griglia si ripopola con tutti i record che soddisfano la richiesta.
L'unico problema viene quando reimposto il filtro del recordset a "", il
recordset torna a contenere tutti i record, ma la griglia resta vuota;
l'unico modo che ho di ripopolarla e' quella di riassegnare la proprieta'
DataSource della griglia al recordset
Set dgMiaGriglia.DataSource = rsMioRecordSet
E' normale tutto cio' o mi sfugge qualche cosa?
Ciao e grazie... Maurizio
