Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

webrodex

Erro loop

Recommended Posts

Olá pessoal ! e o seguinte não sei oque anda ocorrendo nessa aplicação que tou fazendo no TreeView esta ocorrendo um pequeno loop no caso era so para aparecer o campo da raiz Amigos Online e criar os nomes corretamente ta acontecendo isso.

 

Exemplo oque ta ocorrendo

 

+ Amigos Online

Ana

 

+ Amigos Online

Gabriela

 

+ Amigos Online

Rebeka

 

Exemplo deveria ocorrer assim

 

+ Amigos Online

Ana

Gabriela

Rebeka

 

Seria isso ! abaixo segue a foto do exemplo oque ta acontecendo para você ter uma noção melhor

 

Imagem Postada

 

 

Abaixo segue o comando que tou utilizando

 

Declara no var

 

varMyTreeNode1, MyTreeNode2: TTreeNode;

procedure Tamigos.FormCreate(Sender: TObject);beginSQL.Open;SQL.Active:= True;TreeView1.Items.Clear;while not SQL.Eof dobeginMyTreeNode1 := TreeView1.Items.Add(nil, 'Amigos Online');Treeview1.Items.AddChild(MyTreeNode1,SQL.fieldbyname('Amigo').asstring);SQL.Next;end;SQL.Close;end;

Bom Galera essa a minha duvida nao sei oque ta ocorrendo ja tentei de tudo tou ate com dor de cabeça espero que podem me ajuda grato !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente da seguinte forma:

 

var	MyTreeNode1: TTreeNode;beginSQL.Open;TreeView1.Items.Clear;if not SQL.IsEmpty then	begin	MyTreeNode1:=TreeView1.Items.Add(nil, 'Amigos Online');	SQL.First;	while not SQL.Eof do		begin		Treeview1.Items.AddChild(MyTreeNode1,SQL.fieldbyname('Amigo').asstring);		SQL.Next;		end;	end;SQL.Close;

No caso somente precisava remover uma linha de dentro do while, no caso você criava um novo grupo para cada usuário, e ainda adicionei uma validação, para somente colocar Amigos On-Line caso exista algo...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo deu certo eu tinha esquecido do outro problema tipo como faço para ajuntar os 2 para o funcionamento isso que nao tava conseguindo tb tipo 1 ele vai listar os Amigos Online e 2 depois os Amigos Offline

 

varMyTreeNode1,MyTreeNode2: TTreeNode;

 

beginSQL.Open;TreeView1.Items.Clear;if not SQL.IsEmpty thenbeginMyTreeNode1:=TreeView1.Items.Add(nil, 'Amigos Online');SQL.First;while not SQL.Eof dobeginTreeview1.Items.AddChild(MyTreeNode1,SQL.fieldbyname('Amigo').asstring);SQL.Next;end;end;SQL.Close;

beginSQL.Open;TreeView1.Items.Clear;if not SQL.IsEmpty thenbeginMyTreeNode2:=TreeView1.Items.Add(nil, 'Amigos Off-line');SQL.First;while not SQL.Eof dobeginTreeview1.Items.AddChild(MyTreeNode1,SQL.fieldbyname('status').asstring);SQL.Next;end;end;SQL.Close;

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer uma validação sobre o campo Status, tipo:

 

var	statusOnLine, statusOffLine: TTreeNode;beginSQL.Open;TreeView1.Items.Clear;if not SQL.IsEmpty then	begin	statusOnLine:=TreeView1.Items.Add(nil, 'Amigos On-line');	statusOffLine:=TreeView1.Items.Add(nil, 'Amigos Off-line');	SQL.First;	while not SQL.Eof do		begin		if SQL.fieldbyname('Status').Value = 'OnLine' then			Treeview1.Items.AddChild(statusOnLine,SQL.fieldbyname('Amigo').asstring)		else			Treeview1.Items.AddChild(statusOffLine,SQL.fieldbyname('Amigo').asstring);		SQL.Next;		end;	end;SQL.Close;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora a duvida e no sql eu tenho um campo chamado nickname.text eu quero que capitura esse nick e joga dentro da tabela SQL tou usando assim

 

select * from amigos

Eu tentei assim mas nao deu certo tou usando o componente zeus

 

