Capturando informações do DataSet em conjunto com DBGrid em Delphi

Veja neste artigo como exibir informações (Título das colunas, Quantidade de colunas, Tipo de dados e etc.) sobre o DataSet vinculado ao DBGrid.

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:

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.


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;

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;

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;

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;

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


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;

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


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;

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.

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados