terça-feira, 22 de setembro de 2015

Usando o método FieldByName para pesquisar um campo no TClientDataSet e retornar um objeto da classe TField


O método FieldByName pode ser usado quando queremos pesquisar um campo no TClientDataSet e retornar um objeto da classe TField. Este método possui a seguinte assinatura:

function FieldByName(const FieldName: string): TField;
Se o campo for encontrado, um objeto da classe TField é retornado. Em caso contrário, uma exceção do tipo EDatabaseError com a mensagem "Field not found" é lançada.

Veja um trecho de código no qual eu mostro como encontrar um campo chamado "autor" em um ClientDataSet e retornar seu valor no registro atual:

procedure TForm3.Button3Click(Sender: TObject);
var
  campo: TField;
begin
  // vamos obter o campo com o nome "autor" no ClientDataSet
  try
    campo := ClientDataSet1.FieldByName('autor');
    ShowMessage('O campo existe e seu valor no registro atual é: ' +
      campo.AsString);
  except
    on e: EDatabaseError do
      ShowMessage('Houve um erro: ' + e.Message)
    else
      ShowMessage('Ocorreu um erro diferente de EDatabaseError');
  end;
end;

Se o campo existir no dataset, veremos uma mensagem parecida com:

"O campo existe e seu valor no registro atual é: M. D. Deitel".

Como eu forneci um código try...except, se o campo não existir no dataset, a mensagem seguinte será exibida:

"Houve um erro: ClientDataSet1: Field 'autor2' not found".

Em geral usamos o método FieldByName para determinar se um determinado componente field existe no dataset. O argumento para o método é o nome do campo que queremos pesquisar. Este nome pode ser o nome de um campo simples, o nome de um sub-campo de um objeto field que tenha sido qualificado pelo nome do campo pai ou o nome de um campo agregado. 

Nenhum comentário:

Postar um comentário