Boa tarde, tenho a necessidade de fazer funcionar o BD que deixo aqui com o seu link.
https://www.dropbox.com/s/vyrwxphj86mqsax/numeradores%20.mdb?dl=0
A numeração de um determinado documento é dada com base no valor (texto) de um campo, o que dará um Ofício 1, Comunicado de imprensa 1, Despacho 1, etc. A numeração volta a zero todos os anos, mas em relação a isso já estou resolvido, assim como com a função para registar o Utilizador Logado (GetUserName).
O problema começa com a macro que quer mostrar uma barra que não existe, eliminei essas duas partes da macro e ele abre bem, mas quando quero registar um documento, dá um erro numa parte do código VBA.
No meu antigo trabalho, isto funcionava bem (acess 2007) agora em 2010 e 2013, não.
Deixo também os códigos que estou a utilizar para a numeração voltar a 0 e a GetUserName.
Para voltar a zero (será colocada no campo TipoDoc no evento on dirty)
'Criado por Balem em 28/07/14
If Me.RecordsetClone.RecordCount = 0 Then
' a tabela está sem registros
Me.Numero = Format("1", "000") & "/" & Year(Date)
Else
If Val(Right(DMax("[Numero]", "TabCartao", "Right([Numero],4)= " & Year(Date)), 4)) <> Year(Date) Then
MsgBox "Reiniciando contagem dos registros para o novo ano", vbInformation, "Aviso"
Me.Numero = Format("1", "000") & "/" & Year(Date) + 1
Else
Me.Numero = Format(Left(DMax("[Numero]", "TabCartao", "Right([Numero],4)= " & Year(Date)), 4), "000") & "/" & Year(Date)
End If
End If
Para a função GetUserName (atualizada para 64bits)
'By JPaulo
Declare PtrSafe Function TSB_API_GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function GetUserName_TSB() As String
Dim lngLen As Long
Dim strBuf As String
Const MaxUserName = 255
strBuf = Space(MaxUserName)
lngLen = MaxUserName
If CBool(TSB_API_GetUserName(strBuf, lngLen)) Then
GetUserName_TSB = Left$(strBuf, lngLen - 1)
Else
GetUserName_TSB = ""
End If
End Function
https://www.dropbox.com/s/vyrwxphj86mqsax/numeradores%20.mdb?dl=0
A numeração de um determinado documento é dada com base no valor (texto) de um campo, o que dará um Ofício 1, Comunicado de imprensa 1, Despacho 1, etc. A numeração volta a zero todos os anos, mas em relação a isso já estou resolvido, assim como com a função para registar o Utilizador Logado (GetUserName).
O problema começa com a macro que quer mostrar uma barra que não existe, eliminei essas duas partes da macro e ele abre bem, mas quando quero registar um documento, dá um erro numa parte do código VBA.
No meu antigo trabalho, isto funcionava bem (acess 2007) agora em 2010 e 2013, não.
Deixo também os códigos que estou a utilizar para a numeração voltar a 0 e a GetUserName.
Para voltar a zero (será colocada no campo TipoDoc no evento on dirty)
'Criado por Balem em 28/07/14
If Me.RecordsetClone.RecordCount = 0 Then
' a tabela está sem registros
Me.Numero = Format("1", "000") & "/" & Year(Date)
Else
If Val(Right(DMax("[Numero]", "TabCartao", "Right([Numero],4)= " & Year(Date)), 4)) <> Year(Date) Then
MsgBox "Reiniciando contagem dos registros para o novo ano", vbInformation, "Aviso"
Me.Numero = Format("1", "000") & "/" & Year(Date) + 1
Else
Me.Numero = Format(Left(DMax("[Numero]", "TabCartao", "Right([Numero],4)= " & Year(Date)), 4), "000") & "/" & Year(Date)
End If
End If
Para a função GetUserName (atualizada para 64bits)
'By JPaulo
Declare PtrSafe Function TSB_API_GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function GetUserName_TSB() As String
Dim lngLen As Long
Dim strBuf As String
Const MaxUserName = 255
strBuf = Space(MaxUserName)
lngLen = MaxUserName
If CBool(TSB_API_GetUserName(strBuf, lngLen)) Then
GetUserName_TSB = Left$(strBuf, lngLen - 1)
Else
GetUserName_TSB = ""
End If
End Function