PostGreSQL filtro para pesquisa


Boa noite
Precisei fazer um filtro em um campo varchar aonde são cadastrado os codigos dos produtos
e o sistema de gestão possibilita cadastrar da seguinte forma ’0000001′ ou ’000010′
a pessoa gostaria de digitar o número 1 e efetuar o filtro
usando o comando LTRIM no sql consegui tratar
ficando  assim

WHERE
LTRIM(CAMPO,’0′) = 1

Backup PostgreSQL em pascal

Boa noite
estou escrevendo este artigo pois necessitei gerar um aplicativo para fazer backup do postgresql.
usando o pg_dump fiz um programa que fizesse criação de um arquivo de lote em especifico pra gerar o backup.
Há ele foi projetado pra fazer backup de varias bases.

no formulario coloquei 2 Edit 4 botões é uma grade:
os edit´s para informar o local aonde se encontra instalado o postgresql e o outro para informar aonde deve ficar os backups.
na grade usei um memdataset para salvar os dados como host, porta, banco, usuario e senha

com isso ao clicar no botão iniciar ele vai passar vendo todos os bancos e gerando backup de cada um

procedure TfrPrincipal.btnIniciarClick(Sender: TObject);
const
  COMANDO =
    ‘”%spg_dump.exe” –host %s –port %d –username %s –format custom –blobs –verbose –file “%s” %s’;
var
  ArqBat, diretorio, arquivo, arqZip, email, Senha: string;
  f: TextFile;
  xCMD: TProcess;
begin
  diretorio := IncludeTrailingPathDelimiter(eDestino.Text);


  MemDataset1.First;
  while not (MemDataset1.EOF) do
  begin
    arquivo := Format(‘%sbkp-%s-%s.backup’, [diretorio,
      MemDataset1.Fields[2].AsString, FormatDateTime(‘YYYY-MM-DD_HHNN’, now)]);


    xCMD   := TProcess.Create(nil);
    ArqBat := ExtractFileDir(arquivo) + ‘backup.bat’;


    AssignFile(f, ArqBat);
    try
      Rewrite(f);
      Writeln(f, Format(‘set pgpassword=%s’, [MemDataset1.Fields[4].AsString]));
      Writeln(f, Format(COMANDO, [IncludeTrailingPathDelimiter(eBin.Text),{}
        MemDataset1.Fields[0].AsString, MemDataset1.Fields[1].AsInteger,
        MemDataset1.Fields[3].AsString, arquivo,
        MemDataset1.Fields[3].AsString]));


      CloseFile(f);


      xCMD.CommandLine := Format(‘cmd /c %s’, [ArqBat]);
      xCMD.Options     := [poWaitOnExit];
      xCMD.Execute;




    finally
      xCMD.Free;
      DeleteFile(PAnsiChar(ArqBat));
    end;


    MemDataset1.Next;
  end;
  ShowMessage(‘Backup Efetuado com Sucesso!’);
end;


Espero ter ajudado a todos
Obs: Foi usado Lazarus para desenvolver a aplicação.

Delphi Form Maximizado sem Borda

Bom dia
Vou começar meu blog postando algo que fiquei dois dias para resolver.

Precisava de uma tela que ficasse maximizada, mas sem borda, ao remover o BorderStyle para bsNone, ela ocupava todo o desktop, e habilitando ele mostrava a borda.
Abaixo segue a resolução:

Deixe o windowstate=wsnormal, munde o BorderStyle para bsnone.

adicione abaixo na sua unit
private
procedure WMGetMinmaxInfo(var Msg: TWMGetMinmaxInfo);
message WM_GETMINMAXINFO;
// …


Implemente o outro codigo abaixo no corpo da procedure


var
R: TRect;
begin
inherited;

// Obtem o retangulo com a area livre do desktop
SystemParametersInfo(SPI_GETWORKAREA, SizeOf(R), @R, 0);

Msg.MinMaxInfo^.ptMaxPosition := R.TopLeft;
OffsetRect(R, -R.Left, -R.Top);
Msg.MinMaxInfo^.ptMaxSize := R.BottomRight;


e no OnCreate do form implemente o seguinte codigo


SendMessage(Handle, WM_SYSCOMMAND, SC_MAXIMIZE, 0);


Pronto seu form estará sem borda e maximizado

%d bloggers like this: