CODIGO BARRA 128EAN - DANFE/DACTE

JOHNSTEVE 04/01/2017 11:29:33
#470320
Bom dia galera, Feliz ano novo para todos. Paz, Saúde e Sucesso

Galera o seguinte, estou desenhando aqui o DACTE na unha usando o Crystal Reports. o layout ja esta tudo pronto. e meu dataset todo alimentado.
ja fiz o teste a impressão esta tudo ok, so me deparei com um pequeno detalhe que achei q fosse fácil

seria o Codigo de Barra do DACTE.
alguém sabe alguma rotina para criar a imagem pegando a Chave de Acesso ?
tipo poderia ate ser uma picturebox. no meu form invisivel so para criar a imagem do codigo de barra. e assim qnd eu finalizasse q chegar na minha rotina de impressão do DACTE pegar a minha picturebox ja pronta no formatdo de Codigo de Barra 128 EAN

oq vcs acham essa minha logica esta errada ?
andei vasculhando no google e nao achei uma rotina de criar codigo de barra 128 usando um picturebox. ate achei um mais é de codigo de barra 13EAB do produto.

Agradeço desde de já pela atenção de todos

JOHNSTEVE 04/01/2017 11:31:50
#470321
print do meu DACTE no crystal
SINCLAIR 04/01/2017 11:49:03
#470322
Resposta escolhida
Colega JHONSTEVE,

Não precisa ser picture box.

é converter a chave para o formato de barras 128 e aplicar uma função do Crystal Reports.

Eu tenho aqui.

é quase meio-dia e tenho um compromisso, mas depois publico para você.

Tudo de bom.
JOHNSTEVE 04/01/2017 11:50:35
#470324
Citação:

:
Colega JHONSTEVE,

Não precisa ser picture box.

é converter a chave para o formato de barras 128 e aplicar uma função do Crystal Reports.

Eu tenho aqui.

é quase meio-dia e tenho um compromisso, mas depois publico para você.

Tudo de bom.



vlw Sinclair :)
fico agradecido :)

eu ate imaginei algo parecido... tipo baixar uma fonte de codigo 128EAN instalar no pc.. e la no crystal mudar a fonte para essa.. mais nao deu certo kkkk
NILSONTRES 04/01/2017 11:57:27
#470325
Citação:

eu ate imaginei algo parecido... tipo baixar uma fonte de codigo 128EAN instalar no pc.. e la no crystal mudar a fonte para essa.. mais nao deu certo kkkk


Então, eu faço isso para gerar etiquetas, mas é com a C39, e da certo, agora com a 128 não sei, quer mandar para eu testar ? Vc tem essa font ?
Embora a solução do SINCLAIR, me parece a melhor.
SINCLAIR 04/01/2017 13:50:18
#470330
JOHNSTEVE,

Citação:

eu ate imaginei algo parecido... tipo baixar uma fonte de codigo 128EAN instalar no pc.. e la no crystal mudar a fonte para essa.. mais nao deu certo kkkk



Isto é porque a chave NFe (ou seja, o conteúdo a ser visto em formato de barras) precisa ser convertido para uma sequencia string que a TTF interprete corretamente

NILSONTRES,

Citação:

Então, eu faço isso para gerar etiquetas, mas é com a C39, e da certo, agora com a 128 não sei, quer mandar para eu testar ? Vc tem essa font ?
Embora a solução do SINCLAIR, me parece a melhor.



De fato a TTF para Code 39 não precisa converter o conteúdo, geralmente basta colocar um ponto de exclamação antes e depois.

Por exemplo: para fazer as barras para o número 123456789, seria colocar no campo !123456789! e usar a TTF para Code 39.

Código

A função para isto segue abaixo.

Ainda não pude voltar para o escritório e aqui no notebook tenho apenas em VB6, mas facilmente convertível para .Net.

Peferi postar já em VB6 para ser convertido porque daqui creio que vou para Porto Alegre (já que não vi minha família no Reveillon).

Supondo chave NFe (fictícia, claro) 12345678901234567890123456789012345678901234, bastaria passar a chave para função abaixo.

Ou seja, não usa 12345678901234567890123456789012345678901234 na fonte e sim passar esta chave NFe para que a função converta em uma string que, esta sim, deve ser colocada em algum campo ou passada como parâmetro para o Crystal e, então, posicionado no relatório, usar a TTF em anexo.

Resumo: O retorno será uma string que deve ser colocada no Crystal Reports e usar a fonte TTF em anexo.

Public Function fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128(str_Numero_para_Codificar)

