[firebase-br] Alterar "linha" do SQL
eduardo
eduardo em icontroller.com.br
Sáb Mar 5 07:59:34 -03 2005
Oi Sávio
Eu faria desta forma:
var Select, Par1, Par2:String;
begin
Select := ' select p.codigo, p.preco, g.id_grupo'+
' from tbproduto p'+
' inner join tbgrupo g on(g.id_grupo = p.id_grupo)+
' where p.<Campo> LIKE ''<campodebusca)>''';
if ... Minha Lógica
begin
Par1 := X;
Par2 := y;
end;
Select := StrReplace(Select, '<Campo>', Par1, [locaseInsensitive]);
Select := StrReplace(Select, '<CampodeBusca>', Par1,
[locaseInsensitive]);
SqlQuery.Sql.Text := Select;
end;
Dá para fazer uma rotina genérica que substitua parâmetros se vc
utilizar uma regra de nomenclatura. Ex
Query SELECT CAMPO FROM TABELA WHERE CHAVE=@P0 AND SUBCHAVE=@P1
Params ['1234', '69']
function ReplaceParams(const Query:String;Pars:Array of String):String;
var i:integer;
begin
Result := Query;
for i := High(Pars) downto 0 do
Result := StrReplace(Result, '@P'+IntToStr(i), Pars[i],
[locaseinsensitive]);
end;
Espero ter ajudado
[] Eduardo
savio_assuncao em ibest.com.br wrote:
> ola, pessoal
>
> Um Companheiro , tempos atras em deu uma dica de como trocar uma linha
> da consulta SQL a partir de um comando enviado
> Por exemplo :
>
> select p.codigo,
> p.preco
> g.id_grupo
> from tbproduto p
> inner join tbgrupo g on(g.id_grupo = p.id_grupo)
>
> ai.. conforme o omando recebido contruo a clausula where
>
> if comando = f10
> coluna:=' REFERENCIA'
> sql.add('where p.'+Campo+'LIKE ' + quotestr(campodebusca));
> else
> coluna:=' DESCRICAO'
> sql.add('where p.'+Campo+'LIKE ' + quotestr(campodebusca));
> endif
>
> Como estou usando um sql.add do componente TSQLQuery do IBExpress
> na segunda execucao , gera uma erro, claro ficam duas clausulas where :(
>
> Queria substrituir a linha do Consulta
> if comando = f10
> coluna:=' REFERENCIA'
> sql.[6]:=('where p.'+Campo+'LIKE ' + quotestr(campodebusca));
> else
> coluna:=' DESCRICAO'
> sql.[6]:=('where p.'+Campo+'LIKE ' + quotestr(campodebusca));
> endif
>
> E possivel né ....hehe
>
> [ ]'s
> Savio Assuncao
> D6 + IbExpress + FB1.0
>
>
>
> Conheça o novo iBest Acelerado e aumente a velocidade da sua navegação em até 5 vezes. O primeiro mês é gratuito. Basta acessar o endereço http://www.ibest.com.br/acelerado para se cadastrar.
>
>
>
> ------------------------------------------------------------------------
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Mais detalhes sobre a lista de discussão lista