Fórum Como mudar SQL dinamicamente de um WebService #244468

26/07/2004

0

Olá pessoal

tenho a seguinte arquitetura...

um SOAP Server Application com um Soap DataModule, com uma query (qryPessoa) e um datasetprovider (dspPessoa), corretamente ligados e realizando o seguinte comando SQL: ´SELECT * FROM TAB_PESSOA´.

E uma aplicação cliente que faz as operações (insert, update, delete), utilizando um clientdataset.

Até aqui tudo funciona corretamente!

Meu problema é quando tento realizar uma pesquisa sobre o ClientDataSet, considerando que minha tabela possui um tamanho razoável, e o banco estara diposnivel num servidor fora da empresa, seria interessante otimizar o result set... para isso eu deveria alterar a query e carregar novamente o clientdataset...

ai está o problema... eu até (em tese) consigo alterar o sql de minha qryPessoa, porém ao recarregar o clientdataset, o resultado esperado não ocorre... o que temos é o comando sql antigo (´SELECT * FROM TAB_PESSOA´), e infelizmente isto nao me atende... :o(

alguém saberia de orientar para solucionar este problema???

tipo... gostaria de passar inicialmente o comando
select * from tab_pessoa where nom_pessoa like ´¬Daniel¬´ . Por exemplo!

[]s[color=darkblue:0778a0cc6f][/color:0778a0cc6f]


Danielnascimento

Danielnascimento

Responder

Posts

26/07/2004

Rômulo Barros

[color=red:b7b989dbd1][b:b7b989dbd1]Respondendo:[/b:b7b989dbd1][/color:b7b989dbd1]
Altere a propriedade do DataSetProvider Options[poAllowChangeCommandText] para True e siga os passos:

SqlQuery.Sql.Clear;
ClientDataSet.CommandText := ´Novo Select´ ;
ClientDataSet.Open();


Quando vc abre o ClientDataSet, o conteúdo da sua propriedade COMMANDTEXT apenas será executado se não houver nenhuma outra instrução SQL na propriedade Sql da SqlQuery. Por isso é que deveremos limpar o SQL da SqlQuery. Também é por isso que o propriedade Options[poAllowChangeCommandText] do DataSetProvider vem por default o valor ´False´

:lol: :lol: :lol:


Responder

Gostei + 0

26/07/2004

Danielnascimento

:D Ok obrigado... estarei implementando as alterações sugeridas e fazendo os devidos testes...


porem vc saberia me explicar o pq, de qdo eu utilizo um clientdataset, com uma tsqlquery, e um datasetprovider numa aplicação local e altero q query funciona... :oops:

Abraços e muito obrigado!


Responder

Gostei + 0

27/07/2004

Danielnascimento

o que aconteceu... minha query esta no servidor da aplicação e nao tem como acessá-la diretamente... vc teria alguma outra sugestão?

[]s
Daniel


Responder

Gostei + 0

27/07/2004

Rômulo Barros

:D Ok obrigado... estarei implementando as alterações sugeridas e fazendo os devidos testes... porem vc saberia me explicar o pq, de qdo eu utilizo um clientdataset, com uma tsqlquery, e um datasetprovider numa aplicação local e altero q query funciona... :oops: Abraços e muito obrigado!


Supondo PoAllowChangeCommandText do DataSetProvider como True, temos:

Se a propriedade Sql do TSqlQuery estiver vazia, será válido o q estiver na propriedade CommandText do ClientDataSet. Se Sql não estivar vazio, será válido a TsqlQuery.


Responder

Gostei + 0

10/05/2005

Fr3dll

Mas quando utilizo o command text para definir a SQL e faço alguma lateração nos dados (inclusão, exclusão, edição), elas nao sao alteradas depois do ApplyUpdates, como corrigir isso?


Responder

Gostei + 0

11/05/2005

Fr3dll

SOBE


Responder

Gostei + 0

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

Aceitar