Por favor, esclarecer Cds_Tabela.state x Ds_Tabela.state

Firebird

19/11/2005

Olá!
Sou Desenv. D7 + IB/FB + DBExpress

Apenas queri esclarecer.
Qual a diferenca em usar:

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

(Ds_Tabela.DataSet as TClientDataset).ApplyUpdates(0);

E

Cds_Tabela.ApplyUpdates(0);

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

IF Ds_Tabela.State In [DsInsert,DsEdit] Then ...

E

IF Cds_Tabela.State In [DsInsert,DsEdit] Then ...

Desde já meus Agradecimentos.

ANT.CARLOS/SP


Ant.carlos/sp

Ant.carlos/sp

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

19/11/2005

[quote:a59e0ad953=´ANT.CARLOS/SP´]Qual a diferenca em usar:

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

(Ds_Tabela.DataSet as TClientDataset).ApplyUpdates(0);

E

Cds_Tabela.ApplyUpdates(0);[/quote:a59e0ad953]

No uso em si não há diferença. a diferença está no motivo do uso.
Cds_Tabela.ApplyUpdates(0); é um modo ´direto´ de acesso ao ClientDataset. você precisa conhecer o ClientDataset para fazer dessa forma.

(Ds_Tabela.DataSet as TClientDataset).ApplyUpdates(0); é um modo abstrato. você não sabe qual ClientDataset está ligado ao DataSource, mas pode fazer o typecasting para executar o ApplyUpdates.
é mais usado com heranças de formulários, onde o formulário padrão faz todo o tratamento pelo datasource de forma abstrata, sempre utilizando o typecasting na forma de [i:a59e0ad953](Ds_Tabela.DataSet as TClientDataset)[/i:a59e0ad953] ou [i:a59e0ad953]TClientDataset(Ds_Tabela.DataSet)[/i:a59e0ad953]. A explicação dessa técinica seria um pouco longa para esse tópico...

[quote:a59e0ad953=´ANT.CARLOS/SP´]IF Ds_Tabela.State In [DsInsert,DsEdit] Then ...

E

IF Cds_Tabela.State In [DsInsert,DsEdit] Then ...

Desde já meus Agradecimentos.

ANT.CARLOS/SP[/quote:a59e0ad953]

A diferença aqui é a mesma. O resultado será o mesmo, mas na primeira forma utilizada não se sabe - e não importa - à qual dataset o datasource está ligado; no segundo o acesso é feito diretamente ao ClientDataset.


GOSTEI 0
Ant.carlos/sp

Ant.carlos/sp

19/11/2005

:)
Sempre usei corretamente, mas não sabia a diferenca.
Obrigado pela artenção.
T+

ANT.CARLOS/SP


GOSTEI 0
POSTAR