_M!K0L_ 1 Denunciar post Postado Abril 22, 2009 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
Chrnos 30 Denunciar post Postado Abril 22, 2009 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
_M!K0L_ 1 Denunciar post Postado Abril 22, 2009 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
Chrnos 30 Denunciar post Postado Abril 22, 2009 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
_M!K0L_ 1 Denunciar post Postado Abril 22, 2009 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
Chrnos 30 Denunciar post Postado Abril 22, 2009 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
_M!K0L_ 1 Denunciar post Postado Abril 22, 2009 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
Chrnos 30 Denunciar post Postado Abril 22, 2009 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
_M!K0L_ 1 Denunciar post Postado Abril 23, 2009 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
Chrnos 30 Denunciar post Postado Abril 23, 2009 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
_M!K0L_ 1 Denunciar post Postado Abril 23, 2009 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