SQLDataSet.commandText a partir do ClientDataSet/Provider

Delphi

16/06/2008

Preciso obter o commandText do SQLDataSet associado ao ClientDataSet

Tenho no DataModule remoto: rDM
- SQLDataset1. CommandText: ´Select * from Clientes´
- DataSetProvider1: AllowCommandText = False (propositadamente)

No DataModulo cliente: cDM
- ClientDataSet1. CommandText: ´´ (sem commandText). SQL estará sempre no SQLDataSet associado
- DataSource1

Preciso de uma rotina genérica para obter o CommandText do SQLDataSet associado ao ClientDataSet1/DataSetProvider1, algo do tipo

Function getCommandText( cds : TClientDataSet );
begin
if cds.CommandText <> ´´ Then
Result := cds.CommandText
else
...
Result := ?

Grato pela ajuda


Jbatista

Jbatista

Curtidas 0

Respostas

Comodelphi

Comodelphi

16/06/2008

no servidor (RDM): abrir a Type Library do RDM, adicionar uma interface e um método e implementar a solução;

no cliente: s := <Componente de Conexao>.AppServer.SeuMetodo(...);

Obs.: pra retornar string eu uso OleVariant.

.
.
.

só nao entendi o por q a sql no cliente?


GOSTEI 0
Jbatista

Jbatista

16/06/2008

Faltou uma explicacao:
Na realidade estou trabalhando em 2 camadas, mas já separando os DM´s para migrar em brave para 3, ou seja, no momento estou processando tudo localmente.
O DM local é para ser compartilhado com várias interfaces.
Necessito obter a sintaxa da SQL esta ficará no SQLDataSet associado via provider (nao fica no cds). Trabalho com mais de um DB, ex. Firebird e MySQL. Entao preciso pegar a SQL e converter a fim de manter a compatibilidade com o banco em uso em determinada instância.
Imagino algo assim:
Partindo do cds, obtenho o Provider, A partir do provider obtenho o SQLDataSet associado e aí obtenho o commandText.

Grato.


GOSTEI 0
Lucas Belo

Lucas Belo

16/06/2008

Você comseguiu fazer essa implementação sem ter que estender o componente?

Abraço!
GOSTEI 0
POSTAR