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
Leia todos artigos da série
- Curso de dbExpress e DataSnap
- Curso de dbExpress e DataSnap - Parte II
- Curso de dbExpress e DataSnap - Parte III
- Curso de dbExpress e DataSnap - Parte IV
- Curso de dbExpress e DataSnap - Parte V
- Curso de dbExpress e DataSnap - Parte VI
- Curso de dbExpress e DataSnap - Parte VII
- Curso de dbExpress e DataSnap - Parte VIII
- Curso de dbExpress e DataSnap - Parte IX
- Curso de dbExpress e DataSnap - Parte X
- Curso de dbExpress e DataSnap - Parte XI
- Curso de dbExpress e DataSnap - Parte XII
- Curso de dbExpress e DataSnap - Parte XIII
- Curso de dbExpress e DataSnap - Parte XIV
- Curso de dbExpress e DataSnap - Parte XV
- Curso de dbExpress e DataSnap - Parte XVI
- Curso de dbExpress e DataSnap - Parte XVII
- Curso de dbExpress e DataSnap - Parte XVIII
- Curso de dbExpress e DataSnap - Parte XIX
- Curso de dbExpress e DataSnap - Parte XX
- Curso de dbExpress e DataSnap - Parte XXI
- Curso de dbExpress e DataSnap - Parte XXII
- Curso de dbExpress e DataSnap - Parte XXIII
- Curso de dbExpress e DataSnap - Parte XXIV
- Curso de dbExpress e DataSnap - Parte XXV
- Curso de dbExpress e DataSnap - Parte XXVI
- Curso de dbExpress e DataSnap - Parte XXVII
- Curso de dbExpress e DataSnap - Parte XXVIII
- Curso de dbExpress e DataSnap - Parte XXIX
- Curso de dbExpress e DataSnap - Parte XXX