Fórum Ajuda para melhorar o código de conexão e atualização do banco #588693

10/11/2017

0

Por favor gostaria da ajuda dos colegas para enxugar o código que segue

procedure TFrmPrincipal.BtnAtualizaClick(Sender: TObject);
var
    com_erro : boolean;
    mostra_erro : boolean;
    arquivo, str : String;
    codigo, cnpjcpf : String;
    FD : TextFile;
begin
    com_erro := false;
    mostra_erro := TRUE;
    BtnAtualiza.Enabled := False;
    BtnSair.Enabled := False;

    if strtofloat(Troca_Val_Ponto(versao_atual_lida)) = StrToFloat( Troca_Val_Ponto(nova_versao)) then
    begin
        Application.messagebox ('Esta versão já foi aplicada nesta máquina.'+#13+'IMPOSSÍVEL CONTINUAR!','AVISO!!!',MB_OK + MB_ICONERROR);
        Label1.Caption := '';
        BtnSair.Enabled := true;
        exit;
    end;

    if not checa_versoes() then
    begin
        BtnSair.Enabled := true;
        exit;
    end;

    try
        BtnSair.Enabled := False;
        Label1.Caption := 'Aguarde Atualizando...';
        Application.ProcessMessages;
        sleep(1000);

        if FileExists('C:\\POSTO_NOVO\\DADOS\\POSTO.FDB') then
        begin
            FDNum_Conexoes.Active := False;
            FDNum_Conexoes.Active := True;
            if not (FDNum_ConexoesCONEXOES.Value = 1) then
            Begin
                Application.messagebox ('Existe mais de um usuário conectado.','Aviso!',MB_OK + MB_ICONEXCLAMATION);
                Label1.Caption := '';
                BtnSair.Enabled := False;
                BtnAtualiza.Enabled := TRUE;
                exit;
            end;

            Try
                FDConnection.Connected := false;
                FDConnection.Connected := true;
                FDConnection.StartTransaction;
                Label1.Caption := 'Módulo 01...';
                Application.ProcessMessages;
                FDScript1.ExecuteAll;
                SLEEP (500);
            except
                on E:Exception do
                begin
                    if mostra_erro then
                        Application.messagebox (pchar('ERRO: '+E.message
                            +#13+'COMUNIQUE AO CPD ESTA MENSAGEM.'),'AVISO!!!',MB_OK + MB_ICONERROR);
                    com_erro := true;
                    raise;
                end;
            end;

            Try
                FDConnection.Connected := false;
                FDConnection.Connected := true;
                FDConnection.StartTransaction;
                Label1.Caption := 'Módulo 02...';
                Application.ProcessMessages;
                FDScript2.ExecuteAll;
                SLEEP (500);
            except
                on E:Exception do
                begin
                    if mostra_erro then
                        Application.messagebox (pchar('ERRO: '+E.message
                            +#13+'COMUNIQUE AO CPD ESTA MENSAGEM.'),'AVISO!!!',MB_OK + MB_ICONERROR);
                    com_erro := true;
                    raise;
                end;
            end;

            Try
                FDConnection.Connected := false;
                FDConnection.Connected := true;
                FDConnection.StartTransaction;
                Label1.Caption := 'Módulo 03...';
                Application.ProcessMessages;
                FDScript3.ExecuteAll;
                SLEEP (500);
            except
                on E:Exception do
                begin
                   if mostra_erro then
                        Application.messagebox (pchar('ERRO: '+E.message
                            +#13+'COMUNIQUE AO CPD ESTA MENSAGEM.'),'AVISO!!!',MB_OK + MB_ICONERROR);
                    com_erro := true;
                    raise;
                end;
            end;

            Try
                FDConnection.Connected := false;
                FDConnection.Connected := true;
                FDConnection.StartTransaction;
                Label1.Caption := 'Módulo 04...';
                Application.ProcessMessages;
                FDScript4.ExecuteAll;
                SLEEP (500);
            except
                on E:Exception do
                begin
                   if mostra_erro then
                        Application.messagebox (pchar('ERRO: '+E.message
                            +#13+'COMUNIQUE AO CPD ESTA MENSAGEM.'),'AVISO!!!',MB_OK + MB_ICONERROR);
                    com_erro := true;
                    raise;
                end;
            end;

            if (not com_erro) and (FDConnection.InTransaction) then
            begin
                FDConnection.CommitRetaining;
                Label1.Caption := '';
            end;
        end;
        Grava_chave_reg ('Posto', 'Versao', nova_versao, g_nome_ini);
        Grava_chave_reg ('PathDados', 'Posto', path, g_nome_ini);
        Label1.Caption := 'Processo Concluido...';
    finally
        BtnSair.Enabled := True;
        Application.ProcessMessages;
        BtnSair.Enabled := True;
    end;

    BtnSair.Enabled := True;
end;
Emanuel Gonçalves

Emanuel Gonçalves

Responder

Posts

10/11/2017

Luiz Vichiatto

Retire as linhas dos sleep, se não espera por outros processos que ocorrem em outros computadores ou outro sistemas. São necessários ?

Se a exceção encerrar, ou não permitir, você pode colocar uma única encerrando a tratativa de todo o conjunto, ficando apenas com a mensagem de erro da exception, neste caso é melhor utilizar transaction, assim realiza o rollback.

Procure fazer todas as validações e bloqueios antes de iniciar o processamentos, isso reduz código

Crie uma função na abre e fecha exemplo.
procedure TFrmPrincipal.BtnAtualizaClick(Sender: TObject);
var
    com_erro : boolean;
    mostra_erro : boolean;
    arquivo, str : String;
    codigo, cnpjcpf : String;
    FD : TextFile;

   // procedure local, somente procedure TFrmPrincipal.BtnAtualizaClick(Sender: TObject), poderá utilizar.
   procedure FechaAbre(Tobject : oObjeto)
      oObjeto.Connected := False;
      oObjeto.Connected := true; 
   end

begin

   //...... continua código

        if FileExists('C:\\\\POSTO_NOVO\\\\DADOS\\\\POSTO.FDB') then
        begin
            FechaAbre(FDNum_Conexoes.Active)

   //...... continua código

end;



E vai refatorando, até que irá ter um código mais enxuto possível....

Espero ter ajudado.
Responder

Gostei + 0

11/11/2017

Emanuel Gonçalves

Obrigado Luiz, você foi de grande ajuda.


Retire as linhas dos sleep, se não espera por outros processos que ocorrem em outros computadores ou outro sistemas. São necessários ?

Se a exceção encerrar, ou não permitir, você pode colocar uma única encerrando a tratativa de todo o conjunto, ficando apenas com a mensagem de erro da exception, neste caso é melhor utilizar transaction, assim realiza o rollback.

Procure fazer todas as validações e bloqueios antes de iniciar o processamentos, isso reduz código

Crie uma função na abre e fecha exemplo.
procedure TFrmPrincipal.BtnAtualizaClick(Sender: TObject);
var
    com_erro : boolean;
    mostra_erro : boolean;
    arquivo, str : String;
    codigo, cnpjcpf : String;
    FD : TextFile;

   // procedure local, somente procedure TFrmPrincipal.BtnAtualizaClick(Sender: TObject), poderá utilizar.
   procedure FechaAbre(Tobject : oObjeto)
      oObjeto.Connected := False;
      oObjeto.Connected := true; 
   end

begin

   //...... continua código

        if FileExists('C:\\\\\\\\POSTO_NOVO\\\\\\\\DADOS\\\\\\\\POSTO.FDB') then
        begin
            FechaAbre(FDNum_Conexoes.Active)

   //...... continua código

end;



E vai refatorando, até que irá ter um código mais enxuto possível....

Espero ter ajudado.
Responder

Gostei + 0

11/11/2017

James

Whatsapp (+61 411 679 961) (Whatsapp + 447459247070) ou visite (http://www.buypassportsonline.info) para comprar high-

qualidade, passaporte real, visto, carta de condução, cartões de identidade, certificados de casamento,
Diplomas. Somos uma equipe de profissionais com muitos anos de experiência na produção de

e passaportes falsos e outros documentos de identidade, os melhores produtores de qualidade real e

documentos falsos. Com mais de milhões de documentos circulando no mundo.
Nós oferecemos apenas passaporte verdadeiramente falso original de primeira qualidade, carta de condução,
Cartões de identificação, selos, certificados de nascimento, diplomas falsos internacionais e outros produtos para um

número de países como EUA, Austrália, Bélgica, Brasil, Noruega, Canadá, Itália, Finlândia,

França, Alemanha, Israel, México, Holanda, África do Sul, Espanha, Reino Unido.
Está lista não está completa.
Para obter mais informações e colocar à direita
entre em contato conosco por e-mail ou whatsapp.

contato. smithproductionltd@gmail.com
Whatsapp ....... + 61 411 679 961
ou
Whatsapp ....... + 44 745 924 7070
Website ........ http: //www.buypassportsonline.info

Entre em contato conosco via e-mail ou whatsapp a qualquer momento e com qualquer critério.
TÓPICOS:
COMPRAR passaportes falsos
Obter o passaporte dos EUA (Estados Unidos)
Compre seus passaportes australianos (Austrália)
Obter o seu passaporte belga (Bélgica)
Obtenha seus passaportes do Reino Unido (Reino Unido)
Compre seu passaporte russo (Rússia)
Obter o seu passaporte da Hungria (Hungria)
Obtenha seu passaporte da Austrália (Austrália)
Compre seu passaporte croata (Croácia)
Obter o seu passaporte da Dinamarca (Dinamarca)
Obtenha seu passaporte para Malta (Malta)
Obter o seu passaporte polonês (Polônia)
Compre seu passaporte sueco (Suécia)
etc.
Compre seus cartões de identificação
Compre sua ID US (Estados Unidos)
Compre seu ID de Austrália (Austrália)
Compre seu ID de Bélgica (Bélgica)
Compre seu ID do Brasil (Brasil)
Os canadenses compram documentos falsos (Canadá)
Compre seu ID francês (França)
Obtenha sua ID para o alemão (Alemanha)
Compre seu ID de espanhol (Espanha)
Compre seu ID (México)
Compre seus cartões de identificação África do Sul (África do Sul)
Compre seu ID Swiss (Suíça)
Obtenha sua ID para o alemão (Alemanha)
Compre seu ID de China (China)
Compre seu ID da Rússia (Rússia)
Compre seu ID de Hungria (Hungria)
Compre seu ID de Austrália (Austrália)
Compre seu ID do Brasil (Brasil)
Compre seu ID italiano (Itália)
Compre seu ID Jamaica (Jamaica)
Compre sua ID Coreia do Sul (Coréia do Sul)
Compre sua identidade sueca (Suécia)
etc.
COMPRA LICENÇA DE CONDUTORES FALSOS
Compre uma licença na Austrália (Austrália)
Compre licenças de motorista canadense (Canadá)
Compre sua carta de condução francesa (França)
Compre sua licença Dutch (Netherlands / Netherlands)
Compre sua carta de condução alemã (Alemanha)
Compre sua licença do Reino Unido (Reino Unido)
Compre sua carteira de motorista na Suíça (Suíça)
Compre sua carta de condução cambojana (Camboja)
Compre uma licença da Austrália (Austrália)
Compre sua licença da Rússia (Rússia)
Compre licenças de motorista canadense (Canadá)
Compre sua carta de condução francesa (França)
Compre sua Permissão de condução internacional
Compre sua carteira de motorista dos EUA
Compre sua carta de condução espanhola (Espanha)
Compre sua carta de condução Português (Portugal)
Compre sua permissão de condução Hungarian (Hungary)
Compre uma carteira de motorista
Compre sua carta de condução francesa (França)
Compre sua carta de condução alemã (Alemanha)
Compre sua licença do Reino Unido (Reino Unido)
Compre sua licença Noruega (Noruega)
Compre uma licença do Brasil (Brasil)
Compre sua licença Dinamarca (Dinamarca)

CONTATE-NOS
Whatsapp ....... + 61 411 679 961
Whatsapp ....... + 44 745 924 7070
Contato com o email: (smithproductionltd@gmail.com)
site http://www.buypassportsonline.info
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar