Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

O carregamento do logotipo do DACT-e (FastReport 5.x) funcionava de maneira correta, ao carregar de um stream, utilizando o código abaixo:

    imgFR := TLogotipoFR.Create(DadosFilho.qryJoker);
    stLogo := TStringStream.Create;
    imgFR.SetEmpresa(FPrincipal.iIDEmpresa);
    imgFR.Load(stLogo);
    imgFR.Free;
    CTe.DACTe.Logo := stLogo.DataString;
    stLogo.Free;
 

Após a migração para o Trunk2, ao exibir um DACT-e, ocorre um acess violation. Isolando o trecho de código acima (deixando o logo em branco), o DACT-e é exibido corretamente.

Att.

Postado (editado)

Bom Dia, Juliomar

  Na verdade, este é o trecho de código que utilizo para carregar o logotipo do banco de dados. Ele está correto, pois funcionava perfeitamente no trunk1 do acbr. E o mesmo trecho é utilizado para carregar o logotipo na geração do DANF-e, no Trunk2.

  Apenas no DACT-e, do trunk2, é que o erro ocorre.

 

Att

Editado por joedbat
Acrescentar informações.
  • 4 semanas depois ...
Postado

Bom dia,

  Sim, eu atualizei os arquivos .FR3. A versão que estou utilizando do FastReport é a 5.3.5

  Ainda assim o erro persiste. O código é o mesmo que utilizo pra a geração da NF-e, que funciona a contento.

 Se tento passar apenas um arquivo como parâmetro, também funciona.

 Só está ocorrendo erro ao tentar carregar o logotipo de um Stream.

 Na versão anterior do ACBr, funcionava. Inclusive, eu é que submeti os arquivos com a sugestão de mudança para utilizar o logotipo a partir de um stream, conforme descrito no tópico:

Esta necessidade surgiu, porque o sistema é multi-empresa, com várias empresas acessando simultaneamente. Portanto, a carga do logotipo via stream, é a alternativa mais adequada para imprimir diferentes logotipos.

 

Agradeço pela atenção dispensada.

  • Moderadores
Postado

Boa noite!

voltei a conferir o código e os dois correspondem!

se isso funciona na nf-e e no ct-e não  a única coisa que posso indagar é o arquivo stream está errado!

veja:

DANFe
    // Carregamento da imagem
    if NaoEstaVazio(DANFEClassOwner.Logo) then
    begin
      FieldByName('Imagem').AsString := DANFEClassOwner.Logo;
      vStream := TMemoryStream.Create;
      try
        if FileExists(DANFEClassOwner.Logo) then
          vStream.LoadFromFile(DANFEClassOwner.Logo)
        else
        begin
          vStringStream:= TStringStream.Create(DANFEClassOwner.Logo);
          try
            vStream.LoadFromStream(vStringStream);
          finally
            vStringStream.Free;
          end;
        end;
        vStream.Position := 0;
        TBlobField(cdsParametros.FieldByName('LogoCarregado')).LoadFromStream(vStream);
      finally
        vStream.Free;
      end;
    end;

DACTe
    // Carregamento da imagem
    if DACTEClassOwner.Logo <> '' then
    begin
      FieldByName('Imagem').AsString := DACTEClassOwner.Logo;
      vStream                        := TMemoryStream.Create;
      try
        if FileExists(DACTEClassOwner.Logo) then
          vStream.LoadFromFile(DACTEClassOwner.Logo)
        else
        begin
          vStringStream := TStringStream.Create(DACTEClassOwner.Logo);
          try
            vStream.LoadFromStream(vStringStream);
          finally
            vStringStream.Free;
          end;
        end;
        vStream.Position := 0;
        TBlobField(cdsParametros.FieldByName('LogoCarregado')).LoadFromStream(vStream);
      finally
        vStream.Free;
      end;
    end;

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Boa tarde,

  É realmente estranho. Eu já havia conferido o código e os dois batiam. Até tentei salvar novamente arquivo .fr3, achando que poderia estar corrompido.

  Apenas para testar, eu fiz o seguinte. Ao invés de carregar o stream do Banco, eu simplesmente carreguei o BMP direto do arquivo. Não funcionou, continua dando o mesmo erro. Se eu indico direto mesmo arquivo, funciona.

Seguem abaixo os dois trechos de código:

Não funciona: 

    stLogo := TStringStream.Create;
    stLogo.LoadFromFile('C:\CTe\Logo.Bmp');
    CTe.DACTe.Logo := stLogo.DataString;
    stLogo.Free;
 

Funciona:

    CTe.DACTe.Logo := 'C:\CTe\Logo.bmp';
 

  • Moderadores
Postado
Em 29/02/2016 at 15:43, joedbat disse:

Boa tarde,

  É realmente estranho. Eu já havia conferido o código e os dois batiam. Até tentei salvar novamente arquivo .fr3, achando que poderia estar corrompido.

  Apenas para testar, eu fiz o seguinte. Ao invés de carregar o stream do Banco, eu simplesmente carreguei o BMP direto do arquivo. Não funcionou, continua dando o mesmo erro. Se eu indico direto mesmo arquivo, funciona.

Seguem abaixo os dois trechos de código:

Não funciona: 

    stLogo := TStringStream.Create;
    stLogo.LoadFromFile('C:\CTe\Logo.Bmp');
    CTe.DACTe.Logo := stLogo.DataString;
    stLogo.Free;
 

Funciona:

    CTe.DACTe.Logo := 'C:\CTe\Logo.bmp';
 

Por favor queira testar pois subi modificações ao svn!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Transparent-02.png
 

 

Postado

Bom dia,

  Infelizmente, o problema permanece. Atualize, inclusive os arquivos de exemplo e continua o mesmo problema

  Estou utilizando o arquivo DACTe.fr3

  • 1 ano depois...
Postado

Boa tarde pessoal,

  - Utilizo Delphi 7 com a versão do Fast Report 5.0. 

  - Também estou com o mesmo problema, não consigo carregar o logotipo que esta salvo em meu banco de dados em um campo do tipo Blob. Segue rotina abaixo:

  //Abaixo rotina em meu programa para alimentar o Logo:

  vLogo := TStringStream.Create('');
  try
    vLogo.WriteString(dm_VariaveisCte.qryManutencaoLOGO.AsString); //Campo Blob onde esta salvo meu logotipo!
    CTeDACTe.Logo := vLogo.DataString;
  finally
    FreeAndNil(vLogo);
  end;

    //Abaixo unit ACBrCTeDACTEFR, rotina que carrega o logotipo.
    if DACTEClassOwner.Logo <> '' then
    begin
      FieldByName('Imagem').AsString := DACTEClassOwner.Logo;
      vStream                        := TMemoryStream.Create;
      try
        if FileExists(DACTEClassOwner.Logo) then
          vStream.LoadFromFile(DACTEClassOwner.Logo)
        else
        begin
          vStringStream := TStringStream.Create(DACTEClassOwner.Logo);
          try
            vStream.LoadFromStream(vStringStream);
          finally
            vStringStream.Free;
          end;
        end;
        vStream.Position := 0;
        TBlobField(cdsParametros.FieldByName('LogoCarregado')).LoadFromStream(vStream);
      finally
        vStream.Free;
      end;
    end;  

OBS: Passa pela rotina acima sem erros alimentando com os dados do campo blob aparentemente perfeitamente, porém ao visualizar ocorre "access violation".

Caso passe um caminho, exemplo: "C:\Logotipo\Logo.jpg", funciona! Alguém teria uma luz? Meus fontes estão atualizados!

  

 

 

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