MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Etiqueta de Volumes

    Compartilhe
    avatar
    Waltair M Souza
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 83
    Registrado : 06/10/2012

    Etiqueta de Volumes

    Mensagem  Waltair M Souza em 6/10/2017, 11:56

    Bom dia amigos do forum.

    Mais uma vez recorro aos caros colegas para me auxiliarem.

    Utilizando um modelo aqui do forum criei um relatório "etiqueta" que já roda bem com o código abaixo...

    Descrevendo o funcionamento:

    Situação correta: O produto tem qtde 1 e 2 volumes, é impresso duas etiquetas sendo a 1ª (1/2) e a 2ª (2/2), comportamento correto.

    Situação errada: Ocorre ao imprimir etiquetas de produto com a Qtde maior que 1 e volumes maior que 1, tomemos este exemplo: Qtde de itens 3, Qtde de volumes 4

    Sequencia de impressão: 1/4; 1/4; 1/4; 2/4; 2/4; 2/4; 3/4; 3/4; 3/4; 4/4; 4/4; 4/4
    Sequencia pretendida     1/4; 2/4; 3/4; 4/4; 1/4; 2/4; 3/4; 4/4; 1/4; 2/4; 3/4; 4/4

    Já tentei várias formas aqui mas meu conhecimento é um pouco limitado

    Só registrando: Utilizo impressora Zebra etiquetas 100x50 em rolo dai a necessidade da sequencia descrita acima.

    Eis o código que uso para gerar a etiqueta:

    Private Sub Comando29_Click()
    On Error GoTo y1:
    Dim i, qr
    qr = Me.repetiçao
    DoCmd.SetWarnings False
    If ExisteTabela("n") Then
    CurrentDb.Execute "DROP TABLE N"
    Else
    End If
    If ExisteTabela("n1") Then
    CurrentDb.Execute "DROP TABLE N1"
    Else
    End If
    i = IIf((Me.Vol / qtdpadrao) - Int(Me.Vol / qtdpadrao) > 0, Int(Me.Vol / qtdpadrao), Me.Vol / qtdpadrao)
    CurrentDb.Execute "SELECT 1 AS n INTO n": CurrentDb.Execute "SELECT 1 AS n INTO n1"
    If Int(i) >= Int(qr) Then Call insere(i) Else Call insere(qr)

    If Me.tipoetiqueta = "1" And Me.Opção43.Value = -1 Then
    Dim StDocName As String
    StDocName = "Rlt_910_Etiquetafinal"
    DoCmd.OpenReport StDocName
    Else
    stdocname1 = "Rlt_910_Etiquetafinal"
    DoCmd.OpenReport stdocname1, acViewPreview
    End If
    DoCmd.SetWarnings True
    Exit Sub
    y1: MsgBox Err.Description
    End Sub


    Fico lhes grato por qualquer auxílio.

    Sistema operacional Windows 7 Access 2013


    Última edição por Waltair M Souza em 22/3/2018, 17:55, editado 2 vez(es)
    avatar
    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1969
    Registrado : 13/04/2012

    Re: Etiqueta de Volumes

    Mensagem  Fernando Bueno em 22/3/2018, 01:44

    Boa noite, tente fazer a alteração em vermelho

    Private Sub Comando29_Click()
    On Error GoTo y1:
    Dim i, qr
    qr = Me.repetiçao
    DoCmd.SetWarnings False
    If ExisteTabela("n") Then
    CurrentDb.Execute "DROP TABLE N"
    Else
    End If
    If ExisteTabela("n1") Then
    CurrentDb.Execute "DROP TABLE N1"
    Else
    End If
    i = IIf((Me.Vol / qtdpadrao) - Int(Me.Vol / qtdpadrao) > 0, Int(Me.Vol / qtdpadrao) +1, Me.Vol / qtdpadrao)
    CurrentDb.Execute "SELECT 1 AS n INTO n": CurrentDb.Execute "SELECT 1 AS n INTO n1"
    If Int(i) >= Int(qr) Then Call insere(i) Else Call insere(qr)

    If Me.tipoetiqueta = "1" And Me.Opção43.Value = -1 Then
    Dim StDocName As String
    StDocName = "Rlt_910_Etiquetafinal"
    DoCmd.OpenReport StDocName
    Else
    stdocname1 = "Rlt_910_Etiquetafinal"
    DoCmd.OpenReport stdocname1, acViewPreview
    End If
    DoCmd.SetWarnings True
    Exit Sub
    y1: MsgBox Err.Description
    End Sub


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Waltair M Souza
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 83
    Registrado : 06/10/2012

    Re: Etiqueta de Volumes

    Mensagem  Waltair M Souza em 22/3/2018, 17:52

    Olá Fernando obrigado pela atenção.

    Fiz o procedimento de alteração conforme o descrito, mas não alterou a sequencia de impressão...

    Vou seguindo imprimindo os produtos de um em um até lograr exito na configuração...

    Mas valeu mesmo pela atenção dispensada, qualquer nova sugestão estou apostos.

    Grato.
    avatar
    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1969
    Registrado : 13/04/2012

    Re: Etiqueta de Volumes

    Mensagem  Fernando Bueno em 22/3/2018, 20:35

    Boa tarde, se quiser postar parte do banco ficaria mais facil tentarmos ajudar.


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Você precisa estar registrado e conectado para ver esta imagem.]

    Antonioxavier
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 36
    Registrado : 30/10/2015

    Re: Etiqueta de Volumes

    Mensagem  Antonioxavier em 3/4/2018, 19:20

    Boa tarde amigo, veja se te ajuda.
    Essa foi uma colaboração do nosso amigo Liomar do Forum Access há um tempo atrás.

    1.No formulário de onde está chamando o Relatório, crie duas Caixas de Texto: TxtNrTotal e TxtNrAtual (desacopladas).

    2.No código do botão de Comando deste Formulário que abre o Relatório, escreva:

    Dim n As Integer, i As Integer
    Me.TxtNrAtual = ""
    n = Me.TxtNrTotal.Value
    For i = 1 To n
    Me.TxtNrAtual = i
    DoCmd.OpenReport "NomedeSeuRelatorio", acViewNormal
    Next i

    Obs. Basta digitar na Caixa de Texto total o nº total de volumes e o código implementará o valor para TxtNrAtual.

    3.No rodapé do seu Relatório, crie uma Caixa de Texto desacoplada, por nome TxtVolume (dimensione ela adequadamente) e no evento “Ao formatar” do rodapé, escreva:

    Me.TxtVolume = "Volume " & Forms!SeuFormulario!TxtNrAtual & " de " & Forms!SeuFormulario!TxtNrTotal

      Data/hora atual: 21/9/2018, 03:50