Você está na página 1de 9

DEVMEDIA

favorito (4) imprimir anotar marcar como lido dvidas?

Capturando informaes do
DataSet em conjunto com DBGrid
em Delphi
(0) (0)

Veja neste artigo como exibir informaes (Ttulo das colunas, Quantidade de colunas, Tipo de dados e etc.)
sobre o DataSet vinculado ao DBGrid.

Receba notificaes :)
Olpessoal,nesteartigovoudemostraralgunscomandobsicosparacapturarinformaesdoDataSet

queestligadoaoDBGrid.Asinformaescontidasnesseartigonosonenhumanovidadeparaos

desenvolvedoresDelphimaisexperientes.

NoteiqueexistemalgumasdvidasbemsimplessobrecomoobtercertasinformaesdoDBGrid

relacionadasaoDataSetligadoaobancodedados,taiscomo:ttulodascolunas,trocaroTabpeloEnter

paraavanarparaprximacoluna,exibiraquantidadedascolunasexistentesnoDBGrideetc.Alguns

colegaspodemseperguntar:

Masparaqueeuvouusaressetipodeinformao?

Resposta:tantoosprogramadoresmaisnovosquantoosmaisexperientesquedesenvolvemaplicaes

ligadasaumbancodedados,jutilizara,mpelomenosumaveznavida,essecomponenteDBGridpara

exibirdadosgravadosnobanco.Epossogarantirqueemdeterminadassituaesforamnecessriasobter

algumasdasinformaesqueestareidemonstrandonesseartigo.

Paraesseartigovamosdesenvolverumaaplicaobemsimples,vouutilizarumDBGridligadouma

basededadosFirebird(EMPLOYEE.FDB),assimnoteremosqueperdertempogerandoscriptpara
criaodeumabasededadospoisessebancoacompanhaasinstalaesdoFirebird,nomeucasoela
DEVMEDIA
estnoseguinteendereo:C:\ProgramFiles\Firebird\Firebird_2_5\examples\empbuild\EMPLOYEE.FDB.

VamosusarcomoenginedeacessooFrameworkDBExpress.Vouarrastarparaoformosseguintes

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)

6Buttons:

Name=btnlstCampos,Caption=ListaosTtulosdasColunas

Name=btnQtdeColunas,Catpion=ExibirQuantidadedeColunas

Name=btnTituloColuna,Caption=ExibirTtulodaColunaselecionada

Receba notificaes :)
Name=btnTituloColuna,Caption=Exibirocontedodacoluna

Name=btnLengthCampo,Caption=ExibiroLengthdoCamposselecionado

Name=btnVerificaType,Caption=Exibirtipodedadosdoscampos

Observao:novoumeateradetalhessobreaconfiguraodoscomponentes,noportalDevMedia

existemvriosartigosevdeossobreoassunto.NesseexemploestouusandoumSQLTableparafacilitar

odesenvolvimentopoisessaaplicaonoenvolvenenhumacomplexidadequenecessitedousodo

SQLQuery.
Figura1:ExibeLayoutfinaldatela
DEVMEDIA

NaslistagensabaixovamostrabalharcomeventoOnClickdecadaumdosbotesqueforamadicionados

aoform.ParaexibirasinformaesvouusarainstruoShowMessage().importantesalientarqueesse

exemplofoibaseadonasinformaes(quantidadedecolunas,nomedoscampos,tamanhoeetc.)da

tabelaCustomerquepertenceaobancodedadosEmployee.FDB.

EXEMPLO 1
Listagem1:CdigoparaobotobtnLstCamposlistarottulodetodascolunasdoDBGrid

procedureTfrmPrincipal.btnLstCamposClick(Sender:TObject);
var
I:Integer;
s:TStringBuilder;
begin
try
s:=TStringBuilder.Create;
forI:=0togrdDados.FieldCount1do
begin

Receba notificaes :)
s.Append(grdDados.Fields[i].FieldName+#13);
end;
ShowMessage(s.ToString);
finally
FreeAndNil(s);
end;
end;

Figura2:ExibeottulodascolunasexistentesnoDBGrid
EXEMPLO 2 DEVMEDIA

Listagem2:CdigoparaobotobtnQtdeColunasexibiraquantidadedecolunasdoDBGrid

procedureTfrmPrincipal.btnQtdeColunasClick(Sender:TObject);
begin
ShowMessage('DBGridpossui'+IntToStr(grdDados.Columns.Count)+'colunas.');
end;

Receba notificaes :)
Figura3:ExibeaquantidadedascolunasexistentesnoDBGrid

