luissiscone 6/2/2018, 11:33
Maravilha, funcionando.
Só um detalhe !
Funcionou perfeitamente no WIN7 com OFFICE 2007.
Mas no WIN10 com OFFICE2016 dá uma série de mensagens e não abre o relatório...
Por acaso tem este exemplo compilado para WIN10 / OFFICE2016 ?
Tentei mudar as rotinas aqui mas sem sucesso...não consegui adaptar.
Os erros se dão nesta rotina...
'Função para criação de códigos de barras padrão EAN 13
'Utiliza tabelas auxiliares tblEANAuxiliar e tblEAN13Caracter para definir as barras
'O algorítimo e processo de definição das barras estão publicados na revista Fórum Access
'Autor:- Mauro Possatto (Fórum Access)
'Data:- 28/10/97
'Alterações:-
'Alterado por Balem
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Dim intValor As Integer
Dim rs13Dig As Recordset
Dim rsBarra As Recordset
Dim strBarra As String, strTabela As String, strCor As String
Dim i As Integer, J As Integer
Dim dblEsquerda As Double
'Constantes para alinhamento das barras
Const CTwips = 567
Const CTop = 0.9 * CTwips
Const CWidth = 0.033 * CTwips
dblEsquerda = 0.228 * CTwips
'Alinhamento das barras auxiliares de guarda da esquerda
For i = 1 To 3
Me("BoxE" & i).Left = dblEsquerda
Me("BoxE" & i).Top = CTop
Me("BoxE" & i).Width = CWidth
Me("BoxE" & i).Height = 1.297 * CTwips
dblEsquerda = dblEsquerda + CWidth
Next
'Alinhamento das barras do primeiro conjunto de dígitos
For i = 1 To 6
For J = 1 To 7
Me("Box" & i & J).Left = dblEsquerda
Me("Box" & i & J).Top = CTop
Me("Box" & i & J).Width = CWidth
Me("Box" & i & J).Height = 1.143 * CTwips
dblEsquerda = dblEsquerda + CWidth
Next
Next
'Alinhamento das barras auxiliares centrais
For i = 1 To 5
Me("BoxC" & i).Left = dblEsquerda
Me("BoxC" & i).Top = CTop
Me("BoxC" & i).Width = CWidth
Me("BoxC" & i).Height = 1.297 * CTwips
dblEsquerda = dblEsquerda + CWidth
Next
'Alinhamento das barras do segundo conjunto de dígitos
For i = 7 To 12
For J = 1 To 7
Me("Box" & i & J).Left = dblEsquerda
Me("Box" & i & J).Top = CTop
Me("Box" & i & J).Width = CWidth
Me("Box" & i & J).Height = 1.143 * CTwips
dblEsquerda = dblEsquerda + CWidth
Next
Next
'Alinhamento das barras auxiliares de guarda da direita
For i = 1 To 3
Me("BoxD" & i).Left = dblEsquerda
Me("BoxD" & i).Top = CTop
Me("BoxD" & i).Width = CWidth
Me("BoxD" & i).Height = 1.297 * CTwips
dblEsquerda = dblEsquerda + CWidth
Next
Call AbrirDatabase
'Abre a tabela de determinação do 13o. dígito
Set rs13Dig = db.OpenRecordset("tblEAN13caractere", dbOpenTable)
rs13Dig.Index = "PrimaryKey"
rs13Dig.Seek "=", CInt(Left(strCod, 1))
'Abre a tabela de determinação de barras
Set rsBarra = db.OpenRecordset("tblEANAuxiliar", dbOpenTable)
rsBarra.Index = "PrimaryKey"
'Monta as barras do primeiro conjunto de dígitos
For i = 2 To 7
strTabela = Mid(rs13Dig!strTabela, i - 1, 1)
intValor = CInt(Mid(strCod, i, 1))
rsBarra.Seek "=", intValor
Select Case strTabela
Case Is = "A"
strCor = rsBarra!strTabelaA
Case Is = "B"
strCor = rsBarra!strTabelaB
End Select
For J = 1 To 7
If Mid(strCor, J, 1) = 0 Then
Me("Box" & i - 1 & J).BackColor = 16777215
Else
Me("Box" & i - 1 & J).BackColor = 0
End If
Next
Next
'Monta as barras do segundo conjunto de dígitos
For i = 8 To 13
intValor = CInt(Mid(strCod, i, 1))
rsBarra.Seek "=", intValor
strCor = rsBarra!strTabelaC
For J = 1 To 7
If Mid(strCor, J, 1) = 0 Then
Me("Box" & i - 1 & J).BackColor = 16777215
Else
Me("Box" & i - 1 & J).BackColor = 0
End If
Next
Next
'Monta as barras auxiliares de guarda e centrais
Me.BoxE1.BackColor = 0
Me.BoxE3.BackColor = 0
Me.BoxE2.BackColor = 16777215
Me.BoxD1.BackColor = 0
Me.BoxD3.BackColor = 0
Me.BoxD2.BackColor = 16777215
Me.BoxC2.BackColor = 0
Me.BoxC4.BackColor = 0
Me.BoxC1.BackColor = 16777215
Me.BoxC3.BackColor = 16777215
Me.BoxC5.BackColor = 16777215
'Executa o fechamento das tabelas e banco de dados abertos em memória
rsBarra.Close
rs13Dig.Close
End Sub