Fórum Treeview pegar todo os campos do Banco de Dados? #324026
22/06/2006
0
Bom dia amigos delphianos, estou aqui mais uma vez para que os colegas me ajudem a usar o treview.
O que eu quero mesmo é mostrar dentro de um treeview os nomes dos clientes de uma tabela e os endereços dos mesmos.
entaum tenho uma tabela chamada dbclientes com os campos clientes, endcli.
ai peguei esta rotina aqui para o treeview
procedure TForm1.Button1Click(Sender: TObject);
var
Nodo, SubNodo: TTreeNode;
begin
query1.Open;
while not Query1.Eof do
begin
Nodo := TreeView1.Items.Add(nil, Query1clientes.Value); //aqui nao sei se acertei
Nodo.ImageIndex := 0;
Nodo.SelectedIndex := 0;
Query1.Close;
Query1.SQL.Text := ´select * from dbclientes where clientes =:xcli and endcli =:xendcli´; // tambem nao sei se esta certo esta linha
Query1.ParamByName(´Xcli´).AsString := query1clientes.value; //nao entendi pq deste parametros fiz como achei o exemplo.
Query1.ParamByName(´Xfen´).AsString := query1endcli.Value;
Query1.Open;
while not Query1.Eof do
begin
SubNodo := TreeView1.Items.AddChild(Nodo, Query1clientes.Value); //tambem nao tenho certeza nesta linha
SubNodo.ImageIndex := 0;
SubNodo.SelectedIndex := 0;
Query1.Next;
end;
Query1.Next;
end;
end;
end.
Gradecido pela ajuda de todos
JL_Jºr
O que eu quero mesmo é mostrar dentro de um treeview os nomes dos clientes de uma tabela e os endereços dos mesmos.
entaum tenho uma tabela chamada dbclientes com os campos clientes, endcli.
ai peguei esta rotina aqui para o treeview
procedure TForm1.Button1Click(Sender: TObject);
var
Nodo, SubNodo: TTreeNode;
begin
query1.Open;
while not Query1.Eof do
begin
Nodo := TreeView1.Items.Add(nil, Query1clientes.Value); //aqui nao sei se acertei
Nodo.ImageIndex := 0;
Nodo.SelectedIndex := 0;
Query1.Close;
Query1.SQL.Text := ´select * from dbclientes where clientes =:xcli and endcli =:xendcli´; // tambem nao sei se esta certo esta linha
Query1.ParamByName(´Xcli´).AsString := query1clientes.value; //nao entendi pq deste parametros fiz como achei o exemplo.
Query1.ParamByName(´Xfen´).AsString := query1endcli.Value;
Query1.Open;
while not Query1.Eof do
begin
SubNodo := TreeView1.Items.AddChild(Nodo, Query1clientes.Value); //tambem nao tenho certeza nesta linha
SubNodo.ImageIndex := 0;
SubNodo.SelectedIndex := 0;
Query1.Next;
end;
Query1.Next;
end;
end;
end.
Gradecido pela ajuda de todos
JL_Jºr
Jlimajr
Curtir tópico
+ 0
Responder
Posts
25/06/2006
Micheus
quanta dúvida... :)
Primeiro de tudo: vc não pode utilizar um TQuery para controlar um loop e ,dentro deste loop, reaproveitar o mesmo componente para executar outra consulta e ainda por cima passar o antigo valor como parâmetro! (deu até um nó agora :) )
Supondo que cada cliente tenha apenas um endereço, as coisas ficariam mais simples:
Dica: adicione em seu select apenas os campos que vc pretende usar - evite o [b:1f22a26b13]*[/b:1f22a26b13], pois vc estará trafegando mais informação do que realmente precisa;
Aquele extra (comparando ao seu post) só se justificaria se cada cliente tiver mais de um endereço. Mesmo assim, observando o que citei antes, vc deve utilizar outro componente TQuery. Adaptando ao código acima:
Acho que deve funcionar. Qqr coisa posta ai!
Primeiro de tudo: vc não pode utilizar um TQuery para controlar um loop e ,dentro deste loop, reaproveitar o mesmo componente para executar outra consulta e ainda por cima passar o antigo valor como parâmetro! (deu até um nó agora :) )
Supondo que cada cliente tenha apenas um endereço, as coisas ficariam mais simples:
procedure TForm1.Button1Click(Sender: TObject); var Nodo, SubNodo: TTreeNode; begin query1.SQL.Text := ´select clientes, endcli from dbclientes´ query1.Open; while not query1.Eof do begin //aqui nao sei se acertei (está certo) Nodo := TreeView1.Items.Add(nil, Query1clientes.Value); Nodo.ImageIndex := 0; Nodo.SelectedIndex := 0; //tambem nao tenho certeza nesta linha (aqui deveria ser o endereço) SubNodo := TreeView1.Items.AddChild(Nodo, Query1endcli.Value); SubNodo.ImageIndex := 0; SubNodo.SelectedIndex := 0; query1.Next; end; query1.Close; end;
Dica: adicione em seu select apenas os campos que vc pretende usar - evite o [b:1f22a26b13]*[/b:1f22a26b13], pois vc estará trafegando mais informação do que realmente precisa;
Aquele extra (comparando ao seu post) só se justificaria se cada cliente tiver mais de um endereço. Mesmo assim, observando o que citei antes, vc deve utilizar outro componente TQuery. Adaptando ao código acima:
procedure TForm1.Button1Click(Sender: TObject); var Nodo, SubNodo: TTreeNode; begin query1.SQL.Text := ´select clientes from dbclientes´; query2.SQL.Text := ´select endcli from dbclientes where clientes =:xcli´; query1.Open; while not query1.Eof do begin //aqui nao sei se acertei (está certo) Nodo := TreeView1.Items.Add(nil, Query1clientes.Value); Nodo.ImageIndex := 0; Nodo.SelectedIndex := 0; query2.ParamByName(´Xcli´).AsString := query1clientes.value; query2.Open; while not query2.EOF do begin //tambem nao tenho certeza nesta linha (aqui deveria ser o endereço) SubNodo := TreeView1.Items.AddChild(Nodo, Query2endcli.Value); SubNodo.ImageIndex := 0; SubNodo.SelectedIndex := 0; query2.Next; end; query2.Close; query1.Next; end; query1.Close; end;
Acho que deve funcionar. Qqr coisa posta ai!
Responder
Gostei + 0
26/06/2006
Jlimajr
Perfeito o código que voçe postou. Funcionou certinho.
Muito obrigado micheus
Muito obrigado micheus
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)