Fórum Carregar um treeview com dados do BD sem usar o EOF? #333703
25/11/2006
0
[b:4080525f12]Carregar um treeview com dados do BD sem usar o EOF?[/b:4080525f12]
Estou usando o codigo assim:
procedure TForm5.FormActivate(Sender: TObject); var Node, SubNode1, SubNode2: TTreeNode; begin fechatabelaS; abretabelaS; dm.ibdbgridsaida.active:=true; dm.ibdbgridsaida.Close; dm.ibdbgridsaida.SQL.Text := ´select CNPJ from saidas GROUP BY CNPJ´; dm.ibdbgridsaida.Open; TreeView1.Items.Clear; while not dm.ibdbgridsaida.Eof do begin SubNode1 := TreeView1.Items.AddChild(Node, dm.ibdbgridsaida.fieldbyname(´cnpj´).value); SubNode1.ImageIndex := 1; SubNode1.SelectedIndex := 0; dm.ibdbgridsaida.Next; end; dm.ibdbgridsaida.Close;
Entao gostaria de saber se tem outra maneira de carregar todos os dados que esta no select acima sem ter que demorar muito, ou seja carregar na hora, pois assim esta muito pesado.
Agradeço a ajuda de todos
Adriano.
Adriano_servitec
Curtir tópico
+ 0Posts
25/11/2006
Paullsoftware
var
Node, SubNode1, SubNode2: TTreeNode;
begin
fechatabelaS;
abretabelaS;
//Esse linha pode ser cancelada... //dm.ibdbgridsaida.active:=true; dm.ibdbgridsaida.Close; dm.ibdbgridsaida.SQL.Text := ´select CNPJ from saidas GROUP BY CNPJ´; dm.ibdbgridsaida.Open; TreeView1.Items.Clear; //desabilitar os controle ligados a tabela, para melhorar a performance dm.ibdbgridsaida.DisabledControls; while not dm.ibdbgridsaida.Eof do begin SubNode1 := TreeView1.Items.AddChild(Node, dm.ibdbgridsaida.fieldbyname(´cnpj´).value); SubNode1.ImageIndex := 1; SubNode1.SelectedIndex := 0; dm.ibdbgridsaida.Next; end; dm.ibdbgridsaida.EnabledControls; dm.ibdbgridsaida.Close;
se alguém sabe uma forma de fazer isso, sem ler toda tabela, o que acho pouco porvável, post ae nós então!! :roll:
Gostei + 0
27/11/2006
Adriano_servitec
Gostei + 0
27/11/2006
Emerson Nascimento
var Node, SubNode1, SubNode2: TTreeNode; begin fechatabelaS; abretabelaS; with dm.ibdbgridsaida do begin Close; SQL.Text := ´select CNPJ from saidas GROUP BY CNPJ´; Open; // adicione a linha abaixo. // ela prepara o treeview para edicao e não reporta as alterações // para a tela enquanto não terminar o processo, tornando o // procedimento mais veloz TreeView1.Items.BeginUpdates; TreeView1.Items.Clear; //desabilitar os controle ligados a tabela, para melhorar a performance DisabledControls; while not Eof do begin SubNode1 := TreeView1.Items.AddChild(Node, fieldbyname(´cnpj´).asstring); SubNode1.ImageIndex := 1; SubNode1.SelectedIndex := 0; Next; end; EnabledControls; Close; // informa ao treeview que as alterações foram finalizadas TreeView1.Items.EndUpdates; end;
note que o código foi reescrito somente para melhor entendimento. dê importância para as linhas TreeView1.Items.BeginUpdates e TreeView1.Items.EndUpdates.
espero que isso ajude a melhorar a performande da sua rotina
Gostei + 0
28/11/2006
Adriano_servitec
[b:004b7a6537]BeginUpdates;
[/b:004b7a6537] e [b:004b7a6537]EndUpdates[/b:004b7a6537] no Delphi 5
Olha o erro na hora de compilar
[color=red:004b7a6537][Error] UExcluirAssociado.pas(188): Undeclared identifier: ´BEGINUPDATES´[/color:004b7a6537]
Tambem estou querendo montar esse ListView para mostrar os dados mais nao estou conseguindo
begin DM.IBQ1.First; ListView1.AllocBy:= DM.IBQ1.RecordCount; WHILE NOT DM.IBQ1.Eof DO BEGIN //ListView1.BEGINUPDATES; With ListView1.ITEMS.ADD DO BEGIN Caption:= DM.ibq1.FieldByName(´ASSOCIADO´).AsString; subitems[0]:= DM.IBQ1.FieldByName(´MATRICULA´).AsString; subitems[1]:= DM.IBQ1.FieldByName(´ASSOCIADO´).AsString; SubItems[2]:= DM.IBQ1.Fieldbyname(´NATURAL´).AsString; SubItems[3]:= DM.IBQ1.Fieldbyname(´PAI´).AsString; SubItems[4]:= DM.IBQ1.Fieldbyname(´MAE´).AsString; end; //ListView1.ENDUPDATES; DM.IBQ1.NEXT; END;
Grato a ajuda de todos.
Obrigado Adriano
[/b]
Gostei + 0
28/11/2006
Emerson Nascimento
2o. - o método é aplicado aos Itens e não diretamente ao ListView ou TreeView
- ListView1.Items.BeginUpdate / ListView1.Items.EndUpdate
- TreeView1.Items.BeginUpdate / TreeView1.Items.EndUpdate
3o. - Realmente não sei se esse método está disponível no componente do Delphi 5.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)