Olá pessoal, neste artigo vou demostrar alguns comando básicos para capturar informações do DataSet que está ligado ao DBGrid. As informações contidas nesse artigo não são nenhuma novidade para os desenvolvedores Delphi mais experientes.

Notei que existem algumas dúvidas bem simples sobre como obter certas informações do DBGrid relacionadas ao DataSet ligado ao banco de dados, tais como: título das colunas, trocar o Tab pelo Enter para avançar para próxima coluna, exibir a quantidade das colunas existentes no DBGrid e etc. Alguns colegas podem se perguntar:

Mas para que eu vou usar esse tipo de informação?

Resposta: tanto os programadores mais novos quanto os mais experientes que desenvolvem aplicações ligadas a um banco de dados, já utilizara,m pelo menos uma vez na vida, esse componente DBGrid para exibir dados gravados no banco. E posso garantir que em determinadas situações foram necessárias obter algumas das informações que estarei demonstrando nesse artigo.

Para esse artigo vamos desenvolver uma aplicação bem simples, vou utilizar um DBGrid ligado à uma base de dados Firebird (EMPLOYEE.FDB), assim não teremos que perder tempo gerando script para criação de uma base de dados pois esse banco acompanha as instalações do Firebird, no meu caso ela está no seguinte endereço: “C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\EMPLOYEE.FDB”.

Vamos usar como engine de acesso o Framework DBExpress. Vou arrastar para o form os seguintes componentes:

  • SQLConnection (Name = “Conexao”)
  • SQLTable (Name = “tblCustomer”, TableName = “CUSTOMER”, SQLConnection = Conexao)
  • DataSetProvider (Name = “dspDados”, DataSet = tblCustomer)
  • ClientDataSet (Name = “cdsDados”, ProviderName = dspDados)
  • DataSource (Name = “dtsDados”, DataSet = cdsDados)
  • DBGrid (Name = “grdDados”, DataSource = dtsDados)
  • 6 Buttons:
        - Name = “btnlstCampos”, Caption = “Lista os Títulos das Colunas”
        - Name = “btnQtdeColunas”, Catpion = “Exibir Quantidade de Colunas”
        - Name = “btnTituloColuna”, Caption = “Exibir Título da Coluna selecionada”
        - Name = “btnTituloColuna”, Caption = “Exibir o conteúdo da coluna”
        - Name = “btnLengthCampo”, Caption = “Exibir o Length do Campos selecionado”
        - Name = “btnVerificaType”, Caption = “Exibir tipo de dados dos campos”

Observação: não vou me ater a detalhes sobre a configuração dos componentes, no portal DevMedia existem vários artigos e vídeos sobre o assunto. Nesse exemplo estou usando um SQLTable para facilitar o desenvolvimento pois essa aplicação não envolve nenhuma complexidade que necessite do uso do SQLQuery.

Exibe Layout final da tela

Figura 1: Exibe Layout final da tela

Nas listagens abaixo vamos trabalhar com evento OnClick de cada um dos botões que foram adicionados ao form. Para exibir as informações vou usar a instrução ShowMessage(). É importante salientar que esse exemplo foi baseado nas informações (quantidade de colunas, nome dos campos, tamanho e etc.) da tabela Customer que pertence ao banco de dados Employee.FDB.

EXEMPLO 1

Listagem 1: Código para o botão “btnLstCampos” listar o título de todas colunas do DBGrid


procedure TfrmPrincipal.btnLstCamposClick(Sender: TObject);
var
  I: Integer;
  s: TStringBuilder;
