Ir para conteúdo
  • Cadastre-se

dev botao

Etiquetas 3 colunas com ACBRETQ


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

Recommended Posts

  • Membros Pro

Gostaria de saber se é possível imprimir codigos de barras de padrão diferente dependendo do tamanho do código do produto. Explico: No cadastro de produto tenho produtos com códigos de barra e produtos sem códigos de barra. Esses sem código de barras utiliza um código menor tipo um sequencial (ex: 1015). Quando estou imprimindo as etiquetas utilizo  barCODE128. Pra os códigos menor que 13 digitos tipo 1015 dá certo, mas no caso de codigo de barras as barras não cabem na etiqueta pois utilizo 3 colunas. Por isso a dúvida se é possivel quando enviar o comando dependendo do tamanho do código envio com barCODE128 caso contrário barEAN13? Fiz um teste mas não deu certo conforme codigo abaixo:

         IniciarEtiqueta;
         xtam:=Length(dm.tb_etiquetasCODIGO.Value);         
         ImprimirTexto(orNormal, '0', 20, 30, 2, 3, 'R$ '+ formatfloat('##,##0.00',dm.tb_etiquetasPVENDA.Value));
         ImprimirTexto(orNormal, '0', 20, 20, 6, 3, dm.tb_etiquetasNOME.Value);
         if xtam<13 then ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 3,dm.tb_etiquetasCODIGO.Value, 8,becSIM)
         else
             ImprimirBarras(orNormal,   barEAN13, 2, 4, 10, 3,dm.tb_etiquetasCODIGO.Value, 8,becSIM)

 

Agradeço a atenção.

Gilson Heleno - SPMICRO

Link para o comentário
Compartilhar em outros sites

  • Consultores
Em 24/01/2020 at 17:41, Gilson Heleno disse:

Gostaria de saber se é possível imprimir codigos de barras de padrão diferente dependendo do tamanho do código do produto. Explico: No cadastro de produto tenho produtos com códigos de barra e produtos sem códigos de barra. Esses sem código de barras utiliza um código menor tipo um sequencial (ex: 1015). Quando estou imprimindo as etiquetas utilizo  barCODE128. Pra os códigos menor que 13 digitos tipo 1015 dá certo, mas no caso de codigo de barras as barras não cabem na etiqueta pois utilizo 3 colunas. Por isso a dúvida se é possivel quando enviar o comando dependendo do tamanho do código envio com barCODE128 caso contrário barEAN13? Fiz um teste mas não deu certo conforme codigo abaixo:

         IniciarEtiqueta;
         xtam:=Length(dm.tb_etiquetasCODIGO.Value);         
         ImprimirTexto(orNormal, '0', 20, 30, 2, 3, 'R$ '+ formatfloat('##,##0.00',dm.tb_etiquetasPVENDA.Value));
         ImprimirTexto(orNormal, '0', 20, 20, 6, 3, dm.tb_etiquetasNOME.Value);
         if xtam<13 then ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 3,dm.tb_etiquetasCODIGO.Value, 8,becSIM)
         else
             ImprimirBarras(orNormal,   barEAN13, 2, 4, 10, 3,dm.tb_etiquetasCODIGO.Value, 8,becSIM)

 

Agradeço a atenção.

Gilson Heleno - SPMICRO

Sim, é possível imprimir o tipo do código de barras de acordo com o tamanho. Aparentemente o seu código está correto, verifique se o conteúdo da variável 'xtam' é realmente um EAN13 válido.

Uma sugestão para garantir isso seria algo como:

if (xtam = 13) and (EAN13Valido(dm.tb_etiquetasCODIGO.Value)) then
  ImprimirBarras(orNormal, barEAN13, 2, 4, 10, 3,dm.tb_etiquetasCODIGO.Value, 8, becSIM)
else
  ImprimirBarras(orNormal, barCODE128, 2, 4, 10, 3,dm.tb_etiquetasCODIGO.Value, 8, becSIM);

(Obs: Para utilizar a função EAN13Valido() inclua a unit ACBrUtil.pas nas uses)

Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Boa tarde! agradeço a dica. vou realizar os teste. Outro problema que esqueci de comentar é quando mando imprimir exemplo 7 etiquetas. Como utilizo 3 colunas então as duas ultima era pra sair em branco. Mas ele preenche as duas ultimas com informação do ultimo item. Tem idéia como posso resolver? Segue codigo para analise:

 tb_etiqtemp.First;
   AtivarACBrETQ;
   with ACBrETQ do
   begin
      while not tb_etiqtemp.eof do
      begin
