Fórum Não consigo fazer este tipo de consulta !?!?! #471371
26/02/2014
0
Espero conseguir explicar minha duvida que é a seguinte:
Quero trazer na consulta todos os cadastro que possuam determinados códigos:
Ex: 2, 4, 15, 56 e 57 somente. (integer)
Até aí beleza,
WHERE CODIGO IN (2, 4, 15, 56, 57)
Mas a dificuldade está que preciso que receba os valores que o usuário escolher. É uma consulta personalizável, a qual o usuário escolhe na tela quais códigos ele quer.
Tentei com parâmetro: WHERE CODIGO IN (:CODIGOS)
Mas nada feito, firebird aceita apenas um valor por vez.
Procurei por array no firebird, mas o que encontrei até agora não consegui entender direito.
Gostaria de saber se alguém já montou algo parecido, ou se tem alguma ideia de como solucionar esse caso.
Agradeço desde já a atenção.
[]s
Silvio Morelo
Curtir tópico
+ 0Posts
26/02/2014
Marcos Saffran
tente com
WHERE CODIGO = 2 AND
CODIGO = 4 AND
CODIGO = 15 AND
CODIGO = 56 AND
CODIGO = 57
WHERE CODIGO = :CODIGO1 AND
CODIGO = :CODIGO2 AND
CODIGO = :CODIGO3 AND
CODIGO = :CODIGO4 AND
CODIGO = :CODIGO5
isso serve para a quantidade fixa de 5 códigos.
Espero que te ajude.
Gostei + 0
27/02/2014
Silvio Morelo
Sua dica funciona perfeitamente porem eu não sei quantos códigos serão selecionados para efetuar a consulta.
[]'s
Gostei + 0
27/02/2014
Marcos Saffran
nesse caso é necessário fazer um loop:
sqltxt := '....WHERE '; //aqui vem todo o código sql até o WHERE
for I=1 to qtcodigos do //de 1 até a quantidade de códigos a ser inserida
begin
strCodigo := ':CODIGO' + IntToStr(I);
if I = qtcodigos then
begin
sqltxt := sqltxt + 'CODIGO = ' + strCodigo + ' '; /caso seja o último loop não acrescenta o AND
end
else
begin
sqltxt := sqltxt + 'CODIGO = ' + strCodigo + ' AND ';
end;
end;
Para os parâmetros faça um loop parecido.
Gostei + 0
28/02/2014
Silvio Morelo
Funcionou corretamente.
[]'s
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)