Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gheraldo

[Resolvido] Gerar etiquetas no vb6

Recommended Posts

Pessoal eu desenvolvo pequenas aplicações em vb6 e agora estou com um pequeno desafio! Preciso gerar etiquetas com base em informações de um DB Access, essas etiquetas seriam Pimaco 6181 (2 etiquetas por linha - 10 linhas por página). Encontrei um componente ReportX que faz isso, mas é pago, por isso pensei em buscar ajuda dos experts em vb daqui, alguem pode me ajudar? Mostrar alguem exemplo? Ou algum componente free que facilite essa tarefa? Ajuda ai galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada nesse artigo e vê se ajudar brotehr

 

 

Gerando etiquetas

 

Ajuda sim! Mas você conhece alguma forma de gerar as etiquetas sem usar o Word? Tipo usando o DataReport que já acompanha o vb6? Pq se possível eu gostaria de criar uma aplicação que nao depende tanto de outros plicatvos. Eu sei que em quase todas as máquinas tem Office instalado, word e tal... mas e quando a versão do word? Não teria problemas? Testar esse exemplo no Word 2007, espero que funcione. Obrigado pela ajuda.!

 

 

Galera! Alguem sabe como imprimir etiquetas de dados de uma tabela Access no VB6 usando apenas o objeto Printer?

Se alguem tiver alguma idéia e/ou exemplo me ajuda ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uni seus tópicos por tratarem do mesmo assunto.

 

Fique atento com as regras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uni seus tópicos por tratarem do mesmo assunto.

 

Fique atento com as regras.

 

Beleza! Foi mal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha só!

 

Consegui encontrar um código para vb6 que é quase perfeito pra fazer o que eu quero, que imprimir etiquetas com dados de DB Access usando apenas Printer, já fiz algumas alterações nele e melhorou, mas ainda tem uns probleminhas que não consgui resolver:

 

Primeiro: Até 4 etiquetas Pimaco 6181), duas em cada coluna sai perfeito, mas quando passa disso ai vai tipo juntando as demais aos poucos até que da 7ª linha em diante começa a cortar o texto na parte superior da etiqueta.

 

Se alguem conseguir resolver essa parada eu fico muito agradecido!

 

Segundo: Até 20 Etiquetas (1 página completa) sai da forma que citei anteriormente depois de umapágina ai bagunça tudo! Teria alguma forma de eu paginar ou usar alguma quebra de página?

 

Eis o código:

 

Obs.: Não esqueçam de referenciar no VB

Microsoft ActiveX Data Objects 2.8 Library

 

'##########################################################################################################

Public base As String
Public dbDados As ADODB.Connection
Public rstProc As ADODB.Recordset
Private Sub Command1_Click()
Dim cont As Integer

Set rstProc = New ADODB.Recordset
strSql = "SELECT associados.Responsavel, associados.Endereço, associados.Número, associados.Bairro, associados.Cidade, associados.Estado, associados.CEP FROM associados;"
rstProc.Open strSql, dbDados, adOpenKeyset, adLockReadOnly, adCmdText

cont = 830
Do
      
    Printer.FontSize = 10
        
    Printer.CurrentX = 400
    Printer.CurrentY = cont
    Printer.Print rstProc("Responsavel")
    cont = cont + 300
                
    Printer.CurrentX = 400
    Printer.CurrentY = cont
    Printer.Print rstProc("Endereço")
    cont = cont + 300
    
    Printer.CurrentX = 400
    Printer.CurrentY = cont
    Printer.Print rstProc("Número")
    
    Printer.CurrentX = 1200
    Printer.CurrentY = cont
    Printer.Print rstProc("Bairro")
    cont = cont + 300
    
    Printer.CurrentX = 400
    Printer.CurrentY = cont
    Printer.Print rstProc("Cidade")
    
    Printer.CurrentX = 3500
    Printer.CurrentY = cont
    Printer.Print rstProc("Estado")
    
    Printer.CurrentX = 4000
    Printer.CurrentY = cont
    Printer.Print rstProc("CEP")
    'cont = cont - 200
    
    rstProc.MoveNext
    
    If rstProc.EOF = True Then
        Printer.EndDoc
        Exit Sub
    End If
    
    cont = cont - 700
    Printer.CurrentX = 6490
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Responsavel")
                
    cont = cont + 300
    Printer.CurrentX = 6490
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Endereço")
    
    cont = cont + 300
    Printer.CurrentX = 6490
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Número")
    
    Printer.CurrentX = 7090
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Bairro")
    
    cont = cont + 300
    Printer.CurrentX = 6490
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Cidade")
    
    Printer.CurrentX = 8750
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Estado")
    
    Printer.CurrentX = 9450
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("CEP")
    cont = cont + 300
    
    rstProc.MoveNext
    
