Ir para conteúdo

POWERED BY:

Arquivado

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

_M!K0L_

[Resolvido] Porque não insere os valor na ListBox ?

Recommended Posts

Query1.SQL.Add('SELECT memb___id FROM MEMB_INFO WHERE Vip > 0');

Query1.ExecSQL;

ListBox1.Items.Add(Query.FieldValues['memb___id']);

1. Porque ele não adiciona os valores da coluna "memb___id" ?

2. Já tentei de várias formas mais nenhuma vai :S

3. Já fiz até loop pra ver se dava certo masi não vai, ele não aparece nenhum resultado :S

 

OBS.: Conexão com o MSSQL(Microsoft SQL Server) está funcionando corretamente!

 

Agradecido desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem dois erros no seu código... o primeiro é que em consultas (selects), não se usa o execSql, e sim o Open; na query ... o segundo é que para adicionar os dados que quer, vai ter que varrer o retorno da sua query com um laço de repetição.

 

Query1.Close;
Query1.Sql.Clear;
Query1.SQL.Add('SELECT memb___id FROM MEMB_INFO WHERE Vip > 0');
Query1.Open;
while not Query1.eof do
begin
	 ListBox1.Items.Add(Query.FieldValues['memb___id'].AsString);
	 Query1.Next;
end;

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlww funcionou direitinho =]

 

mais uma coisa eu tentei fazer looping mais não deu tipo eu tentei

 

var i : integer;

 

for i := 1 to 2 do

begin

ListBox1.Items.Add(Query.FieldValues['memb___id']);

Query.Next;

end;

deu certo porém não consegui fazer contas os resultados da SELECT pra por ali no lugar do 2

 

 

Pq minha pesquisa da um resultado 2, mais não consegui fazer algo pra por ali no lugar do 2 para ser automatico e não ter que por manualmente um valor padrão!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use o código que eu postei... o while not Query.Eof vai varrer todos os resultados da sua query, do primeiro ao último, saindo do laço exatamente depois do último registro. Para usar o For, você teria que testar primeiro se a query retornou algum valor (If not Query.IsEmpty) e depois montar o for de 0 até Query.RecordCount (se não me falha a memória agora), que irá lhe dizer quantos registros retornou... contudo, o mais confiável é o while not eof.

 

E lembre-se também que o listbox trabalha com variáveis do tipo string no listbox.Items.Add .... então formatar a saída de retorno como .AsString é necessário para ter certeza que não vai ter erros de execução em runtime por vir algum dado em formato inválido.

 

//Código do laço de repetição usando o for
if not Query.IsEmpty then
	for i := 0 to Query.RecordCount - 1 do
	begin
		 ListBox1.Items.Add(Query.FieldValues['memb___id'].AsString);
		 Query.Next;
	end
else
	showmessage('Não existem dados a retornar da consulta.');

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

oww vlwzãoo de coração

 

mais me explica 1 coisa o que é esse EOF do Query1.eof ??

 

nem sei o que é isso mais agora to tendo uma idéia!! xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele serve para indicar quando o cursor está na última posição (registro) da consulta retornada... vou copiar a explicação do help do Delphi 5 abaixo.

 

TDataSet.Eof

Indicates whether or not a cursor is positioned at the last record in a dataset.

property Eof: Boolean;

Description

Test Eof (end-of-file) to determine if the cursor is positioned at the last record in a dataset. If Eof is True, the cursor is unequivocally on the last row in the dataset. Eof is True when an application:

Opens an empty dataset.
	Calls a dataset’s Last method.
	Call a dataset’s Next method, and the method fails (because the cursor is already on the last row in the dataset).
	Calls SetRange on an empty range or dataset.

Eof is False in all other cases.

Tip:	If both Eof and Bof are True, the dataset or range is empty.

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

vlw a explicação e pela ajuda ai =]

eu não entendo muito no Delphi mais faço o que posso e tento coisas novas xD

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hehehehe, não custa ajudar um pouco hoje... amanhã posso ser eu que precise de ajuda. B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara to com mais uma duvida se pudar me responder...

 

é assim, eu to tentando pegar o valor da listbox1, e passar pra query, no caso o valor selecionado dai ficou assim o código.

 

procedure TForm1.ListBox1DblClick(Sender: TObject);

 

var item_value: String; item_index: Integer;

 

begin

 

item_index := ListBox1.ItemIndex;

item_value := ListBox1.Items.ValueFromIndex[item_index];

 

Query.Close;

Query.SQL.Clear;

Query.SQL.Add('SELECT * FROM MEMB_INFO WHERE memb___id = :CONTA ');

Query.ParamByName('CONTA').AsString := item_value;

Query.Open;

 

Edit5.Text := Query.FieldValues['memb___id'];

Edit6.Text := Query.FieldValues['memb__pwd'];

 

end;

* Só que está dando 1 coisa erradaa!, quando pega o valor da ListBox1 ele corta a primeira letra do valor e a query da errada, seguido do crash do projeto!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim:

 

procedure TForm1.ListBox1DblClick(Sender: TObject);
var item_value: String;
item_index: Integer;
begin
  item_index := ListBox1.ItemIndex;
  item_value := ListBox1.Items[ListBox1.ItemIndex];

  Query.Close;
  Query.SQL.Clear;
  Query.SQL.Add('SELECT * FROM MEMB_INFO WHERE memb___id = :CONTA ');
  Query.ParamByName('CONTA').AsString := item_value;
  Query.Open;

  if not Query.IsEmpty then
  begin
	 Edit5.Text := Query.FieldValues['memb___id'];
	 Edit6.Text := Query.FieldValues['memb__pwd'];
  end
  else
	  showmessage('Registro não localizado.');
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora ele só da "Registro não localizado" toda hora :S

 

do jeito que eu fiz ele tem REGISTRO porém ele corta a primeira letra da string por exemplo.

 

 

na listbox1 aparece

 

mikol

mikol1

mikol2

mikol3

dai eu do um dublo click na qual eu selecionei,

 

só que dai o valor retornado por exemplo selecionei o mikol3

 

o valor retornado é ikol3 e não mikol3

 

:S

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.