Escolar Documentos
Profissional Documentos
Cultura Documentos
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
Receba notificaes :)
Hospedagem web por Porta 80 Web Hosting