Curso Delphi – Criando uma Aplicação do Início ao fim - Parte 7
Campo Auto incremento e Captura de erros
Olá, nesse artigo estarei escrevendo sobre campo auto incremento, como criar e
como utilizar esse campo. Podemos perceber que o campo código do cliente precisa ser
colocado na mão, ou seja, não existe nenhum método para alimentar o código
automaticamente, para isso iremos utilizar o generators.
Abra o IbExpert e selecione o nosso banco de dados SisCom.fdb e logo depois
clique em generators e tecle Ctrl+N ele criará um novo generator, em name mude para
Gen_IDCliente e em value coloque 100, pronto, o nosso generator já está criado e
alimentado, a nossa contagem começará de 100. Precisamos de uma tabela que sirva para
armazenar o valor temporariamente, crie um nova tabela com o nome de código e campo
ID do tipo integer, coloque apenas um registro com número 1.
Retornando ao Delphi, abra o Data Module dmCliente e adicione o componente
SqldataSet da paleta DbExpress e altere as seguintes propriedades:
Esta instrução SQL nos retorna o último generator mais 1 através do Gen_ID.
Dê dois clique no sdsNovoID e adicione o campo NOVOID no Fields editor.
Selecione o componente cdsCadCliente e vá no evento OnNewRecord e digita o seguinte
código:
procedure TdmCliente.cdsCadClienteNewRecord(DataSet: TDataSet);
begin
sdsNovoID.Close;
sdsNovoID.Open;
cdsCadClienteIDCLIENTE.AsInteger:=sdsNovoIDNOVOID.AsInteger;
end;
Como podemos perceber, criar um campo auto incremento é muito simples, ou seja, o
generator armazena um determinado valor e este select apenas busca esse valor e
acrescentar mais 1.
Captura de Erros
O ClientDataSet tem erros silenciosos, ou seja, ele deixa de gravar e não avisa, para
isso precisamos fazer que ele nos avise. Iremos utilizar o evento OnReconcileError do
ClientDataset, vamos fazer um exemplo selecione o cdscadcliente e no Field editor aberto
selecione o campo ENDERECO e passe para true a propriedade Required, ou seja, estamos
exigindo que o usuário não deixe em branco o campo ENDERECO, agora com
cdscadCliente selecionado vá no evento OnReconcileError e coloque o seguinte código:
procedure TdmCliente.cdsCadClienteReconcileError(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction);
begin
ShowMessage(E.Message);
end;
Posicione o mouse em cima do ShowMessage e tecle Ctrl+Shift+A e coloque a unit Dialogs
em nosso projeto.
Execute a aplicação e inclua um novo cliente sem colocar dado nenhum no endereço ele
dará a mensagem de erro:
Existe melhores maneiras de tratar os erros, ou seja, traduzindo as mensagens para
português, mas a intenção deste artigo é apenas você conhecer como tratar erros.
Conclusão: Neste artigo estou mostrando como criar um campo auto incremento e como
utilizá-lo e como tratar erros no ClientDataSet, no próximo artigo estarei demonstrando
como criar Relacionamentos. Abraço e até lá.