MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Ajuda com código para auto numeração de controle de contratos

    Compartilhe

    Dery_santos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 03/10/2016

    [Resolvido]Ajuda com código para auto numeração de controle de contratos

    Mensagem  Dery_santos em Qui 13 Out 2016, 19:50

    Pessoal eu tenho o seguinte código abaixo o mesmo serve para criar sequencia para cada contrato que eu tenho, tipo assim campo com numero de contrato e a sequencia

    cada vez que eu fizer uma alteração em um contrato ele tem que iniciar a contagem em 1  ex: contrato 5001/2016 ai eu tenho que lançar uma alteração ele vai para a sequencia 1 se eu lançar mais um ele vai pra sequencia 02, mas essa numeração tem que começar do 0 sempre que eu mudar o numero do contrato tipo se eu for fazer alteração no contrato 5002/2016 ele tem que iniciar do 1

    EU fiz o código abaixo mas ja revi ele varias vezes e não sei o que esta errado
    nela inclui a seguinte linha :  

    Set dbs = CurrentDb
       strsql = "SELECT DISTINCTROW TOP 1 Max([SequenciaAdi]) AS MaiorValorSEQ " & _

    quando vou executar ele fala que método ou membro de dados não foi encontrato. rst.MaiorValorSEQ

    onde esta o erro?

    Private Sub Numcontratoaditivo_AfterUpdate()

    On Error GoTo Err_Numcontratoaditivo_AfterUpdate

    Numcontratoaditivo = UCase(Numcontratoaditivo)
    Dim Numero_do_contrato As String
    Dim mensagem As String

    Numero_do_contrato = "Numero_do_contrato = '" & Me.Numcontratoaditivo & "'"
    If IsNull(DLookup("Numero_do_contrato", "[Cadastro Contrato]", "Numero_do_contrato")) Then
       mensagem = "O Contrato especificado não foi localizado." & _
                   "@Verifique se foi digitado corretamente." & _
                   "@Selecione na lista. Se não o encontrar, deverá ser cadastrado previamente."
       MsgBox mensagem, , "Aviso do Sistema de Contratações"
       Numero_do_contrato = False
       Me.Numcontratoaditivo.SetFocus
       Exit Sub
    End If


       Dim dbs As Database, rst As Recordset
       Dim strsql As String, intSEQ As Byte
       
       Set dbs = CurrentDb
       strsql = "SELECT DISTINCTROW TOP 1 Max([SequenciaAdi]) AS MaiorValorSEQ " & _
                "FROM [CADASTRO DE ADITIVO] " & _
                "WHERE [CADASTRO DE ADITIVO].Numcontratoaditivo = '" & Me.[Numcontratoaditivo] & "'"
     
       Set rst = dbs.OpenRecordset(strsql, dbOpenSnapshot)
       If IsNull(Me.MaiorValorSEQ) Then
           intSEQ = 0
           Me.SequenciaAdi = 1
       Else
           intSEQ = rst.MaiorValorSEQ
           Me.SequenciaAdi = rst.MaiorValorSEQ + 1
       End If

       
       Me.SequenciaAdi = Me.DataMesAnoBasePrecoCont

       If Me.valorcontaratoaditivo = 0 Or IsNull(valorcontaratoaditivo) Then

           If IsNull(VALORATUALCONT) Or VALORATUALCONT = 0 Then
              valorcontaratoaditivo = ValorCont
               Exit Sub
           End If
       End If

       valorcontaratoaditivo = VALORATUALCONT

    '    strSQL = "SELECT DISTINCTROW [valorcontaratoaditivo] AS ValorAtual " & _
    '             "FROM [CADASTRO DE ADITIVO] " & _
    '              "WHERE ([CADASTRO DE ADITIVO].Numcontratoaditivo = '" & Me.[Numcontratoaditivo] & "') AND ([CADASTRO DE ADITIVO].SequenciaAdi=" & CStr(intSEQ) & ")"
    '
    '    Set rst = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
    '    If rst.RecordCount = 0 Then
    '        Me.valorcontaratoaditivo = ValorCont
    '    Else
    '        Me.valorcontaratoaditivo = rst.vALORATUAL
    '    End If
       


    Exit_Numcontratoaditivo_AfterUpdate:
       Exit Sub

    Err_Numcontratoaditivo_AfterUpdate:
       MsgBox Err.Description
       Resume Exit_Numcontratoaditivo_AfterUpdate

    End Sub

    FabioPaes
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2328
    Registrado : 14/08/2013

    Re: [Resolvido]Ajuda com código para auto numeração de controle de contratos

    Mensagem  FabioPaes em Qui 13 Out 2016, 23:36

    Amigo, tudo por culpa de um Ponto...

    Mude de:
    ...
    Else
           intSEQ = rst.MaiorValorSEQ
           Me.SequenciaAdi = rst.MaiorValorSEQ + 1
       End If

    ...


    Para:


    ...
    Else
           intSEQ = rst!MaiorValorSEQ
           Me.SequenciaAdi = rst!MaiorValorSEQ + 1
       End If

    ...




    rst!MaiorValorSEQ <=== O que era ponto deve ser ! Exclamação!



    Teste e retorne por favor!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

    Dery_santos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 03/10/2016

    Re: [Resolvido]Ajuda com código para auto numeração de controle de contratos

    Mensagem  Dery_santos em Sex 14 Out 2016, 12:24

    Oi Fabio bom dia,


    Obrigado pela ajuda , eu testei como você falou mas agora ele fala que o campo MaiorValorSEQ não é encontrado
    é como se a consulta não estivesse gerando esse campo

    Dery_santos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 03/10/2016

    Re: [Resolvido]Ajuda com código para auto numeração de controle de contratos

    Mensagem  Dery_santos em Sex 14 Out 2016, 12:47

    Oi Fabio obrigado pela ajuda , aparentemente agora deu certo tinha mais um erro eu tinha colocado



    Set rst = dbs.OpenRecordset(strsql, dbOpenSnapshot)
      If IsNull(Me.MaiorValorSEQ) Then

    e o correto seria

    If IsNull(rst!MaiorValorSEQ) Then


    Agora ele esta numerando mas aparece uma mensagem de erro  mas continua , vou verificar que erro é esse e depois posto aqui.

    Mas desde ja muito obrigado.

    Dery_santos
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 03/10/2016

    Re: [Resolvido]Ajuda com código para auto numeração de controle de contratos

    Mensagem  Dery_santos em Ter 25 Out 2016, 14:21

    Muito obrigado

    o código deu certo coloquei o ! em vez de . a mensagem que estava dando errado é que eu inverti dois campos e por isso não estava dando certo.


    Obrigado

    FabioPaes
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2328
    Registrado : 14/08/2013

    Re: [Resolvido]Ajuda com código para auto numeração de controle de contratos

    Mensagem  FabioPaes em Ter 25 Out 2016, 14:30

    Grato pelo retorno amigo, até a proxima se Deus quiser!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

      Data/hora atual: Sex 09 Dez 2016, 11:31