Curso de dbExpress e DataSnap

Parte XVIII – CommandText

Neste artigo, veremos como usar a propriedade CommandText do ClientDataSet. Ela permite que você repasse comandos SQL a partir de uma camada cliente em um cenário multicamadas, dando maior flexibilidade a sua solução. Ideal para reaproveitamento de código e componentes, pois podemos usar um único par “DataSetProvider / ClientDataSet” para executar uma série de consultas no BD.

Configure uma conexão dbExpress para o banco EMPLOYEE do Interbase. Coloque um SQLConnection apontando para essa conexão. Coloque também um SQLQuery, um DataSetProvider, um ClientDataSet, um DataSource, um DBGrid, um Button e um Memo. Configure os componentes conforme o código a seguir:

 

  object DBGrid1: TDBGrid

    DataSource = DataSource1

  end

  object DataSource1: TDataSource

    DataSet = ClientDataSet1

  end

  object ClientDataSet1: TClientDataSet

    ProviderName = 'DataSetProvider1'

  end

  object DataSetProvider1: TDataSetProvider

    DataSet = SQLQuery1

  end

  object SQLQuery1: TSQLQuery

    SQLConnection = SQLConnection1

  end

  object SQLConnection1: TSQLConnection

    ConnectionName = 'EMPLOYEE'

    LoginPrompt = False

    Connected = False

    KeepConnection = False

    Params.Strings = (

      'DriverName=Interbase'

      'Database=C:\Borland\InterBase\examples\database\employee.gdb'

      'User_Name=sysdba'

      'Password=masterkey'

      'ServerCharSet=WIN1252'

      'SQLDialect=3')

  end

 

Seu formulário deve estar semelhante ao mostrado a seguir:



Figura 1.

O código do botão Executar é mostrado a seguir:

 

procedure TFrmMain.BitBtn1Click(Sender: TObject);

begin

  ClientDataSet1.Close;

  ClientDataSet1.CommandText := Memo1.Lines.Text;

  ClientDataSet1.Open; 

end;

 

Observe que aqui repassamos a instrução SQL digitada no memo para a propriedade CommandText do ClientDataSet, e não para o SQLQuery. O CDS se encarregará de enviar isso ao DataSetProvider, que vai repassa-la ao cursor dbExpress associado e executar o comando no BD. Você pode, até mesmo, passar parâmetros (Params) no ClientDataSet.

No evento OnCreate do form, configuramos a propriedade Options do DataSetProvider para incluir o AllowCommandText, que deve estar True. Isso indica ao DSP que o mesmo pode receber comandos SQL a partir do CDS:

 

procedure TFrmMain.FormCreate(Sender: TObject);

begin

   DataSetProvider1.Options := [poAllowCommandText];

end;

 

Essa configuração também pode ser feita diretamente no Object Inspector:

 

Figura 2.

 

Executando a aplicação, temos o resultado mostrado a seguir:

 

Figura 3.

 

Download

Você pode fazer download de todos os exemplos deste curso a partir do endereço http://cc.borland.com/Author.aspx?ID=222668. É preciso fazer o cadastro na BDN, que é gratuito e pode ser feito a partir do endereço http://bdn.borland.com

 

dbExpress, DataSnap e ClientDataSet: Técnicas Avançadas

Para mais informações sobre acesso a dados no Delphi e técnicas avançadas, sugiro a leitura do meu livro, “Delphi: Programação para Banco de Dados e Web”, como apoio para o aprendizado das tecnologias. Na obra mostro várias técnicas introdutórios e avançadas de desenvolvimento com ClientDataSet, dbExpress e DataSnap (multicamadas, incluindo SOAP e COM+). Para mais informações, consulte o link http://www.clubedelphi.net/guinther

Leia todos artigos da série