CODIGO DE BARRAS
galera implementei no meu programa o codigo de barras. mais tem um problema. quando cadastr um produto que tem codigo de barras funciona cerinho. mais quando vou cadastrar um produto q nao tem codigo de barra, fiz uma funçãozinha baseada no codigo ean13 para gerar o mesmo. mais esta dando erro. alguem pode me ajudar. o codigo que eu fiz esta abaixo.
Private Sub cmd_gerar_Click()
Dim codi As String
Dim impar As Integer
Dim par As Integer
Dim d As Integer
If IsNull(LerINI([Ô]Barras[Ô], [Ô]tipo[Ô], App.Path & [Ô]\config.ini[Ô])) Then
MsgBox [Ô]Efetue a configuração do codigo de barras primeiro[Ô], vbCritical, App.Path
Exit Sub
End If
codi = LerINI([Ô]Barras[Ô], [Ô]pais[Ô], App.Path & [Ô]\config.ini[Ô]) [ô]codigo padrao do pais
codi = codi + LerINI([Ô]Barras[Ô], [Ô]codigo[Ô], App.Path & [Ô]\config.ini[Ô]) [ô]+ codigo da empresa
If LerINI([Ô]Barras[Ô], [Ô]tipo[Ô], App.Path & [Ô]\config.ini[Ô]) = [Ô]Tipo 1[Ô] Then [ô]tipo de empresa tipo1 impresa com ate 10.000 produtos cadastrados
For i = 0 To 5999
codi = codi + Format(i, [Ô]0000[Ô])
With cmd_conexao
.ActiveConnection = conexao
.CommandType = adCmdText
.CommandText = [Ô]Select * From produto Where codbarra like [ô][Ô] & codi & [Ô]%[ô];[Ô] [ô] aqui eu verifico se o codigo ja esta cadastrado
Set rst_conexao = .Execute
End With
If rst_conexao.BOF And rst_conexao.EOF Then
GoTo fim
End If [ô] caso nao esteja vai para o fim da geração do codigo
Next i
ElseIf LerINI([Ô]Barras[Ô], [Ô]tipo[Ô], App.Path & [Ô]\config.ini[Ô]) = [Ô]Tipo 2[Ô] Then [ô]tipo 2 - empresas com ate 100.000 produtos cadastrados
For i = 60000 To 99999
codi = codi + Format(i, [Ô]00000[Ô])
With cmd_conexao
.ActiveConnection = conexao
.CommandType = adCmdText
.CommandText = [Ô]Select * From produto Where codbarra like [ô][Ô] & codi & [Ô]%[ô];[Ô]
Set rst_conexao = .Execute
End With
If rst_conexao.BOF And rst_conexao.EOF Then
GoTo fim
End If
Next i
End If
fim:
For i = Len(codi) To 1 Step -1
If i > 2 Then
If Not E_Par(Mid(codi, i, 1)) Then
impar = impar + Int(Mid(codi, i, 1)) [ô]soma-se os impares
Else
par = par + Int(Mid(codi, i, 1)) [ô]soma-se os pares
End If
End If
Next
par = par * 3 [ô]multiplica os pares por 3
d = par + impar soma os pares e impares
If d < 10 Then [ô] gera o digito verificador
d = 10 - d
ElseIf d < 20 Then
d = 20 - d
ElseIf d < 30 Then
d = 30 - d
ElseIf d < 40 Then
d = 40 - d
ElseIf d < 50 Then
d = 50 - d
ElseIf d < 60 Then
d = 60 - d
ElseIf d < 70 Then
d = 70 - d
ElseIf d < 80 Then
d = 80 - d
ElseIf d < 90 Then
d = 90 - d
ElseIf d < 100 Then
d = 100 - d
End If
txtbarras.Text = Trim(str(codi)) & Trim(str(d)) [ô]junta o codigo com o digito verificador
End Sub
E aà cara?
Qual erro meu caro? Qual linda ele dá o erro?
Abraços
sinkertec axo que descobri o erro, antes a quantidade de digitos excedia os 13, que é o padrao do codigo ean13. agora refiz o codigo e ate agora esta dando certo vou postar ele abaixo para voce poder comparar.
Private Sub cmd_gerar_Click()
Dim codi As String
Dim impar As Integer
Dim par As Integer
Dim d As Integer
If IsNull(LerINI([Ô]Barras[Ô], [Ô]tipo[Ô], App.Path & [Ô]\config.ini[Ô])) Then
MsgBox [Ô]Efetue a configuração do codigo de barras primeiro[Ô], vbCritical, App.Path
Exit Sub
End If
codi = LerINI([Ô]Barras[Ô], [Ô]pais[Ô], App.Path & [Ô]\config.ini[Ô])
codi = codi + LerINI([Ô]Barras[Ô], [Ô]codigo[Ô], App.Path & [Ô]\config.ini[Ô])
If LerINI([Ô]Barras[Ô], [Ô]tipo[Ô], App.Path & [Ô]\config.ini[Ô]) = [Ô]Tipo 1[Ô] Then
For i = 0 To 5999
With cmd_conexao
.ActiveConnection = conexao
.CommandType = adCmdText
.CommandText = [Ô]Select * From produto Where codbarra like [ô][Ô] & Trim(codi & Format(i, [Ô]00000[Ô])) & [Ô]%[ô];[Ô]
Set rst_conexao = .Execute
End With
If rst_conexao.BOF And rst_conexao.EOF Then
codi = codi & Format(i, [Ô]00000[Ô])
GoTo fim
End If
Next i
ElseIf LerINI([Ô]Barras[Ô], [Ô]tipo[Ô], App.Path & [Ô]\config.ini[Ô]) = [Ô]Tipo 2[Ô] Then
For i = 60000 To 99999
With cmd_conexao
.ActiveConnection = conexao
.CommandType = adCmdText
.CommandText = [Ô]Select * From produto Where codbarra like [ô][Ô] & Trim(codi & Format(i, [Ô]00000[Ô])) & [Ô]%[ô];[Ô]
Set rst_conexao = .Execute
End With
If rst_conexao.BOF And rst_conexao.EOF Then
codi = codi & Format(i, [Ô]000000[Ô])
GoTo fim
End If
Next i
End If
fim:
For i = Len(codi) To 1 Step -1
If i > 2 Then
If Not E_Par(Mid(codi, i, 1)) Then
impar = impar + Int(Mid(codi, i, 1))
Else
par = par + Int(Mid(codi, i, 1))
End If
End If
Next
par = par * 3
d = par + impar
d = 10 - Int(Right(d, 1))
txtbarras.Text = Trim(str(codi)) & Trim(str(d))
Tópico encerrado , respostas não são mais permitidas