A dica de hoje tem o objetivo de demonstrar como podemos criar uma instrução para query dinâmica mas rápido.
Quando a Instrução e grande fazer na mão se torna demorado, e porque não criar algo que ajude. colando o sql puro TMemo -> Origem e gerando o precisamos no TMemo -> destino, além de informar a posição do field.
Talvez o código talvez não seja dos melhores, mas o que importa e fazer o que propõe.
with Qry.SQL do
begin
Add('SELECT');
Add(' produto.descricao_produto);
Add(' FROM');
Add(' public.produto);
end;
var
I,
iCont: Integer;
bOK: Boolean;
sNum,
sText,
sAux : String;
begin
{ Define valor inicial das variaveis }
iCont := -1;
bOK := False;
{ Limpa o Memo Destino }
mmoDestino.Clear;
for i := 0 to mmoOrigem.Lines.Count -1 do
begin
{ Identifica a posicao do Field }
sNum := FormatFloat('00', iCont);
{ Recebe a linha de Origem }
sText := mmoOrigem.Lines.Strings[I];
{ Remove Espaco em branco do final da Variavel -> StrText }
sAux := TrimRight(sText);
{ Nao Adiciona Posicao do Field }
if I = 0 then
begin
sText := sAux;
mmoDestino.Lines.Append(' Add( ' + QuotedStr(sText) + ');');
end
else
begin
{ Verifica se a instrucao chegou na Linha From para poder encerrar o
adicionar Posicao do Field }
if Pos('FROM', sText) <> 0 then
begin
bOK := True;
sText := ' ' + sAux;
mmoDestino.Lines.Append(' Add( ' + QuotedStr(sText) + ');');
end
{ Encerra Adicionar Posicao do Field }
else if bOK then
begin
sText := ' ' + sAux;
mmoDestino.Lines.Append(' Add( ' + QuotedStr(sText) + ');');
end
else
{ Posicao do Field }
begin
sText := ' ' + sAux;
mmoDestino.Lines.Append('{' + sNum + '} Add( ' + QuotedStr(sText) + ');');
end;
end;
inc(iCont);
end;