locked
zerar um campo automático a cada inicio de ano RRS feed

  • Pergunta

  • Tenho uma base de dados de sócios e precisava de colocar a zero um campo de numeração automática a cada início de ano(1/2007). Este campo está relacionado com outras tabelas  por isso não posso apagar os dados que tenho nas outras tabelas.

    agradecia ajuda

    obrigado

    Rui Rodrigues

    quarta-feira, 3 de janeiro de 2007 13:13

Respostas

  • Oi Rui,

    este código criei faz tempo (em 2001), ajuste o nome do campo e da tabela (no string SQL) com seus dados e faça um teste.

    Public Function NextNumAno() As String
    'Gera o próximo código da tabela de numeração/ano
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim intYear As Integer
    Dim strSQL As String

    'Ano atual, conforme o sistema
    intYear = Year(Date)

    'Verifica o último código para o ano
    strSQL = "SELECT CLng(Left$(NumAno, Len(NumAno)-5)) As Num, " & _
    "CInt(Right$(NumAno, 4)) As Ano FROM tblNumAno " & _
    "WHERE CInt(Right$(NumAno, 4))=" & CStr(intYear) & _
    " ORDER BY CLng(Left$(NumAno, Len(NumAno)-5)) DESC"
    Set db = CurrentDb()
    Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)
    With rst
        If .BOF And .EOF Then
            NextNumAno = "1/" & CStr(intYear)
        Else
            .MoveFirst
            NextNumAno = CStr(!Num + 1) & "/" & CStr(intYear)
        End If
        .Close
    End With
    Set rst = Nothing
    Set db = Nothing
    End Function

    sexta-feira, 5 de janeiro de 2007 02:29
    Moderador