Fórum Abrir toda a tabela do dbgrid #364774
08/10/2008
0
Só que euando eu abro o dbgrid ele mosta as 50 primeiras linhas eu tenho um processo de exportar essa tabela para o excel, que lê todo meu DBgrid e joga para o Excel.
O problema é o seguinte quando abro o dbgrid e mando exportar minha tabela ele só exporta aqueles registros que estão na tela, eu queria da um jeito que ele carregasse toda minha tabela sem eu ter que ficar descendo minha barra para ir carregando . Teria um jeito de carregar toda a tabela pois tenho uma tabela de 27.000 linhas.
Espero que me ajudem.
Veleuu
Cleiflavio
Curtir tópico
+ 0Posts
08/10/2008
Prgdelphi
Qual processo é esse de exportar para o excel? Ele deveria ler do dataset e não do DbGrid.
Gostei + 0
08/10/2008
Cleiflavio
e quando exporto eu uso o dataset mas ele faz um for nas linhas e vai rodando o dbgrid se vc não ir lá e clicar descer o dbgrid até o final ele não exporta a tabela todo somente exporta até onde vc desceu.
segue meu codigo para exportar
procedure TF_exportarProduto.FormActivate(Sender: TObject);
var linha, coluna : integer;
var planilha : variant;
var valorcampo : string;
begin
// F_exportar.ShowModal;
//DM.SQLQuery1.CachedUpdates := true;
planilha:= CreateoleObject(´Excel.Application´);
planilha.WorkBooks.add(1);
planilha.caption := ´Exportando dados para o Excel´;
planilha.visible := true;
DM.ClientDataSet_PRODUTO_visual.ApplyUpdates(1);
DM.ClientDataSet_PRODUTO_visual.First;
progressBar1.Max := DM.ClientDataSet_PRODUTO_visual.RecordCount;
progressBar1.Position := 0;
for linha := 0 to DM.ClientDataSet_PRODUTO_visual.RecordCount - 1 do
begin
for coluna := 1 to DM.ClientDataSet_PRODUTO_visual.FieldCount do
begin
valorcampo := DM.ClientDataSet_PRODUTO_visual.Fields[coluna - 1].AsString;
planilha.cells[linha + 2,coluna] := ´´´´ + valorCampo;
end;
DM.ClientDataSet_PRODUTO_visual.Next;
progressbar1.position:= progressbar1.position+1;
application.processmessages;
end;
for coluna := 1 to DM.ClientDataSet_PRODUTO_visual.FieldCount do
begin
valorcampo := DM.ClientDataSet_PRODUTO_visual.Fields[coluna - 1].DisplayLabel;
planilha.cells[1,coluna] := ´´´´ + valorcampo;
end;
planilha.columns.Autofit;
progressbar1.position:= 135 ;
//Showmessage(´Tabela Exportada com Sucesso !!!´);
if messagedlg(´Tabela Exportada com Sucesso !!!´, mtCustom, [mbOk],0) = mrOk
then begin
F_exportarProduto.Close;
end;
end;
Gostei + 0
08/10/2008
Eniorm
Um caso interessante é, que supondo que na tela do grid só exiba estes 50 primeiros registros, a função RecordCount contará como se existisse somente 50 registros.
se você utiliza IBX/MDO, o objeto Query possui um procedimento chamado FetchAll que força a busca de todos os registros da tabela para a memória... mas caso o componente de acesso que você utiliza não possuir algo do tipo, isso também da certo:
Query.Last; Query.First;
abraços
Gostei + 0
08/10/2008
Cleiflavio
Valeuuu mesmo m ajudou muito
Gostei + 0
08/10/2008
Marcosrocha
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)