good guy 15/9/2012, 15:24
Olá anderson,
Tente assim, crie um campo na tabela chamado Cod e no formulário deixe-o com a propriedade Visible = False ou se preferir deixe True. Lembre-se que esse campo tem que ser do tipo Número, não permitindo duplicação.
Public Function Contador(strCampo As String, tblTeste As String) As Long
'Código de Wagner (McFeba) do extinto fórum ExpertAccess
Dim strSQL As String, rkt As DAO.Recordset
strSQL = "SELECT Max" & "(" & strCampo & ")" & " As MaxValor"
strSQL = strSQL & " FROM " & tblTeste
Set rkt = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenForwardOnly)
Contador = Nz(rkt("MaxValor")) + 1
rkt.Close: Set rkt = Nothing
End Function
Private Sub cmdAdic_Click()
On Error Resume Next
DoCmd.RunCommand acCmdRecordsGoToNew
Me.Cod.SetFocus
End Sub
Private Sub Form_BeforeInsert(Cancel As Integer)
Me.Cod = Contador("Cod", "tblTeste")
End Sub
Private Sub Form_Current()
'Se está em um novo registro gera o número de serie
If Me.NewRecord Then
Me.Cod = Contador("Cod", "tblTeste")
End If
End Sub
Private Sub TipoCF_Exit(Cancel As Integer)
Dim sPes As String
Dim sTipo As String
Dim sPal As String
Dim s As String
Dim t As String
s = PessosFJ
t = TipoCF
sTipo = Format(CLng(Cod), "0000")
If Not IsNull(PessosFJ) Or Not IsNull(TipoCF) Then
sPes = Left(PessosFJ, 2)
sPal = Left(TipoCF, 2)
If s = "Jurídica" And t = "Fornecedor" Then
Codigo = "" & sTipo & "/" & sPes & ""
ElseIf s = "Física" And t = "Fornecedor" Then
Codigo = "" & sTipo & "/" & sPal & ""
Else
Exit Sub
End If
End If
Obs: Só não entendi se o que você acrescentar ao código são as primeiras letras de qual informação? Coloquei Jurídica ou Fornecedor quando acho que deveria ser Jurídica ou Física. De qualquer maneira, teste o código e tente adaptar da sua maneira. Valew?
End Sub
Última edição por good guy em 13/6/2014, 21:48, editado 3 vez(es)