Loop While rstProc.EOF = False
Printer.EndDoc
 
MsgBox "Imprimindo...", vbExclamation, "Aviso..."
End Sub

Private Sub Form_Load()
base = App.Path & "\associados.mdb"
Set dbDados = New Connection
dbDados.Open "PROVIDER=MSDataShape;Data PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source='" & base & "'"

End Sub
'########################################################################################################

 

Se alguem conseguiur melhorar alguma coisa ai fico muito grato!

 

Ou se alguem tiver algo melhor que esse código, posta ai!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando chegar as 20 etiquetas, não temm como resetar o Printer ? Começar de novo para as proximas 20, e assim por diante.

 

Nunca mexi com esse Printer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi isso que eu fiz scorpio! Vou postar aqui o código!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi isso que eu fiz scorpio! Vou postar aqui o código!

 

Olha ai pessoal O Código agora tá perfeito para etiquetas pimaco 6181 - Testei no VB6-SP6

Dim Reg As Integer
Public base As String
Public dbDados As ADODB.Connection
Public rstProc As ADODB.Recordset
Private Sub Command1_Click()
Dim cont As Integer
Dim linha As Integer
Set rstProc = New ADODB.Recordset
strSql = "SELECT associados.Responsavel, associados.Endereço, associados.Número, associados.Bairro, associados.Cidade, associados.Estado, associados.CEP FROM associados;"
rstProc.Open strSql, dbDados, adOpenKeyset, adLockReadOnly, adCmdText
Reg = rstProc.RecordCount
linha = Reg
cont = 830
    If linha > 10 Then
    linha = 1
    End If
    Do
   
    Printer.FontSize = 10
        
    Printer.CurrentX = 400
    Printer.CurrentY = cont
    Printer.Print rstProc("Responsavel")
    cont = cont + 300
                
    Printer.CurrentX = 400
    Printer.CurrentY = cont
    Printer.Print rstProc("Endereço")
    cont = cont + 300
    
    Printer.CurrentX = 400
    Printer.CurrentY = cont
    Printer.Print rstProc("Número")
    
    Printer.CurrentX = 1200
    Printer.CurrentY = cont
    Printer.Print rstProc("Bairro")
    cont = cont + 300
    
    Printer.CurrentX = 400
    Printer.CurrentY = cont
    Printer.Print rstProc("Cidade")
    
    Printer.CurrentX = 3500
    Printer.CurrentY = cont
    Printer.Print rstProc("Estado")
    
    Printer.CurrentX = 4000
    Printer.CurrentY = cont
    Printer.Print rstProc("CEP")
    
    rstProc.MoveNext
    
    If rstProc.EOF = True Then
    
        Printer.EndDoc
        Exit Sub
    End If
    
    cont = cont - 700
    Printer.CurrentX = 6490
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Responsavel")
                
    cont = cont + 300
    Printer.CurrentX = 6490
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Endereço")
    
    cont = cont + 300
    Printer.CurrentX = 6490
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Número")
    
    Printer.CurrentX = 7090
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Bairro")
    
    cont = cont + 300
    Printer.CurrentX = 6490
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Cidade")
    
    Printer.CurrentX = 8750
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("Estado")
    
    Printer.CurrentX = 9450
    Printer.CurrentY = cont - 200
    Printer.Print rstProc("CEP")
    cont = cont + 300
    
    rstProc.MoveNext
    
    If linha > 2 Then
    cont = cont + 50
    End If
    linha = linha + 1
    If linha > 10 Then
    Printer.NewPage
    cont = 830
    linha = 1
    End If
    
Loop While rstProc.EOF = False
Printer.EndDoc
MsgBox "Imprimindo...", vbExclamation, "Aviso..."
End Sub

Private Sub Form_Load()
base = App.Path & "\associados.mdb"
Set dbDados = New Connection
dbDados.Open "PROVIDER=MSDataShape;Data PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source='" & base & "'"

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!

 

Valeu pela solução Gheraldo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.