CommandText do ClientDataSet
como funciona a propriedade CommandText do ClientDataSet?
que tipo de instrução SQL posso usar?
que tipo de instrução SQL posso usar?
Raserafim
Curtidas 0
Respostas
Joaoshi
14/10/2005
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.
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.
GOSTEI 0
Gabriel.elessar
14/10/2005
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
where - max - min - between - order - sum - inner join
Axo q é isso
GOSTEI 0
Raserafim
14/10/2005
valeu pessoal.
mas estas instruções SQL vão pesquisar os dados apenas no DataSet do ClientDataSet, ou vai buscar os dados na tabela?
mas estas instruções SQL vão pesquisar os dados apenas no DataSet do ClientDataSet, ou vai buscar os dados na tabela?
GOSTEI 0
Bruno Belchior
14/10/2005
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...
GOSTEI 0
Davicarrano
14/10/2005
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.....
GOSTEI 0
Raserafim
14/10/2005
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?
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?
GOSTEI 0
Bruno Belchior
14/10/2005
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´]), []);
GOSTEI 0
Raserafim
14/10/2005
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?
mas então qual a diferença e/ou a vantagem de utilizar o campo CommandText ao invés de uma query?
GOSTEI 0
Bruno Belchior
14/10/2005
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...GOSTEI 0
Raserafim
14/10/2005
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?
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?
GOSTEI 0
Bruno Belchior
14/10/2005
*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...
GOSTEI 0
Rômulo Barros
14/10/2005
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.
GOSTEI 0