Fórum Como fazer um select com dados do checklistbox? #389211
24/10/2010
0
Minha dificuldade é saber como passo todos checked do checklistbox marcados como variavel para o where.
Ou seja, não consigo imaginar como fazer o select funcionar.
Se eu tenho 4 variaveis marcadas no checklistbox
ABRANCHES
BATEL
NOVO MUNDO
PILARZINHO
Como filtro no select dentro do where por estes quatros nomes que pertence apenas a um campo?
exemplo
select * from tabela where SERVICO = :varcheckbox //AQUI COMO PASSO A CONDIÇÃO?
Não tem como comparar o operador para tantos valores que vem na variavel, pior ainda se passar por um array, ai que não vai reconhecer mesmo.
Não sei se usar o operador OR resolveria neste caso...
Bom se ficou confuso, eu explico melhor.
Obrigado pessoal.
Adriano Dolce
Curtir tópico
+ 0Posts
24/10/2010
Jonathan Campos
filtro : String;
i: Integer;
Q: TQuery;
begin
filtro:= ' ';
for i:=0 to checklistbox1.Count - 1 do
begin
if CheckListBox1.Checked[i] then
filtro:= filtro + CheckListBox1.Items.Strings[i] + ',';
end;
Q.Close;
Q.Sql.Clear;
Q.Open;
Q.ExecuteQuery(Q, 'select * from tabela
where SERVICO = in ' + filtro;
end;
Cara o que vc precisa é + ou - isso, qualquer dúvida entre em contato de novo;
Gostei + 0
24/10/2010
Jonathan Campos
aqui está o certo. Coloquei o resultado da String SQL em um Memo para ficar + facil pra vc compreender.
procedure TForm1.Button1Click(Sender: TObject);
var
filtro : String;
i : Integer;
begin
for I := 0 to CheckListBox1.Count - 1 do
if (CheckListBox1.Checked[i]) then
filtro:= filtro + (CheckListBox1.Items.Strings[i] + ', ') ;
Delete(filtro, length(filtro) - 1 ,2); //Tirando a Vírgula do ultimo parametro
Memo1.Lines.Add('select * from tabela where SERVICO in( ' + filtro + ')');
end;
Gostei + 0
24/10/2010
Adriano Dolce
veja
select * from tabela where servicos in('campo1', 'campo2');
Sem as apsas nos campos da erro no select. Tipo faltando o QUOTEDSTR
Gostei + 0
24/10/2010
Jonathan Campos
var
filtro : String;
i : Integer;
begin
for I := 0 to CheckListBox1.Count - 1 do
if (CheckListBox1.Checked[i]) then
filtro:= filtro + QuotedStr(CheckListBox1.Items.Strings[i]) + ', ' ;
Delete(filtro, length(filtro) - 1 ,2); //Tirando a Vírgula do ultimo parametro
Memo1.Lines.Add('select * from tabela where SERVICO in( ' + filtro + ')');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.Clear;
end;
Gostei + 0
24/10/2010
Adriano Dolce
Apenas tive que colocar assim para fechar as aspas no final
Memo1.Lines.Add('select * from tabela where SERVICO in( ' + filtro + ''')');
Estava dando erro de sintaxe, mais esta resolvido.
Muito obrigado
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)