[ô]Cette fonction est régie par la Licence Générale Publique Amoindrie GNU (GNU LGPL)
[ô]This function is governed by the GNU Lesser General Public License (GNU LGPL)
[ô]V 2.0.0
[ô]Paramètres : une chaine
[ô]Parameters : a string
[ô]Retour : * une chaine qui, affichée avec la police CODE128.TTF, donne le code barre
[ô] * une chaine vide si paramètre fourni incorrect
[ô]Return : * a string which give the bar code when it is dispayed with CODE128.TTF font
[ô] * an empty string if the supplied parameter is no good
Dim i%, checksum&, mini%, dummy%, tableB As Boolean
fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 = [Ô][Ô]
If Len(str_Numero_para_Codificar) > 0 Then
[ô]Vérifier si caractères valides
[ô]Check for valid characters
For i% = 1 To Len(str_Numero_para_Codificar)
Select Case Asc(Mid$(str_Numero_para_Codificar, i%, 1))
Case 32 To 126, 203
Case Else
i% = 0
Exit For
End Select
Next
[ô]Calculer la chaine de code en optimisant l[ô]usage des tables B et C
[ô]Calculation of the code string with optimized use of tables B and C
fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 = [Ô][Ô]
tableB = True
If i% > 0 Then
i% = 1 [ô]i% devient l[ô]index sur la chaine / i% become the string index
Do While i% <= Len(str_Numero_para_Codificar)
If tableB Then
[ô]Voir si intéressant de passer en table C / See if interesting to switch to table C
[ô]Oui pour 4 chiffres au début ou à la fin, sinon pour 6 chiffres / yes for 4 digits at start or end, else if 6 digits
mini% = IIf(i% = 1 Or i% + 3 = Len(str_Numero_para_Codificar), 4, 6)
GoSub testnum
If mini% < 0 Then [ô]Choix table C / Choice of table C
If i% = 1 Then [ô]Débuter sur table C / Starting with table C
fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 = Chr$(210)
Else [ô]Commuter sur table C / Switch to table C
fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 = fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 & Chr$(204)
End If
tableB = False
Else
If i% = 1 Then fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 = Chr$(209) [ô]Débuter sur table B / Starting with table B
End If
End If
If Not tableB Then
[ô]On est sur la table C, essayer de traiter 2 chiffres / We are on table C, try to process 2 digits
mini% = 2
GoSub testnum
If mini% < 0 Then [ô]OK pour 2 chiffres, les traiter / OK for 2 digits, process it
dummy% = Val(Mid$(str_Numero_para_Codificar, i%, 2))
dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 105)
fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 = fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 & Chr$(dummy%)
i% = i% + 2
Else [ô]On n[ô]a pas 2 chiffres, repasser en table B / We haven[ô]t 2 digits, switch to table B
fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 = fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 & Chr$(205)
tableB = True
End If
End If
If tableB Then
[ô]Traiter 1 caractère en table B / Process 1 digit with table B
fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 = fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 & Mid$(str_Numero_para_Codificar, i%, 1)
i% = i% + 1
End If
Loop
[ô]Calcul de la clé de contrôle / Calculation of the checksum
For i% = 1 To Len(fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128)
dummy% = Asc(Mid$(fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128, i%, 1))
dummy% = IIf(dummy% < 127, dummy% - 32, dummy% - 105)
If i% = 1 Then checksum& = dummy%
checksum& = (checksum& + (i% - 1) * dummy%) Mod 103
Next
[ô]Calcul du code ASCII de la clé / Calculation of the checksum ASCII code
checksum& = IIf(checksum& < 95, checksum& + 32, checksum& + 105)
[ô]Ajout de la clé et du STOP / Add the checksum and the STOP
fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 = fnc_Codifica_Numero_para_Usar_com_TTF_de_Codigo_de_Barras_Code_128 & Chr$(checksum&) & Chr$(211)
End If
End If
Exit Function
testnum:
[ô]si les mini% caractères à partir de i% sont numériques, alors mini%=0
[ô]if the mini% characters from i% are numeric, then mini%=0
mini% = mini% - 1
If i% + mini% <= Len(str_Numero_para_Codificar) Then
Do While mini% >= 0
If Asc(Mid$(str_Numero_para_Codificar, i% + mini%, 1)) < 48 Or Asc(Mid$(str_Numero_para_Codificar, i% + mini%, 1)) > 57 Then Exit Do
mini% = mini% - 1
Loop
End If
Return
End Function


Tudo de bom.


JOHNSTEVE 04/01/2017 14:51:35
#470343
SINCLAIR, instalei a fonte. porem qnd vou utilizar no crystal reports. diz o seguinte.

  Só ha suporte para fontes TrueType. Esta não é uma fonte TrueType. 


SINCLAIR 04/01/2017 15:19:52
#470347
JOHNSTEVE,

Depois de descompactar, tu copiou e colou na pasta Fonts do Windows?

JOHNSTEVE 04/01/2017 15:30:58
#470348
Citação:

:
JOHNSTEVE,

Depois de descompactar, tu copiou e colou na pasta Fonts do Windows?



descompatei e colei na pasta Fontes do Windos

ai la no Crystal reports. eu fui tentar mudar a fonte. para a q instalei. e deu isso .

[txt-color=#e80000] Só ha suporte para fontes TrueType. Esta não é uma fonte TrueType. [/txt-color]

qnd vou trocar de fonte.
SINCLAIR 04/01/2017 16:07:17
#470350
JOHNSTEVE,

Algum problema ai.

Faça o teste: dê 2 clique no arquivo Code 128.TTF. Deverá mostrar os caracteres de barras.

No Crystal Reports, use o nome de fonte Code 128.

Baixei o anexo aqui, instalei a fonte em uma Máquina Virtual que tenho no notebook e funcionou corretamente.

JOHNSTEVE 04/01/2017 16:10:32
#470351
Citação:

:
JOHNSTEVE,

Algum problema ai.

Baixei o anexo aqui, instalei a fonte em uma Máquina Virtual que tenho no notebook e funcionou corretamente.



a fonte funciona no bloco de notas eu testei aqui..
então deve ser no crystal reports.

eu fui modificar dentro do crystal reports. coloquei um campo la. do meu Dataset. q vai ser alimentado a chave de acesso. dai na hr da exibição creio q era so exibir imagem do código. porem qnd vou trocar a fonte dentro do crystal da esse erro :(
oq vc acha q possa ser ?
Página 1 de 2 [16 registro(s)]
Tópico encerrado , respostas não são mais permitidas