begin
    try
        s := TStringBuilder.Create;
        for I := 0 to grdDados.FieldCount -1 do
        begin
            s.Append(grdDados.Fields[i].FieldName + #13);
        end;
        ShowMessage(s.ToString);
    finally
        FreeAndNil(s);
    end;
end;
Exibe o título das colunas existentes no DBGrid

Figura 2: Exibe o título das colunas existentes no DBGrid

EXEMPLO 2

Listagem 2: Código para o botão “btnQtdeColunas” exibir a quantidade de colunas do DBGrid


procedure TfrmPrincipal.btnQtdeColunasClick(Sender: TObject);
begin
     ShowMessage('DBGrid possui ' + IntToStr(grdDados.Columns.Count) + ' colunas.');
end;
Exibe a quantidade das colunas existentes no DBGrid

Figura 3: Exibe a quantidade das colunas existentes no DBGrid

EXEMPLO 3

Nesse exemplo cliquei em uma determinada linha da coluna PHONE_NO.

Listagem 3: Código para o botão “btnTituloColuna” exibi o Título da coluna selecionada no DBGrid


procedure TfrmPrincipal.btnTituloColunaClick(Sender: TObject);
begin
    ShowMessage(grdDados.SelectedField.FieldName);
end;
Exibe a quantidade das colunas existentes no DBGrid

Figura 4: Exibe a quantidade das colunas existentes no DBGrid

EXEMPLO 4

Usando um InputQuery vamos capturar o índice da coluna que desejamos que seja exibido o valor, selecionamos uma determinada linha e solicitamos que seja exibido o valor da coluna[indice]. Nesse exemplo vou informar o índice “0”, ou seja, o valor da primeira coluna CUST_NO. Levando em consideração que o contador das colunas inicia em “0”.

Listagem 4: Código para o botão “btnTextoColuna” exibir o valor de uma determinada coluna


procedure TfrmPrincipal.btnTextoColunaClick(Sender: TObject);
var
   index: string;
begin
    InputQuery('InputQuery', 'Informe um índice:', index);
    if index <> '' then
       ShowMessage(grdDados.Fields[StrToInt(index)].Text);
end;
InputQuery para informar o índice da coluna desejada

Figura 5: InputQuery para informar o índice da coluna desejada

Exibe o valor coluna CUST_NO

Figura 6: Exibe o valor coluna CUST_NO

EXEMPLO 5

Nesse exemplo vamos informar um índice válido da coluna que desejamos saber o tamanho do campo. Será informado o índice 1 que equivale à coluna CUSTOMER.

Listagem 5: Código para o botão “btnLengthCampo” exibir o tamanho da campo da respectiva coluna


procedure TfrmPrincipal.btnLengthCampoClick(Sender: TObject);
var
   index: string;
begin
    InputQuery('InputQuery', 'Informe um índice:', index);
    if index <> '' then
       ShowMessage(IntToStr(grdDados.Fields[StrToInt(index)].DataSize));
end;
InputQuery para informar o índice da coluna desejada

Figura 7: InputQuery para informar o índice da coluna desejada

Exibe o length da coluna CUSTOMER

Figura 8: Exibe o length da coluna CUSTOMER

EXEMPLO 6

Nesse exemplo vamos exibir os tipo de dados(String, Integer, Date, Time, DateTime) de todas as colunas do DBGrid.

Listagem 6: Código para o botão “btnVerificaType” exibir o tipo de dados


procedure TfrmPrincipal.btnVerificaTypeClick(Sender: TObject);
var
  I: Integer;
  s: TStringBuilder;
begin
    try
        s := TStringBuilder.Create;
        for I := 0 to grdDados.FieldCount -1 do
        begin
            case grdDados.Fields[i].DataType of
                 ftInteger : s.Append(grdDados.Fields[i].FieldName + ': Tipo Integer'#13);
                 ftString  : s.Append(grdDados.Fields[i].FieldName + ': Tipo String '#13);
                 ftDateTime: s.Append(grdDados.Fields[i].FieldName + ': Tipo DateTime'#13);
                 ftDate    : s.Append(grdDados.Fields[i].FieldName + ': Tipo Date'#13);
                 ftTime    : s.Append(grdDados.Fields[i].FieldName + ': Tipo Time'#13);
            end;
        end;
        ShowMessage(s.ToString);
    finally
        FreeAndNil(s);
    end;
end;
Exibe tipo de dados de todos campos 
do DBGrid

Figura 9: Exibe tipo de dados de todos campos do DBGrid

Bom pessoal, os exemplos desse artigo foram muito simples e como mencionei no início, são para iniciantes em Delphi. As informações que capturamos podem parecer dispensáveis dentro desses exemplos que demonstrei, mas sempre vai existir uma determinada situação em que teremos que extrair algum tipo de informação do DBGrid, por mais simples que seja.

Espero que tenham apreciado esse artigo e até a próxima.

Abraço.