passagem de parametro
07/08/2008
0
para uma query que tem a seguinte consulta:
select * from tabela
where campo in(:parametro)
Desde já obrigado
Leufmt
Posts
07/08/2008
Jener
ex.:
Procedure Selecionar(Itens: array[0..3] of Char);
Begin
Select
Campo1,
Campo2
From
Tabela
Where
Condicao in (Itens[1],Itens[2],Itens[3])
End;
07/08/2008
Leufmt
tabela.parameters[0].value := parametro;
07/08/2008
Jener
Bem, mas se quiser pode me adicionar no MSN que terei prazer em tentar ajudá-lo.
08/08/2008
Leufmt
parametro := QuotedStr(´001´) + ´,´ + QuotedStr(´002´) + ´,´ +QuotedStr(´001´);
tabela.parameters[0].value := parametro;
para esta consulta que esta em um adoquery:
select * from tabela
where campo in(:parametro)
O parametro deveria chegar na consulta desta forma ´001´, ´002´, ´003´
mas não esta dando certo.
Já estou desesperado para resolver isto.
08/08/2008
Emerson Nascimento
´desmonte´ a string e remonte-a no formato desejado. depois faça a concatenação na instrução, pois não dá para passar como parâmetro.
algo assim:
function TForm1.MontaSQL(tabela, campo, lista: string): string; var lst: TStringList; i: integer; Parametro: string; begin lst := TStringList.Create; lst.Delimiter := ´,´; lst.DelimitedText := Lista; parametro := ´´; for i := 0 to lst.Count-1 do begin parametro := parametro + QuotedStr(lst[i]); if i < lst.Count-1 then parametro := parametro + ´,´; end; lst.Free; result := ´select * from ´+tabela+´ where ´+campo+´ in (´+parametro+´)´; end;
execute a função da seguinte forma:
ShowMessage(MontaSQL(´Cliente´, ´Codigo´, ´001,002,003,012,065´));
será exibida a instrução:
[i:04ed31bd94]select * from Cliente where Codigo in (´001´,´002´,´003´,´012´,´065´)[/i:04ed31bd94]
funciona mesmo que seja passado apenas um elemento na lista:
ShowMessage(MontaSQL(´Cliente´, ´Codigo´, ´012´));
retorna:
[i:04ed31bd94]select * from Cliente where Codigo in (´012´)[/i:04ed31bd94]
Clique aqui para fazer login e interagir na Comunidade :)