//         xtam:=Length(dm.tb_etiquetasCODIGO.Value);
         IniciarEtiqueta;
         ImprimirTexto(orNormal, '0', 20, 30, 2, 3, 'R$ '+ formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
         ImprimirTexto(orNormal, '0', 20, 20, 6, 3, tb_etiqtempNOME.Value);
         ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 3,tb_etiqtempCODIGO.Value, 8,becSIM);

         tb_etiqtemp.Next;
         ImprimirTexto(orNormal, '0', 20, 30, 2, 37, 'R$ '+ formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
         ImprimirTexto(orNormal, '0', 20, 20, 6, 37, tb_etiqtempNOME.Value);
         ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 37,tb_etiqtempCODIGO.Value, 8,becSIM);


         tb_etiqtemp.Next;
         ImprimirTexto(orNormal, '0', 20, 30, 2, 72, 'R$ '+formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
         ImprimirTexto(orNormal, '0', 20, 20, 6, 72, tb_etiqtempNOME.Value);
         ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 72,tb_etiqtempCODIGO.Value, 8,becSIM);

         FinalizarEtiquetaComCopiasEAvanco;

         tb_etiqtemp.Next;
      end;
      ImprimirEtiquetaComCopiasEAvanco;
      Desativar;
   end;

Link para o comentário
Compartilhar em outros sites

  • Consultores
  • Solution
15 horas atrás, Gilson Heleno disse:

Boa tarde! agradeço a dica. vou realizar os teste. Outro problema que esqueci de comentar é quando mando imprimir exemplo 7 etiquetas. Como utilizo 3 colunas então as duas ultima era pra sair em branco. Mas ele preenche as duas ultimas com informação do ultimo item. Tem idéia como posso resolver? Segue codigo para analise:

 tb_etiqtemp.First;
   AtivarACBrETQ;
   with ACBrETQ do
   begin
      while not tb_etiqtemp.eof do
      begin
//         xtam:=Length(dm.tb_etiquetasCODIGO.Value);
         IniciarEtiqueta;
         ImprimirTexto(orNormal, '0', 20, 30, 2, 3, 'R$ '+ formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
         ImprimirTexto(orNormal, '0', 20, 20, 6, 3, tb_etiqtempNOME.Value);
         ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 3,tb_etiqtempCODIGO.Value, 8,becSIM);

         tb_etiqtemp.Next;
         ImprimirTexto(orNormal, '0', 20, 30, 2, 37, 'R$ '+ formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
         ImprimirTexto(orNormal, '0', 20, 20, 6, 37, tb_etiqtempNOME.Value);
         ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 37,tb_etiqtempCODIGO.Value, 8,becSIM);


         tb_etiqtemp.Next;
         ImprimirTexto(orNormal, '0', 20, 30, 2, 72, 'R$ '+formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
         ImprimirTexto(orNormal, '0', 20, 20, 6, 72, tb_etiqtempNOME.Value);
         ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 72,tb_etiqtempCODIGO.Value, 8,becSIM);

         FinalizarEtiquetaComCopiasEAvanco;

         tb_etiqtemp.Next;
      end;
      ImprimirEtiquetaComCopiasEAvanco;
      Desativar;
   end;


Para resolver esse problema você precisa colocar uma condição que verifica se chegou no fim da lista após cada comando 'Next'.
Exemplo:
 

while (not tb_etiqtemp.eof) do
begin
//  xtam:=Length(dm.tb_etiquetasCODIGO.Value);
  IniciarEtiqueta;
  ImprimirTexto(orNormal, '0', 20, 30, 2, 3, 'R$ '+ formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
  ImprimirTexto(orNormal, '0', 20, 20, 6, 3, tb_etiqtempNOME.Value);
  ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 3,tb_etiqtempCODIGO.Value, 8,becSIM);
  tb_etiqtemp.Next;
  
  if (not tb_etiqtemp.eof) then
  begin
    ImprimirTexto(orNormal, '0', 20, 30, 2, 37, 'R$ '+ formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
    ImprimirTexto(orNormal, '0', 20, 20, 6, 37, tb_etiqtempNOME.Value);
    ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 37,tb_etiqtempCODIGO.Value, 8,becSIM);
    tb_etiqtemp.Next;
  end;

  if (not tb_etiqtemp.eof) then
  begin
    ImprimirTexto(orNormal, '0', 20, 30, 2, 72, 'R$ '+formatfloat('##,##0.00',tb_etiqtempPVENDA.Value));
    ImprimirTexto(orNormal, '0', 20, 20, 6, 72, tb_etiqtempNOME.Value);
    ImprimirBarras(orNormal,   barCODE128, 2, 4, 10, 72,tb_etiqtempCODIGO.Value, 8,becSIM);
    tb_etiqtemp.Next;
  end;

  FinalizarEtiquetaComCopiasEAvanco;  
end;

 

  • Curtir 1
Consultor SAC ACBr

Elias César Vieira
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil
Assine o
SAC

 
Link para o comentário
Compartilhar em outros sites

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