quinta-feira, 18 de março de 2010

Logar consulta SQL com parâmetros

Olá!

Eventualmente você precisa logar o conteúdo de uma instrução SQL e esbarra nos parâmetros.

Eis uma rotina que pode lhe ser útil:

function SQLParaLog(Consulta: TIBQuery; SalvarComo: string = ''; AreaTransferencia: Boolean = True): string;
var
i   : Integer;
r   : string;
arq : TStringList;
begin
  Result := Consulta.SQL.Text;
  for i := 0 to Pred(Consulta.Params.Count) do
    begin
    case Consulta.Params.Items[i].DataType of
      ftString   : r := QuotedStr(Consulta.Params[i].AsString);
      ftDate     : r := QuotedStr(FormatDateTime('mm/dd/yyyy',Consulta.Params[i].AsDate));
      ftDateTime : r := QuotedStr(FormatDateTime('mm/dd/yyyy hh:nn:ss',Consulta.Params[i].AsDateTime));
      else r := Consulta.Params[i].AsString;
    end;
    Result := StringReplace(Result,':' + Consulta.Params.Items[i].Name,r,[rfReplaceAll,rfIgnoreCase]);
    end;
  if (Length(SalvarComo) > 0) then
    begin
    arq := TStringList.Create;
    arq.Text := Result;
    arq.SaveToFile(SalvarComo);
    FreeAndNil(arq);
    end;
  if (AreaTransferencia) then
    begin
    Clipboard.AsText := Result;
    end;
end;

Minha lista de blogs