Fórum CommandText do ClientDataSet #299385

14/10/2005

0

como funciona a propriedade CommandText do ClientDataSet?

que tipo de instrução SQL posso usar?


Raserafim

Raserafim

Responder

Posts

14/10/2005

Joaoshi

Colega,

Estando o ClientDataSet ligado a um DataSetProvider você faria consultas do tipo
SELECT * FROM CLIENTES WHERE CODIGO < 100

No DataSetProvider a opcao poAllowCommandText deve estar true;

Espero ter ajudado.


Responder

Gostei + 0

14/10/2005

Gabriel.elessar

Primeiro você tem que abilitar essa opção no Provider (opcoes (allow command text)) ate onde eu usei pode se usar tds as opcoes de consulta...

where - max - min - between - order - sum - inner join

Axo q é isso


Responder

Gostei + 0

18/10/2005

Raserafim

valeu pessoal.

mas estas instruções SQL vão pesquisar os dados apenas no DataSet do ClientDataSet, ou vai buscar os dados na tabela?


Responder

Gostei + 0

18/10/2005

Bruno Belchior

busca normalmente os dados da tabela, se vc não adicionar os field´s no seu field editors, vc pode trazer outras informações (colunas) sem problemas...


Responder

Gostei + 0

18/10/2005

Davicarrano

Estas instruções SQL não são executadas no Dataset do ClientDataSet, porque o component CLientDataSet em si não interpreta uma instrução SQL... quando vc seta a propriedade do DataSetProvider poAllowCommandText para true vc ta dizendo que a instrução SQL a ser enviada para o banco será passada no clientdataset e não no component SQLDataSet, no caso de estar usando o DBEXpress.... quando utilizar esta arquitetura desta maneira, sempre tenha atenção de estar setando tb a propriedade ProviderFlags dos campos identificando quais sao campos chaves, para evitar que o DataSetProvider não reconheça estes campos na hora de montar os pacotes de gravação... se quiser mais informações sobre isto dá um tok.... o q tiver ao meu alcance.....


Responder

Gostei + 0

19/10/2005

Raserafim

valeu Bruno, e valeu davicarrano pela atenção, e acho q vou precisar de alguma ajuda sim... alguma ideia....

tenho uma consulta SQL bem complexa que agrupa valores... soma... conta... mas como os dados atualizados estão no ClientDataSet (não quero e nem posso passar as atualizações para a base) queria que esta consulta pesquisasse os dados no ClientDataSet. Será que consigo fazer essa pesquisa de alguma forma?


Responder

Gostei + 0

19/10/2005

Bruno Belchior

queria que esta consulta pesquisasse os dados no ClientDataSet
você gostaria de dar ´outro select´ no Result Set q está no cache do CDS? Se sim isso (pelo menos q sei) é impossível, o q vc pode fazer é usar o método Locate q não é do CDS e sim do TDataSet...
CDS.Locate(´Codigo;Nome´, VarArrayOf([1, ´Teste´]), []);



Responder

Gostei + 0

25/10/2005

Raserafim

era exatamente isso, queria dar um ´outro select´ no Result Set q está no cache do CDS. mas tudo bem, blz.

mas então qual a diferença e/ou a vantagem de utilizar o campo CommandText ao invés de uma query?


Responder

Gostei + 0

25/10/2005

Bruno Belchior

mas então qual a diferença e/ou a vantagem de utilizar o campo CommandText ao invés de uma query?
A mesma de utilizar CDS... Trabalhar em cache...


Responder

Gostei + 0

27/10/2005

Raserafim

talvez minha pergunta tenha sido insuficiente:...

qual a diferença e/ou a vantagem de utilizar o campo CommandText do ClientDataSet ao invés de a consulta diretamente na query sendo acessada pelo ClientDataSet > DataSetProvide > Query?


Responder

Gostei + 0

27/10/2005

Bruno Belchior

*Acredito* que de maneira técnica e performace, nenhuma... porém uma possível migração para aplicações com mais de duas camadas, seria impossível acessar diretamente uma consulta...


Responder

Gostei + 0

27/10/2005

Rômulo Barros

Tem um detalhe: Se a propriedade SQL da query possuir alguma instrução e a propriedade COMANDTEXT do ClientDataSet também possuir instrução, o retorno será a execução da instrução q está na query.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar