GARANTIR DESCONTO

Fórum De ListBox para ListBox #294119

01/09/2005

0

Srs, bom dia!

Estou tentando mas não estou conseguindo inserir no ListBox2, um item selecionado no ListBox1. Consigo preencher o ListBox1, com dados provenientes de um banco, mas preciso possibilitar que o usuario selecione o (os) item (s) desejado (s) no ListBox1 e insira no ListBox2, e a partir daí utilizar os dados do ListBox2 como parâmetros para uma query específica. Se alguem puder me ajudar, serei muito grato. Desde já eu agradeço.

Abraço a todos.


Programalista

Programalista

Responder

Posts

01/09/2005

Bruno Belchior

with ListBox1 do
  ListBox2.Items.Add(Items[ItemIndex]);

isso se o parâmetro for realmente a string... senão use o [b:4cbbd226cb]AddObject[/b:4cbbd226cb] e passe um índice qualquer... :wink:


Responder

Gostei + 0

01/09/2005

Programalista

Valeu brunovicenteb, era isto que eu precisava. Deu certo!

Abrigado, qq coisa estamos ai.

Att,

Programalista


Responder

Gostei + 0

01/09/2005

Programalista

Pessoal, surgiu um outro problema: Estou tentando atribuir o conteúdo do ListBox2 à uma variável do tipo ´string´ para que eu possa passá-la como parâmetro em uma query, mas o Delphi exibe um erro dizendo que os tipos String (variável) e o TString (ListBox2) são incompativéis.

[Error] Ulistbox.pas(106): Incompatible types: ´String´ and ´TStrings´


Algum saberia como resolver isto?

Obrigadaço! e abraço a todos.

Att,

Programalista.


Responder

Gostei + 0

01/09/2005

Bruno Belchior

if ListBox1.ItemIndex <> -1 then
  Query.ParByName(´Parametro1´).AsString := ListBox1.Items[ListBox1.ItemIndex];



Responder

Gostei + 0

02/09/2005

Programalista

Bom dia Bruno, e a todos do Fórum.

Eu preciso de uma query assim:
select * from certificado where codigo in (125, 450, 80) order by codigo


sendo assim, ao comando do usuario, estarei passando esta query para o banco, onde os valores de parâmetro deverão ser aqueles que o usuario irá selecionar e que vão estar no ListBox2. Preciso desta solução porque o sistema que desenvolvi permite que o relatório seja convertido em .pdf e enviado por email, então atualmente, se preciso enviar 3 relatórios de certificado para o meu cliente, eu tenho que gerá-los um por um, converter em .pdf (através do sistema), salvar e só depois criar um email e anexar todos. Se eu conseguir o que pretendo, o usuário poderá selecionar os códigos que desejar (no ListBox1) e preencher o ListBox2 a partir daí irá disparar a geração ´do relatório´ (único) com tantas páginas de acordo que os códigos gerados, ou seja, se forem selecionados 3 códigos, será gerado um único relatório com 3 páginas. Então o sistema irá gerar um único .pdf que será enviado por email. Talvez tenha outra forma mais prática de implementar esta solução, se tiver alguma sugestão, ela será muito bem vinda. Agradeço desde já.

Att,

Programalista.


Responder

Gostei + 0

02/09/2005

Bruno Belchior

acho que em vez de dois [b:f127c166fb]ListBox´s[/b:f127c166fb] pq vc não usa um [b:f127c166fb]CheckListBox[/b:f127c166fb] :?: Assim ele poderá escolher quantos ´Relatórios´ ele quiser... não sei se entendi seu problema ou se estou me equivocando :oops: de qualquer forma, no ListBox vc lista um nome e quer passar um código :?: ou você lista nomes e quer passar realmente nomes como parâmetro :?:


Responder

Gostei + 0

02/09/2005

Programalista

Mais uma vez, obrigado!

