Pessoal
Me desculpem, mas olhei vários exemplos de numeração Personalizada mas não consegui resolver o meu problema.
Uso essa função para numerar meu campo:
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 tab_Entrevista " & _
"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) ' Tirei a Barra e coloquei ponto AGORA SEM PONTO.
NextNumAno = "1." & CStr(intYear) ' Tirei a Barra e coloquei ponto
Else
.MoveFirst
'NextNumAno = CStr(!Num + 1) & CStr(intYear) ' Tirei a Barra e coloquei ponto AGORA SEM PONTO.
NextNumAno = CStr(!Num + 1) & "." & CStr(intYear) ' Tirei a Barra e coloquei ponto
End If
.Close
End With
Set rst = Nothing
Set db = Nothing
End Function
O Campo que recebe o Número é Texto e fica assim 1.2013 10.2013 2.2013 etc....
Tentei passar para Campo Numérico retirando o (.) ponto mas não obtive sucesso, parece que dava erro nessa
linha:
Set rst = db.OpenRecordset(strSql, dbOpenDynaset)
Tinha problema para Ordenar o campo e agora resolvi pelo Forum com Val(NumAno).
Gostaria de acrecentar Zeros a esquerda assim 0001.2013 e não consegui.
Podem me auxiliar em colocar os Zeros ou passar para Númerico o Campo sem ponto 12013 22013 etc...
Obrigado
P.S
O arquivo esta aqui.
http://maximoaccess.forumeiros.com/t11450-subform-nao-abre-ao-clicar-em-incluir
Me desculpem, mas olhei vários exemplos de numeração Personalizada mas não consegui resolver o meu problema.
Uso essa função para numerar meu campo:
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 tab_Entrevista " & _
"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) ' Tirei a Barra e coloquei ponto AGORA SEM PONTO.
NextNumAno = "1." & CStr(intYear) ' Tirei a Barra e coloquei ponto
Else
.MoveFirst
'NextNumAno = CStr(!Num + 1) & CStr(intYear) ' Tirei a Barra e coloquei ponto AGORA SEM PONTO.
NextNumAno = CStr(!Num + 1) & "." & CStr(intYear) ' Tirei a Barra e coloquei ponto
End If
.Close
End With
Set rst = Nothing
Set db = Nothing
End Function
O Campo que recebe o Número é Texto e fica assim 1.2013 10.2013 2.2013 etc....
Tentei passar para Campo Numérico retirando o (.) ponto mas não obtive sucesso, parece que dava erro nessa
linha:
Set rst = db.OpenRecordset(strSql, dbOpenDynaset)
Tinha problema para Ordenar o campo e agora resolvi pelo Forum com Val(NumAno).
Gostaria de acrecentar Zeros a esquerda assim 0001.2013 e não consegui.
Podem me auxiliar em colocar os Zeros ou passar para Númerico o Campo sem ponto 12013 22013 etc...
Obrigado
P.S
O arquivo esta aqui.
http://maximoaccess.forumeiros.com/t11450-subform-nao-abre-ao-clicar-em-incluir