MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

    auto numeração

    avatar
    jsilva
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 2
    Registrado : 22/02/2012

    auto numeração  Empty auto numeração

    Mensagem  jsilva 8/6/2013, 16:29

    boa tarde

    venho solicitar ajudar para criar um campo chave primaria onde o que pretendo é que surja o seguinte formato de nº

    710201300001

    onde 710 é um fixo
    2013 o ano em curso
    00001 a numeração automática para cada registo efectuado

    deve manter sempre este formato

    (estou tentando criar um módulo mas aparece-me sempre o seguinte formato 000071020131, não estou a ver como dar a volta)

    desde já obrigado pela ajuda,

    eis o código que estou a usar:

    Option Compare Database
    Option Explicit
    Public Function ContadorDeRegistros(strCampo As String, strSql As String)

    Dim strNum As String, DB As Database
    Dim strMax As String, CampoAno As String
    Dim AnoData As String, tbl As Recordset

    Set DB = CurrentDb
    AnoData = Year(Date)

    Set tbl = DB.OpenRecordset(strSql)
    If tbl.RecordCount = 0 Then
    ContadorDeRegistros = ("710" & AnoData) & 1
    Else
    strMax = tbl(strCampo)
    CampoAno = Mid(strMax, (InStr(1, strMax)) + 1, 5)
    If CampoAno = AnoData Then
    strNum = Right(strMax, (InStr(1, strMax) - 1)) + 1
    ContadorDeRegistros = ("710" & AnoData) & strNum
    Else
    MsgBox "O sistema iniciará uma nova contagem dos registos" _
    & vbCrLf & " em função da mudança do ano", vbInformation, "ATENÇÃO"
    ContadorDeRegistros = ("710" & AnoData) & 1
    End If
    End If
    ContadorDeRegistros = StrZero(ContadorDeRegistros, 12)
    tbl.Close
    Set DB = Nothing
    End Function


    Public Function StrZero(nNumero As Variant, nCasas As Integer)
    StrZero = Right("000000000000" + LTrim(nNumero), nCasas)
    End Function
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    auto numeração  Empty Re: auto numeração

    Mensagem  Alexandre Neves 8/6/2013, 19:43

    Boa tarde, e bem-vindo ao fórum
    Option Compare Database
    Option Explicit
    Public Function ContadorDeRegistros(strCampo As String, strSql As String) as string

    Dim strNum As String
    Dim strMax As String, CampoAno As String
    Dim AnoData As String, tbl As dao.tabledef

    AnoData = Year(Date)

    Set tbl = CurrentDb.OpenRecordset(strSql)
    If tbl.RecordCount = 0 Then
    ContadorDeRegistros = "710" & AnoData & "00001"
    Else
    strMax = tbl(strCampo)
    CampoAno = Mid(strMax, (InStr(1, strMax)) + 1, 5)
    If CampoAno = AnoData Then
    strNum = Right(strMax, (InStr(1, strMax) - 1)) + 1
    ContadorDeRegistros = ("710" & AnoData) & Format(strNum,"00000")
    Else
    MsgBox "O sistema iniciará uma nova contagem dos registos" _
    & vbCrLf & " em função da mudança do ano", vbInformation, "ATENÇÃO"
    ContadorDeRegistros = "710" & AnoData & "00001"
    End If
    End If
    tbl.Close
    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

      Data/hora atual: 6/5/2024, 19:46