Eu listo os códigos no ListBox1 e quero passá-los como parâmetro, estes códigos são do tipo inteiro. A intenção de usar o LisBox em vez do CheckListBox é apenas para deixar de forma mais clara, o que usuário está selecionando.

Abraços.


Responder

Gostei + 0

02/09/2005

Rômulo Barros

Vamos supor que o seu ListBox2 possua os valores: 1 - 2 - 3

Logo seu select ficaria assim:

select * from certificado where codigo in (1,2,3) order by codigo


[b:b03371bc89]
Para isto, utililzei como base o código abaixo:[/b:b03371bc89]

Var
   C : Byte;
   Query : String;
   Parametros : String;
begin
   With(ListBox2)Do
   Begin
      Query := ´select * from certificado where codigo In´;
      Parametros := ´(´;
      For C := 0 To Items.Count -1 Do
      Begin
         If(C = Items.Count -1)Then
         Begin
            Parametros := Parametros + Items[C] + ´)´;
         End
         Else
           Begin
              Parametros := Parametros + Items[C] + ´,´;
           End;
      End;
      Query := Query + Parametros + ´ order by codigo´;
      ShowMessage(Query);
   End;
end;


[b:b03371bc89]Espero q funcione de acordo com sua necessidade !!![/b:b03371bc89]


[u:b03371bc89][i:b03371bc89][b:b03371bc89][color=blue:b03371bc89]Obs:[/color:b03371bc89][/b:b03371bc89][/i:b03371bc89][/u:b03371bc89][color=red:b03371bc89] É fundamental que vc valide se o listbox2 possui itens para evitar erros.[/color:b03371bc89]


Responder

Gostei + 0

02/09/2005

Programalista

Rômulo Barros, meu camarada [b:30c34261bb]valeu Demais[/b:30c34261bb] era exatamente isto de que eu precisava, [b:30c34261bb]o b r i g a d o![/b:30c34261bb]

Agradeço também ao Bruno pelas suas valiosas contribuições.

Olha gente, sou iniciante na arte de programar, mas eu estou tentando e com certeza chegarei lá, por isso eu sou muito grato a todos àqueles que contribuem para o meu crescimento. Obrigado mesmo.

Abraços.


Responder

Gostei + 0

02/09/2005

Rômulo Barros

:arrow: [u:827890b9a2]Relaxa !!![/u:827890b9a2] :wink:


Responder

Gostei + 0

02/09/2005

Bruno Belchior

:wink: só pra resumir mais um pouco:
var
  ComandoSQL: string;
begin
  ComandoSQL := Format(´Select * from Tabelas where Codigo in (¬s) order by ´ +
    ´Codigo´, [ListBox2.Items.CommaText]);
end;



Responder

Gostei + 0

02/09/2005

Rômulo Barros

Boa Solução, [u:9f898c339c]brunovicenteb [/u:9f898c339c]!!
Está aí uma solução ´enxuta´ para o problema do nosso amigo.
Mais uma q eu não sabia e aprendi.
É Vivendo e aprendendo..

[b:9f898c339c]Parabéns... !!!![/b:9f898c339c] :wink:


Responder

Gostei + 0

02/09/2005

Bruno Belchior

:wink: como você mesmo disse :!: [quote:d80c91b13a=´Rômulo Barros´]:arrow: [u:d80c91b13a]Relaxa !!![/u:d80c91b13a] :wink:[/quote:d80c91b13a]


Responder

Gostei + 0

02/09/2005

Programalista

UAU!!! que enxugada.

Deste fórum eu não arredo mais o pé, incrível, aqui só tem ´feras´, desenvolvedores destemidos...e competentes. Não sem preocupem, ainda farei parte deste time para poder contribuir com algumas [b:91778914af]máximas [/b:91778914af]como estas.

Obrigadaço pessoal, vocês foram muito, mas muito solidários!

Abraços e Parabéns a você Bruno e a você Rômulo.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar