Fórum Duvida com DbGrid #361734
28/07/2008
0
Eu tenho em meu programa um ClientDataSet con todas as cidades de brasil. Entre os campos do ClienteDataSet eu tenho a que estado essa cidade pertence.
Tenho tambem um dbgrid conectado com esse ClientDataSet de Cidades, sera que eu posso filtrar as cidades que vao aparecer no dbgrid pelo campo estado?? que so apareçam as cidades de un determinado estado.
Desde ja agradeço sua ajuda.
Eduardocar83
Curtir tópico
+ 0Posts
28/07/2008
Marco Salles
cds.close; cds.Filter:=´EstadO like ´+QuotedStr(´¬´+edit1.text); cds.Filtered:=true; cds.Open; showmessage(cds.Filter);
ou assim
cds.close; cds.Filter:=´EstadO = ´+QuotedStr(edit1.text); cds.Filtered:=true; cds.Open; showmessage(cds.Filter);
ou assim
cds.close; cds.Filter:=´EstadO like ´+QuotedStr(´¬´+AnsiUpperCase(edit1.text)); cds.Filtered:=true; cds.Open; showmessage(cds.Filter);
nos Tres casos é casesensitive .... se quiser Desconsiderar Maiscula de Minuscula tem que usar o evento FilterRecord e fazer codificação
extra ... Com a propriedade fielter , não me recordo de ter esta
possibilidade ...
Gostei + 0
28/07/2008
Eduardocar83
Sera que tenho que utilizar um ClientDataSet adicional para filtrar os dados, e desse jeito naum ter que trazer os dados denovo do server??
Vc saberia me disser como se conectan dois ClientDataSet, pra um filtrar os dados do outro??? muitao obrigado, amigo.
Gostei + 0
28/07/2008
Marco Salles
sim , tem o [b:55d4caba8f]clonecursor[/b:55d4caba8f] ...
Assim
clonecds.CloneCursor(SeuClientDataset,true);
Ligue um DataSource e um DataSet a Este cloneCds;
e faça :
clonecds.close; clonecds.Filter:=´Estado like ´+QuotedStr(AnsiUpperCase(edit1.text)+´¬´); clonecds.Filtered:=true; clonecds.open;
p:s
Veja a diferença , fundamental neste caso
clonecds.CloneCursor(SeuClientDataset,true); showmessage(clonecds.ProviderName); e clonecds.CloneCursor(SeuClientDataset,false); showmessage(clonecds.ProviderName);
portanto o segundo parametro deve ser true neste caso ...
Gostei + 0
28/07/2008
Eduardocar83
Dae eu acho que ele atualiza os dados desde o servidor o qual eu nao quero (tenho cdsCidades+dspCidades+sqlConection).
Depois pesquisando um pouco mais, vi que nao e necessario fechar e abrir o cdsCidades para filtrar, e so colocar a propriedade cdsCidades.filtered := True. Assim ele limita a visibilidade dos registros de acordo com o cdsCidades.filter := ´ xxxxxx ´;
Valeu amigo, tem me ajudado muito suas dicas. Obrigado.
Gostei + 0
28/07/2008
Eduardocar83
Gostei + 0
28/07/2008
Marco Salles
amigo , tem mais coisas entre o ceu e a terra e etc...
eu não abri e fechei o cds para ele simplesmente filtrar não
eu abri e fechei o cds para mudar em rum time [b:210a2976ae]o valor do filtro ...[/b:210a2976ae]coisa que voce não consegue faze-lo com ele aberto ....
Agora se voce quiser em designer , pode colocar um filtro (FIXO) lá e depois é so habilitar a propriedade Fieltered
Se eu soubesse que voce queria so isso .....
Gostei + 0
28/07/2008
Marco Salles
Errata ... fiz ums teste aqui e veifiquei que para mudar o valor do Filtro em Rum Time , basta fazer cds.Filtered:=false; e alterar
cds.Filtered:=false; cds.Filter:=edit1.text+´ Like´+QuotedStr(edit2.Text+´¬´); cds.Filtered:=true;
p:s .. Edit1.text é o Nome do campo ... Assim voce pode criar vários
filtros em Rum Time
Eu não sei se o codigo inicial aonde tinha o close e o open foi um codigo
meu do mybase que eu peguei etc... Mas sua obeservação foi persistente e muito bem colocada ...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)