EXEMPLO 3
NesseexemplocliqueiemumadeterminadalinhadacolunaPHONE_NO.

Listagem3:CdigoparaobotobtnTituloColunaexibioTtulodacolunaselecionadanoDBGrid

procedureTfrmPrincipal.btnTituloColunaClick(Sender:TObject);
begin
ShowMessage(grdDados.SelectedField.FieldName);
end;
DEVMEDIA

Figura4:ExibeaquantidadedascolunasexistentesnoDBGrid

EXEMPLO 4
UsandoumInputQueryvamoscapturarondicedacolunaquedesejamosquesejaexibidoovalor,

selecionamosumadeterminadalinhaesolicitamosquesejaexibidoovalordacoluna[indice].Nesse

Receba notificaes :)
exemplovouinformarondice0,ouseja,ovalordaprimeiracolunaCUST_NO.Levandoem

consideraoqueocontadordascolunasiniciaem0.

Listagem4:CdigoparaobotobtnTextoColunaexibirovalordeumadeterminadacoluna

procedureTfrmPrincipal.btnTextoColunaClick(Sender:TObject);
var
index:string;
begin
InputQuery('InputQuery','Informeumndice:',index);
ifindex<>''then
ShowMessage(grdDados.Fields[StrToInt(index)].Text);
end;
DEVMEDIA

Figura5:InputQueryparainformarondicedacolunadesejada

Receba notificaes :)
Figura6:ExibeovalorcolunaCUST_NO

EXEMPLO 5
Nesseexemplovamosinformarumndicevlidodacolunaquedesejamossaberotamanhodocampo.

Serinformadoondice1queequivalecolunaCUSTOMER.

Listagem5:CdigoparaobotobtnLengthCampoexibirotamanhodacampodarespectivacoluna

procedureTfrmPrincipal.btnLengthCampoClick(Sender:TObject);
var
index:string;
begin
InputQuery('InputQuery','Informeumndice:',index);
DEVMEDIA
ifindex<>''then
ShowMessage(IntToStr(grdDados.Fields[StrToInt(index)].DataSize));
end;

Figura7:InputQueryparainformarondicedacolunadesejada

Receba notificaes :)

Figura8:ExibeolengthdacolunaCUSTOMER

EXEMPLO 6
Nesseexemplovamosexibirostipodedados(String,Integer,Date,Time,DateTime)detodasascolunas

doDBGrid.

Listagem6:CdigoparaobotobtnVerificaTypeexibirotipodedados
procedureTfrmPrincipal.btnVerificaTypeClick(Sender:TObject);
var
DEVMEDIA
I:Integer;
s:TStringBuilder;
begin
try
s:=TStringBuilder.Create;
forI:=0togrdDados.FieldCount1do
begin
casegrdDados.Fields[i].DataTypeof
ftInteger:s.Append(grdDados.Fields[i].FieldName+':TipoInteger'#13);
ftString:s.Append(grdDados.Fields[i].FieldName+':TipoString'#13);
ftDateTime:s.Append(grdDados.Fields[i].FieldName+':TipoDateTime'#13);
ftDate:s.Append(grdDados.Fields[i].FieldName+':TipoDate'#13);
ftTime:s.Append(grdDados.Fields[i].FieldName+':TipoTime'#13);
end;
end;
ShowMessage(s.ToString);
finally
FreeAndNil(s);
end;
end;

Receba notificaes :)

Figura9:ExibetipodedadosdetodoscamposdoDBGrid

Bompessoal,osexemplosdesseartigoforammuitosimplesecomomencioneinoincio,sopara

iniciantesemDelphi.Asinformaesquecapturamospodemparecerdispensveisdentrodesses

exemplosquedemonstrei,massemprevaiexistirumadeterminadasituaoemqueteremosqueextrair

algumtipodeinformaodoDBGrid,pormaissimplesqueseja.

Esperoquetenhamapreciadoesseartigoeataprxima.
Abrao.
DEVMEDIA

por William (0) (0)

Ficou com alguma dvida?

ASSINE FALE CONOSCO APP

Receba notificaes :)
Hospedagem web por Porta 80 Web Hosting