Olá galera estou com um problema e não consigo resolver, mas sei que aqui é o lugar para que seja resolvido, seguinte:
Pesquisei na net e achei um contador automático em função do ano, pois tenho um form e precisava que na virada do ano a minha numeração fosse reiniciada novamente, exemplo: 0001/2015..0010/2015, e na virada voltasse a 0001/2016...Bom encontrei tal código que se encaixou perfeitamente e o apliquei...Lembrando que os 1% que conheço do Access, foi lendo e assistindo a vídeos aulas na net...
Hoje esse código me apresenta um resultado aparentemente satisfatório, mas o formato deveria ser alterado e é esse o meu impasse, o resultado é esse: 0001[2015], preciso que passe a ser [2015]0001, simples né porém meu limitado conhecimento não me permitiu tal alteração, conto com a ajuda de vocês.
Módulo:
Option Compare Database
Option Explicit
Public Function ContadorDeRegistros(strCampo As String, strSql As String)
'Autor: Carlos em 20/01/99 e-mail: crpmoura@ig.com.br
'Contador de registros personalizado no formato numero/ano
'Alterado para o formato numero[ano]
Dim strNum As String, DB As Database
Dim strMax As String, CampoAno As String
Dim AnoData As String, tbl As Recordset
Set DB = CurrentDb
'Ano tirado da data do sistema
AnoData = Year(Date)
'Abre a Tabela
Set tbl = DB.OpenRecordset(strSql)
'Se não há registros na tabela
If tbl.RecordCount = 0 Then
'Primeiro registro
ContadorDeRegistros = 1 & "[" & AnoData & "]"
Else
'pega o registro
strMax = tbl(strCampo)
'Pega o ano
CampoAno = Mid(strMax, (InStr(1, strMax, "[")) + 1, 4)
'Aqui testo o Ano do último registro com o do sistema
'Se for igual continue a contagem se não...
If CampoAno = AnoData Then
strNum = Left(strMax, (InStr(1, strMax, "[") - 1)) + 1
ContadorDeRegistros = strNum & "[" & AnoData & "]"
Else
MsgBox "O sistema iniciará uma nova contagem dos registros" _
& vbCrLf & " em função da virada do ano", vbInformation, "ATENÇÃO"
ContadorDeRegistros = 1 & "[" & AnoData & "]"
End If
End If
'formata o número
ContadorDeRegistros = StrZero(ContadorDeRegistros, 10)
tbl.Close
Set DB = Nothing
End Function
Public Function StrZero(nNumero As Variant, nCasas As Integer)
StrZero = Right("000000000000" + LTrim(nNumero), nCasas)
End Function
Código depois de inserir:
Private Sub Form_BeforeInsert(Cancel As Integer)
'Escolha o melhor evento para incrementar o seu contador
On Error GoTo Sai
Call NumeraRegistros
Exit Sub
Sai:
MsgBox "Erro - " & Err.Description
End Sub
Private Sub NumeraRegistros()
'Para um contador de registros personalizado ser eficiente
'você deve introduzir um campo autonumeração na sua tabela só
'para facilitar a busca do ultimo registro. Ele pode ficar oculto.
'Note que eu passo uma sql para a função em ordem decrescente e o
'nome do campo que eu quero incrementar a contagem.
Dim sql As String
sql = "SELECT NúmeroCotaçãoAccess, NúmeroCotação"
sql = sql & " FROM Tbl_Cotação"
sql = sql & " ORDER BY NúmeroCotaçãoAccess DESC"
Me.NúmeroCotação = ContadorDeRegistros("NúmeroCotação", sql)
End Sub
Agradeço a qualquer um que se disponha a ajudar!!!!
Pesquisei na net e achei um contador automático em função do ano, pois tenho um form e precisava que na virada do ano a minha numeração fosse reiniciada novamente, exemplo: 0001/2015..0010/2015, e na virada voltasse a 0001/2016...Bom encontrei tal código que se encaixou perfeitamente e o apliquei...Lembrando que os 1% que conheço do Access, foi lendo e assistindo a vídeos aulas na net...
Hoje esse código me apresenta um resultado aparentemente satisfatório, mas o formato deveria ser alterado e é esse o meu impasse, o resultado é esse: 0001[2015], preciso que passe a ser [2015]0001, simples né porém meu limitado conhecimento não me permitiu tal alteração, conto com a ajuda de vocês.
Módulo:
Option Compare Database
Option Explicit
Public Function ContadorDeRegistros(strCampo As String, strSql As String)
'Autor: Carlos em 20/01/99 e-mail: crpmoura@ig.com.br
'Contador de registros personalizado no formato numero/ano
'Alterado para o formato numero[ano]
Dim strNum As String, DB As Database
Dim strMax As String, CampoAno As String
Dim AnoData As String, tbl As Recordset
Set DB = CurrentDb
'Ano tirado da data do sistema
AnoData = Year(Date)
'Abre a Tabela
Set tbl = DB.OpenRecordset(strSql)
'Se não há registros na tabela
If tbl.RecordCount = 0 Then
'Primeiro registro
ContadorDeRegistros = 1 & "[" & AnoData & "]"
Else
'pega o registro
strMax = tbl(strCampo)
'Pega o ano
CampoAno = Mid(strMax, (InStr(1, strMax, "[")) + 1, 4)
'Aqui testo o Ano do último registro com o do sistema
'Se for igual continue a contagem se não...
If CampoAno = AnoData Then
strNum = Left(strMax, (InStr(1, strMax, "[") - 1)) + 1
ContadorDeRegistros = strNum & "[" & AnoData & "]"
Else
MsgBox "O sistema iniciará uma nova contagem dos registros" _
& vbCrLf & " em função da virada do ano", vbInformation, "ATENÇÃO"
ContadorDeRegistros = 1 & "[" & AnoData & "]"
End If
End If
'formata o número
ContadorDeRegistros = StrZero(ContadorDeRegistros, 10)
tbl.Close
Set DB = Nothing
End Function
Public Function StrZero(nNumero As Variant, nCasas As Integer)
StrZero = Right("000000000000" + LTrim(nNumero), nCasas)
End Function
Código depois de inserir:
Private Sub Form_BeforeInsert(Cancel As Integer)
'Escolha o melhor evento para incrementar o seu contador
On Error GoTo Sai
Call NumeraRegistros
Exit Sub
Sai:
MsgBox "Erro - " & Err.Description
End Sub
Private Sub NumeraRegistros()
'Para um contador de registros personalizado ser eficiente
'você deve introduzir um campo autonumeração na sua tabela só
'para facilitar a busca do ultimo registro. Ele pode ficar oculto.
'Note que eu passo uma sql para a função em ordem decrescente e o
'nome do campo que eu quero incrementar a contagem.
Dim sql As String
sql = "SELECT NúmeroCotaçãoAccess, NúmeroCotação"
sql = sql & " FROM Tbl_Cotação"
sql = sql & " ORDER BY NúmeroCotaçãoAccess DESC"
Me.NúmeroCotação = ContadorDeRegistros("NúmeroCotação", sql)
End Sub
Agradeço a qualquer um que se disponha a ajudar!!!!