Uma boa forma é sempre conduzir pesquisas com filtros e trabalhar este trafego 
de registros através do packagerecords. Uma outra forma é colocar a navegação 
de pais e filhos inerentes a sua vizualizaçào e acontecendo por demanda.

 

Eu estou com artigos na active Delphi desde a edição 74 sobre desenvolvimento 
comercial com Delphi e DataSnap, e um dos tópicos e o tratamento 
mestre-detalhe. No meu link de downloads tem alguns exemplos sobre isso, 
inclusive o exemplo do artigo e um vídeo do FDD 2008 onde mostro este e outros 
recursos do clientdataset: http://cc.embarcadero.com/author/795118

 

Abracos

 

Bruno

 

From: delphi-br@yahoogrupos.com.br [mailto:delphi...@yahoogrupos.com.br] On 
Behalf Of Eny Urias
Sent: terça-feira, 27 de julho de 2010 09:37
To: delphi-br@yahoogrupos.com.br
Subject: Res: [delphi-br] [CLIENTDATASET 3 TABELAS]

 

  

Não quero mesmo trazer "todos" os registros do pai... Mas, se o cliente quiser 
fazer uma simples pesquisa que me traga uns 50 registros... Mesmo assim eu nao 
quero trazer "tudo"...

Então eu estou fazendo assim: No evento AfterScroll do Pai eu fecho e abro o 
filho atraves do parametro enviado pelo pai... dessa forma ele só me traz os 
filhos do pai onde está o ponteiro.

Tem alguma idéia melhor? 
--
Eny Trova Urias

"Somos o que repetitivamente fazemos, portanto, a excelência não é um feito, 
mas 
um hábito"- Aristóteles

________________________________
De: Fabricio Colombo <fabricio.colombo....@gmail.com 
<mailto:fabricio.colombo.mva%40gmail.com> >
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> 
Enviadas: Terça-feira, 27 de Julho de 2010 9:01:07
Assunto: Re: [delphi-br] [CLIENTDATASET 3 TABELAS]

Mais isso não é uma falha, ele foi feito pra trabalhar assim, aliás, não
conheço nenhum DataSet que faça diferente. O que vc queria é que ele fizesse
*Lazy Loading*.
** <http://en.wikipedia.org/wiki/Lazy_loading>Na minha opnião, quase nunca é
viável carregar todos os dados do pai, principalmente se utilizar DataSnap,
e portanto, isso foi abolido no nosso sistema.

Por exemplo, de acordo com o cliente, a mesma tabela PAI pode variar de 10
mil até mais de 4 milhões de registros, então temos que fazer o sistema
pensando no cliente de 4 milhões. Não é viável abrir a tabela inteira,
mesmo que ele não tivesse filhos, por isso o usuário consulta apenas um
registro por vez, e é o suficiente, ele não precisa de todos os registros.

Nosso sistema nem tem navegador de registros e isso não dificulta o trabalho
do usuário, pois vc tem que suprir essa "limitação" com pesquisas mais ricas
e agéis.

Pense um pouco na escalabilidade do sistema. E se o seu usuário abrir essa
tabela de 100.000 e clicar para ir ao último registro? Ele não vai trazer
todos os registros da mesma maneira, só que de modo mais custoso?

Como vc controla a transação, visto que aparentemente vc não usa mais Nested
Datasets?

Abraços,

Fabricio

Em 26 de julho de 2010 19:45, Eny Urias <enyur...@yahoo.com.br 
<mailto:enyurias%40yahoo.com.br> > escreveu:

>
>
> Vamos fazer o seguinte....
>
> Utilize uma ferramenta tracer e depois me fala o que acontece no momento em
> que
> vc abre o cds Pai.
>
> No meu acontece assim: vamos imaginar uma tabela pai com 100.000
> registros... E
> uma tabela filho com 10 itens para cada pai... Então o programa vai trazer
> na
> memória 1.000.000 certo?
>
> Eu quero carregar todos os registros do cds pai e, somente trazer os do
> filho,
> quando o ponteiro estiver no pai.. entendeu? Foi aí que eu comecei a
> utilizar o
> evento AfterScroll...
>
>
> --
> Eny Trova Urias
>
> "Somos o que repetitivamente fazemos, portanto, a excelência não é um
> feito, mas
> um hábito"- Aristóteles
>
> ________________________________
> De: Andre Yahoo <gyncow...@yahoo.com.br <mailto:gyncowboy%40yahoo.com.br>  
> <gyncowboy%40yahoo.com.br>>
>
> Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>  
> <delphi-br%40yahoogrupos.com.br>
> Enviadas: Sábado, 24 de Julho de 2010 20:33:03
> Assunto: Re: Res: [delphi-br] [CLIENTDATASET 3 TABELAS]
>
> Cara Eny,
>
> Não entendi o porque do problema, uma vez que ao carregar o registro
> pai, você vai estar filtrando ele, o que retornará para o registro
> mestre somente um registro, já para o filho você estará retornando todos
>
> os detalhes que estão vinculados com este registro mestre.
>
> Mas você disse: "quando o CDS carrega os registros do Master, ele tras
> também, para cada registro pai, todos os registros do filho", quer dizer
> que estava retornando todos os mestres ? Para a programação C/S você
> retorna somente um registro mestre, que é o que o usuário vai trabalhar
> nele, não precisa retornar todos os registros. Se era essa a situação, o
>
> problema era estrutural e com erro de programação, não do componente ou
> da maneira com os mesmos eram usados.
>
> Se não for isso que acontecia e puder explicar melhor, pois acho que
> muitos como eu podem não ter entendido a situação que ocorria muito bem.
>
> Atenciosamente,
>
> André Luis da Silveira
>
> Siagri - Sistemas de Gestao Ltda.
>
> __________________________________________________
> Fale com seus amigos de graça com o novo Yahoo! Messenger
> http://br.messenger.yahoo.com/
>
> [As partes desta mensagem que não continham texto foram removidas]
>
> 
>

[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

[As partes desta mensagem que não continham texto foram removidas]



 

Click here 
<https://www.mailcontroller.altohiway.com/sr/8GD0+!7FazfTndxI!oX7UnlPSUZHzmrIv87QlqbO1oW0pif+!yn+8LMnkGnku+LrnRTBxvdS5uLX9jTmmkEZ8A==>
  to report this email as spam.

This message has been scanned for viruses by MailController 
<http://www.MailController.altohiway.com/> .



[As partes desta mensagem que não continham texto foram removidas]

Responder a