Ir para conteúdo
  • Cadastre-se

dev botao

Dica - Gerador de Intrução SQL para Query dinâmica


alves_sp
  • Este tópico foi criado há 2389 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

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;

 

Formatador.png

Link para o comentário
Compartilhar em outros sites

  • Consultores

O CnPack tem uma ferramenta para fazer essa conversão. Fica integrado a IDE, o que bem prático. E tem muitas outras funcionalidades (blog post em italiano).

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 2389 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...