none
Como criar números de séries automaticamente em vba? RRS feed

  • Pergunta

  • Boa tarde.

    Estou desenvolvendo um sistema para emitir ordem de serviços, e nesta ordem de serviço sera produzido vários equipamentos, através da quantidade de equipamentos que sera informado na ordem de serviços quero que o sistema crie os números de series seguindo a seguinte ordem:

    Numero de série:  003140042007-B

    0 = Modelo

    03 - Mês de fabricação

    14 - Ano de fabricação

    00420 - Numero da ordem de serviços

    007 - Numero de equipamento produzidos no dia

    B - Letra do tipo de equipamento

    Segue o código que estou tentando usar:

    Private Sub cmdGerarNumSerie_Click()
    Dim DataInicio As String
    Dim DataConclusao As String
    Dim MesFabricacao As String
    Dim AnoFabricacao As String
    Dim strNumeroSerie As String
    Dim numeroOS As String
    Dim QtdeEquipamentos As Integer
    Dim a As Integer
    Dim LetrModelo As String
    Dim NumModelo As String
    
    'NumModelo = InputBox("Tipo de Rx - ( 0 ou 1 )")
    'LetrModelo = InputBox("Digite o modelo ( A Ou B )")
    'QtdeEquipamentos = InputBox("Digite a quantidade ")
    'numeroOS = InputBox("Numero da Ordem de Serviços : ")
    'DataInicio = InputBox("Digite a data : ")
    'DataInicio = Mid(DataInicio, 3, 2) ' 06
    'DataConclusao = Mid(DataConclusao, 3, 2) ' 06
    'AnoFabricacao = Right(AnoFabricacao, 2) ' 14
    For a = 1 To Me.NumeroSerie
    
    'If QtdeEquipamentos > 9 Then GoTo line2 Else GoTo line1
    
    'line1:
    
    'For a = 1 To QtdeEquipamentos
    'strNumeroSerie = NumModelo & MesFabricacao & AnoFabricacao & numeroOS & "0000" & a & "-" & LetrModelo
    
    CurrentDb.Execute "INSERT INTO tblNumeroDeSerie(NumOS,NumeroDeSerie,DataInicio,DataConclusao)" _
                    & " Values(""" & Me.numeroOS.Value & """,""" & NumeroSerie & """, """ & DataInicio & """, """ & DataConclusao & """"
    
    MsgBox (NumeroSerie)
    
    Next a
    Me.lstGeradorNumSerie.Requery
    End Sub
    'line2:
    
    'For a = 1 To QtdeEquipamentos
    'strNumeroSerie = NumModelo & MesFabricacao & AnoFabricacao & numeroOS & "0000" & a & "-" & LetrModelo
    
    'MsgBox (NumeroSerie)
    
    'Next a
    'Me.lstGeradorNumSerie.Requery
    'End Sub
    
    Private Sub DescricaoEquipamento_AfterUpdate()
    Me.ActiveControl = UCase(Me.ActiveControl)
    End Sub
    

    Preciso que os números de série sejam criados e inseridos no campo lstGeradorNumSerie.

    Desde ja Agradeço

    sábado, 28 de junho de 2014 21:10

Respostas

  • Boa noite pessoal.

    Problema resolvido, segue abaixo o código completo..

    Private Sub cmdGerarNumSerie_Click()
    
    Dim numProd As String, i As Integer, y
    For i = 1 To Me.QtdeEquipamentos
            numProd = Format(DMax("NumProd", "tblNumProd") + 1, "0000") 'guardo o valor de numserie para atualizar a tblNumProd
            Me.NumeroSerie.SetFocus
            Me.NumeroSerie = Me.NumModelo & Me.MesFabricacao & Me.AnoFabricacao & Me.numeroOS & Format(DMax("NumProd", "tblNumProd") + 1, "0000") & "-" & Me.LetrModelo
            'Atualiza a tabela tblNumProd
             DoCmd.SetWarnings False
             DoCmd.RunSQL "UPDATE tblNumProd SET tblNumProd.NumProd = " & numProd
    
             CurrentDb.Execute "INSERT INTO tblNumeroDeSerie(NumOS,NumeroSDeSerie,DataInicio)" _
                   & " Values('" & Me.numeroOS & "','" & Me.NumeroSerie & "','" & Me.DataInicio & "');", dbFailOnError
              DoCmd.SetWarnings True
              y = y + ";" + Me.NumeroSerie
              
    Next i
    Me.lstGeradorNumSerie.RowSource = y
    Me.cmdGerarNumSerie.Enabled = False
    Me.lstGeradorNumSerie.Requery
    
    End Sub

    quinta-feira, 31 de julho de 2014 00:12

Todas as Respostas

  • lstGeradorNumSerie.AddItem (strNumeroSerie)

    quarta-feira, 30 de julho de 2014 16:01
  • Boa noite pessoal.

    Problema resolvido, segue abaixo o código completo..

    Private Sub cmdGerarNumSerie_Click()
    
    Dim numProd As String, i As Integer, y
    For i = 1 To Me.QtdeEquipamentos
            numProd = Format(DMax("NumProd", "tblNumProd") + 1, "0000") 'guardo o valor de numserie para atualizar a tblNumProd
            Me.NumeroSerie.SetFocus
            Me.NumeroSerie = Me.NumModelo & Me.MesFabricacao & Me.AnoFabricacao & Me.numeroOS & Format(DMax("NumProd", "tblNumProd") + 1, "0000") & "-" & Me.LetrModelo
            'Atualiza a tabela tblNumProd
             DoCmd.SetWarnings False
             DoCmd.RunSQL "UPDATE tblNumProd SET tblNumProd.NumProd = " & numProd
    
             CurrentDb.Execute "INSERT INTO tblNumeroDeSerie(NumOS,NumeroSDeSerie,DataInicio)" _
                   & " Values('" & Me.numeroOS & "','" & Me.NumeroSerie & "','" & Me.DataInicio & "');", dbFailOnError
              DoCmd.SetWarnings True
              y = y + ";" + Me.NumeroSerie
              
    Next i
    Me.lstGeradorNumSerie.RowSource = y
    Me.cmdGerarNumSerie.Enabled = False
    Me.lstGeradorNumSerie.Requery
    
    End Sub

    quinta-feira, 31 de julho de 2014 00:12