Curso de dbExpress e DataSnap
Parte X – UpdateStatus
Este exemplo mostra como utilizar as propriedades UpdateStatus e UpdateFilter do ClientDataSet. Enquanto o State indica o estado de um DataSet inteiro, UpdateStatus representa o estado atual de um registro. StatusFilter permite exibir filtrar os registros de acordo com seu estado.
Inicie uma nova aplicação Delphi VCL e coloque no formulário principal um ComboBox e um ClientDataSet. Dê um clique de direita no ClientDataSet, escolha Load from MyBase Table e abra o arquivo Customer.XML, localizado nos demos do Delphi, por padrão no diretório:
C:\Arquivos de programas\Arquivos comuns\Borland Shared\Data
Adicione os TFields no DataSet e adicione um campo calculado, chamado STATUS, conforme mostrado a seguir:
Figura 1.
Arraste os campos para o formulário para criar os controles Data-Aware. Coloque também um DBNavigator apontando para o DataSource.
Seu formulário deve estar semelhante ao mostrado a seguir:
Figura 2.
No OnCreate do form, digite:
uses TypInfo;
...
procedure TFrmMain.FormCreate(Sender: TObject);
var
i : integer;
begin
for i := 0 to 3 do
ComboBox1.Items.Add(GetEnumName(TypeInfo(TUpdateStatus),I));
ComboBox1.Items.Add('Todos');
end;
Isso preenche o Combo com os possíveis valores para a enumeração TUpdateStatus:
TUpdateStatus = (usUnmodified, usModified, usInserted, usDeleted);
TUpdateStatusSet = set of TUpdateStatus;
Figura 3.
No evento OnCalcFields digite:
procedure TFrmMain.ClientDataSet1CalcFields(DataSet: TDataSet);
begin
ClientDataSet1STATUS.AsString :=
GetEnumName(TypeInfo(TUpdateStatus),Integer(ClientDataSet1.UpdateStatus));
end;
Isso faz com que o campo STATUS indique o status atual do registro.
Quando o usuário selecione um Status na combo, vamos exibir somente os registros que estejam naquele estado (excluído, inserido, modificado etc.). Isso é feito no evento OnChange do Combo:
procedure TFrmMain.ComboBox1Change(Sender: TObject);
begin
if ComboBox1.ItemIndex = 4 then
ClientDataSet1.StatusFilter := []
else
ClientDataSet1.StatusFilter := [TUpdateStatus(ComboBox1.ItemIndex)];
end;
Execute a aplicação, insira, modifique e exclua alguns registros, e a seguir escolha o filtro.
Figura 4.
Download
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
- 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