Fórum Capturar SQL de componentes da Dbexpress #280414

06/05/2005

0

Bom dia estou fazendo uma rotina de Filtro padrão para os meus formulário e estou com um problema para Capturar O texto sql de um componente SQLquery e SQLDataSet. No caso não estou conseguindo voltar até a origem do sql. Exemplo para eu descobrir o SQL basico onde os componentes estão dispostos da seguinte maneira:

SQLQuery linkado ao DataSetProvider que esta linkado ao ClientDataSet isto no DataModule.
no formulário o DataSourde linkado ao ClientDataSet.
variaveis :

vFields := pDataSource.DataSet;
vSQLtext := TSQLQuery(TDataSetProvider (TClientDataSetvFields).ProviderName).DataSet).slq.Text;

verifique que até o DataSetProvider eu consigo cheqar mas não consigo ir até o sql.text.
Fazendo isto eu pegarei o sql basico quando clicar no formulário eu farei o filtro utilizando como parâmetro os dbedits que o usuario informar.
se alguém puder me informar como conseguir retornar até o sql basico com informei acima. Obrigado.

Vanilson


Vanilsonvjm

Vanilsonvjm

Responder

Posts

08/05/2005

Programaker

Isso acontece porque o provider se liga ao ClienteDataset pela propriedade providerName, que é uma String e não uma referência. isso acontece por causa do esqueminha de multicamadas, onde o provider eo c.d.s podem estar em processos diferentes, onde ligá-los por referência não faz sentido.

Pra chegar no SQLQuery, você precisa começar sua jornada a partir do provider, porque esse sim estará ligado à query através de uma referência.

Mas se você tem SQLQueries e SQLDataSets no programa, cuidado com o código do typecast ali! lembre-se que o SQLDataSet tem CommandText (String) e não SQL (TStrings ou TStringList, num lembro...). Eu já tive dores de cabeça com isso. Escolha um dos dois e defina-o como padrão, para oder tratá-los da mesma forma.

Se for mudar o SQL do componente em tempo de execução, escolha a SQLQuery. Eu já tive problemas tentando mexer no ComandText uma vez, porque todas as configurações dos parâmetros se perdem. A Query é mais estável, não tem frescura quanto a isso

Já vou indo; espero ter ajudado!


Responder

Gostei + 0

09/05/2005

Vanilsonvjm

Agradeço a sua ajuda foi muito boa. Obrigado!
Eu estava achando que pelo fato do ClientDataSet linkar ao DataSetProvider teria uma outra propriedade que me retorna-se o DataSetProvider linkado a ele. pois se existisse eu so passaria o componente DataSource do Formulário e faria o filtro do SQL automáitcamente. Más vou tentar fazer esta forma que você me passou.

Obrigado.
Vanilson


Responder

Gostei + 0

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

Aceitar