select * from amigos where Nickname = "'+form1.nickname.text+'"

O resultado seria assim exemplo , no bancos de dados tem o campo chamado nickname

 

Nickname Amigo

 

Andre Joao

Andre Madalena

Andre Roger

Paulo Vinicius

Paulo Roger

 

Ele ia pegar todos os nickname que foi logado como andre e ia listar todos os amigos de andre e se for paulo lista todos amigo de paulo seria isso que queria saber ia ter autos valores no bancos de dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como faço para colocar imagem usando o imagemlist gostaria de saber o comandoAmigos On-line o valor do imagemlist é 0 no caso todos que aparecer online a imagem 0 Amigos Offline o valor da imagemlist é 1 no caso todos que aparecer offline imagem 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo nao sei oque ta ocorrendo de errado tou fazendo assim aonde dexei em negrito e aonde acho que ta ocorrendo o erro ele nao ta listando os arquivos .

 

 

Var

statusOnLine, statusOffLine: TTreeNode;

 

 

procedure Tamigos.FormCreate(Sender: TObject);

begin

SQL.Open;

SQL.SQL.add('select * amigos where nickname = "' + form1.nickname.Text + '"');

TreeView1.Items.Clear;

if not SQL.IsEmpty then

begin

statusOnLine:=TreeView1.Items.Add(nil, 'Amigos On-line');

statusOffLine:=TreeView1.Items.Add(nil, 'Amigos Off-line');

SQL.First;

while not SQL.Eof do

begin

if SQL.fieldbyname('Status').Value = 'online' then

Treeview1.Items.AddChild(statusOnLine,SQL.fieldbyname('Amigo').asstring) ;

 

if SQL.fieldbyname('Status').Value = 'off' then

Treeview1.Items.AddChild(statusOffLine,SQL.fieldbyname('Amigo').asstring);

SQL.Next;

end;

end;

SQL.Close;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dê uma olhada na aspa, você esta passando uma aspas dupla e uma simplo, ou seja, assim "' e o certo seria três simples, assim ''' o mesmo ocorrendo no final, que seria preciso 4 simples '''', ficando:

 

SQL.SQL.add('select * amigos where nickname = ''' + form1.nickname.Text + '''');

Outra coisa, você esta abrindo a query e depois passando o SQL, o certo seria:

 

SQL.Close;SQL.SQL.Clear;SQL.SQL.Add('select * amigos where nickname = ''' + form1.nickname.Text + '''');SQL.Open;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo tou usando como você ta falando

 

 

SQL.SQL.Add('select * amigos where nickname =''' + nickname.Text + '''');

 

 

Foto do erro

 

Imagem Postada

 

Ja tentei assim tb mas da o mesmo erro que coloquei na foto acima

sql.sql.add('select * from amigos where like '+ quotedstr( nickname.text ) );
VarstatusOnLine, statusOffLine: TTreeNode;

procedure TForm1.FormCreate(Sender: TObject);beginSQL.Close;SQL.SQL.Clear;sql.sql.add('select * from amigos where like '+ quotedstr( nickname.text ) );SQL.Active:= True;SQL.Open;TreeView1.Items.Clear;if not SQL.IsEmpty thenbeginstatusOnLine:=TreeView1.Items.Add(nil, 'Amigos On-line');statusOffLine:=TreeView1.Items.Add(nil, 'Amigos Off-line');SQL.First;while not SQL.Eof dobeginif SQL.fieldbyname('Status').Value = 'online' thenTreeview1.Items.AddChild(statusOnLine,SQL.fieldbyname('Amigo').asstring);if SQL.fieldbyname('Status').Value = 'off' thenTreeview1.Items.AddChild(statusOffLine,SQL.fieldbyname('Amigo').asstring);SQL.Next;end;end;SQL.Close;end;
Eu estou utilizando o componente Zeos pode ser problama na sql entao tou usando assim ve se tem algo errado tb . estou usando o mysql-5.0.26-win32

 

CREATE TABLE `amigos` (`id` int(25) NOT NULL auto_increment,`Nickname` varchar(255) NOT NULL default '',`Amigo` varchar(255) NOT NULL default '',`Status` text,PRIMARY KEY  (`id`)) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=latin1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.