Não é a linguagem de programação que define o programador, mas sim sua lógica

Validação de campos obrigatórios em um Dataset


Irei apenas demonstrar como criar uma forma de verificação de campos, utilizando um ClientDataset como um dataset temporário, portanto não irei fazer ligações com banco de dados.
Vamos iniciar um novo projeto no Delphi (File -> New -> Application), será criado automaticamente um formulário (Form1), salve-o com o nome de FSistema e sua Unit com o nome de USistema.pas, o projeto pode ser salvo com o nome Sistema.
Vamos adicionar o componente ClientDataset e mudar o nome para cdsCadastro.

Ainda no componente ClientDataset, vamos incluir 2 campos para utilizar em nosso exemplo, clique com o botão direito do mouse para que seja aberta uma caixa de opções, selecione a opção New Field. Na nova caixa que foi aberta, informe os seguintes dados:

Name: Codigo
Type: Integer
Field Type: Data


Clique em Ok e repita a mesma operação inserindo os dados a seguir:

Name: Nome
Type: String
Field Type: Data


Pronto, já temos dois campos em nosso dataset, agora ainda na caixa de campos, selecione-os e com o mouse arraste os dois campos e solte dentro do formulário, o Delphi criará automaticamente, um Datasource e os DBEdits para os dois campos, conforme a figura 1.


Vamos adicionar no formulário um DBNavigator, para a navegação na registros do dataset. Selecione o DBNavigator e mude sua propriedade Datasource para o Datasource1 que está em nosso formulário.

De um duplo clique novamente no ClientDataset para que seja aberta a caixa com seus campos e mude a propriedade Tag de ambos os campos para 1:

Tag = 1

Essa propriedade será responsável pela identificação dos campos obrigatórios do dataset, ou seja, todos os campos que conterem a propriedade Tag = 1 deverão ser preenchidos.

Clique no formulário, no Object Inspector clique em Events, de um duplo clique no evento OnShow para que seja criada uma procedure para esse evento. Nesse evento iremos criar nosso dataset temporário. Veja o código a seguir:
procedure TFPrincipal.miCopiarUmaLinhaGridClick(Sender: TObject);
begin
  CopiarUmaLinhaGrid(dbgridCDS, miExibirtitulo.Checked);
end;

Vamos adicionar uma função que irá verificar os campos que estão com a "Tag 1" que serão os nossos campos obrigatórios 
function TFSistema.CamposValidados: Boolean;
var
  li: Integer;
  lCampos: TStrings;
begin
  try
    lCampos := TStringList.Create;
    for li := 0 to cdsCadastro.Fields.Count - 1 do begin
      if (cdsCadastro.Fields[li].Tag = 1) then
        if (cdsCadastro.Fields[li].AsString = EmptyStr) then
          lCampos.Add(' - ' + cdsCadastro.Fields[li].DisplayName);
    end;
    if (lCampos.Text <> EmptyStr) then begin
      lCampos.Insert(0, 'Preencha os Campos obrigatórios: ');
      lCampos.Insert(1, EmptyStr);
      ShowMessage(lCampos.Text);
      result := false;
    end else
      result := true;
  finally
    lCampos.Free;
  end;
end;

Nossa rotina para validar todos os campos obrigatórios do dataset já está pronta, então vamos utiliza-la no evento onBeforePost do ClientDataset (cdsCadstro) conforme código a seguir:
procedure TFSistema.cdsCadastroBeforePost(DataSet: TDataSet);
begin
  if not (CamposValidados) then
    Abort
  else
    ShowMessage('Dados salvos no dataset temporário');
end;

Pronto nosso exemplo está concluído, agora basta compilar o projeto, no DBNavigator clique no botão Insert (+) e tente salvar o registro clicando no botão Post (V). Você receberá uma mensagem avisando quais campos devem ser preenchidos.

0 comentários:

Postar um comentário