Ir para conteúdo
  • Cadastre-se

dev botao

Duvida Arquivomfd_Dll Bematech


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 4106 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Ao gerar o arquivo ArquivoMFD_DLL ele ta passando o seguinte valor para a variável FileMask, abaixo:

 

 FileMask := FilePath + Prefixo + Trim(NumSerie) + '_' + FormatDateTime('yyyymmdd',Now ) + '_*.TXT';

 

Observei que ao pesquisar o arquivo no "FindFiles( FileMask, Arquivos );" ele não encontra o arquivo, motivo devido o formato "yyyymmdd", pois o file esta sendo gerando no formato 'BENumSerie_ddmmyyyy_ddmmyyyy.TXT', gostaria de saber se existe alguma configuração para gerar o arquivo no formato da Acbr?

 

Observação: Unit que estou me referindo é a ACBrECFBematech.pas e não a rotina da procedure em 

 

     if Arquivos.Count < 1 then
        raise EACBrECFErro.Create( ACBrStr( 'Erro na execução de xBematech_FI_ArquivoMFD.'+sLineBreak+
                                'Arquivo: "'+NomeArquivo + '" não gerado' )) ;

 

 

Desde já, obrigado.

  • Consultores
Postado

Será que a versão de sua dll não está desatualizada?

Dê informações completas sobre seu ambiente.

[]'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.
  • 1 mês depois ...
Postado

Bom dia!

 

Realmente a DLL alterou o formato e na DLL atual (6.1.2.0) esta gerando no formato que o Acbr esta gerando.

 

Porém estou tendo um problema grave, o componente gera certo:

 

  FileMask := FilePath + Prefixo + Trim(NumSerie) + '_' + FormatDateTime('yyyymmdd',Now ) + '_*.TXT';

 

E a DLL também, só que a DLL esta gerando o número de série com 15 dígitos e não com 20 dígitos, ou seja:

 

DLL Bematech 6.1.2.0 = MFDBE0507756007000_20130828_112744

Acbr                             = MFDBE050775600700013969_20130828_112744

 

Alguém passou por este problema?

  • Fundadores
Postado

Poderiamos ajustar para:

 

  FileMask := FilePath + Prefixo + LeftStr(Trim(NumSerie),15) + '_' + FormatDateTime('yyyymmdd',Now ) + '_*.TXT';

 

e talvez fazer 2 IFs para verificar se o arquivo existe com 20 ou 15 caracteres

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

  • Consultores
Postado

Verifique se gerando pela  dll você está usando o método NumSerieMFD

[]'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.
Postado

Verifique se gerando pela  dll você está usando o método NumSerieMFD

 

Quando digo pela DLL quero dizer o comando xBematech_FI_ArquivoMFD que o ACBr solicita para DLL, ou seja, é o nome do arquivo é gerado pela DLL da Bematech

 

Poderiamos ajustar para:

 

  FileMask := FilePath + Prefixo + LeftStr(Trim(NumSerie),15) + '_' + FormatDateTime('yyyymmdd',Now ) + '_*.TXT';

 

e talvez fazer 2 IFs para verificar se o arquivo existe com 20 ou 15 caracteres

 

Então, creio que não deva mudar para 15 dígitos não, pois ainda não tenho certeza se em todos modelos vão vir 15 dígitos, na minha opinião deveria comparar das 2 formas

 

Sugestão:

 

________________________________________________________________________________________________

 

FileMask := FilePath + Prefixo + Trim(NumSerie) + '_' +

              FormatDateTime('yyyymmdd',Now ) + '_*.TXT';    // Nome do arquivo retornado pela DLL com número de série correto

FileMask2:= FilePath + Prefixo + Copy(Trim(NumSerie),1,15) + '_' +

              FormatDateTime('yyyymmdd',Now ) + '_*.TXT';    // Nome do arquivo retornado pela DLL com número de série constando apenas os 15 primeiros caracteres.

  Arquivos := TStringList.Create;

  OldAtivo := Ativo ;

  try

     DeleteFile( NomeArquivo );

     DeleteFiles( FileMask );

     DeleteFiles( FileMask2 );

     AbrePortaSerialDLL( FilePath ) ;

     Resp := xBematech_FI_ArquivoMFD( '', DiaIni, DiaFim, 'D', Prop, Tipo,

                                      cChavePublica, cChavePrivada, 1 ) ;

     if (Resp <> 1) then

        raise EACBrECFErro.Create( ACBrStr( 'Erro ao executar xBematech_FI_ArquivoMFD.'+sLineBreak+

                                         AnalisarRetornoDll(Resp) )) ;

     FindFiles( FileMask, Arquivos );

     if Arquivos.Count < 1 then Begin

        FindFiles( FileMask2, Arquivos );

        if Arquivos.Count < 1 then Begin

           raise EACBrECFErro.Create( ACBrStr( 'Erro na execução de xBematech_FI_ArquivoMFD.'+sLineBreak+

                                'Arquivo: "'+NomeArquivo + '" não gerado' )) ;

        End;

     End;

     RenameFile( Arquivos[0], NomeArquivo );

  finally

     Arquivos.Free;

     FechaPortaSerialDLL( OldAtivo );

  end;

 

________________________________________________________________________________________________

 

Em vermelho o que eu mudei. Desta forma da certo tanto se o nome do arquivo retornar com 15 dígitos, quanto com 20 dígitos

  • Este tópico foi criado há 4106 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...