Bom dia Srs mestres. O meu projeto que os Srs já me ajudaram bastante tem uma particularidade de ter um Login (imagem 1) que chama um BD onde esse BD chama um outro BD principal (projeto propriamente dito) através de botões individuais para cada cliente (imagem 2).
A dúvida é: será que eu consigo fazer com que o BD_Principal herde o Usuário Logado do primeiro BD?
Porque herdando eu consigo atribuir as permissões de cada um já programada no BD_Principal.
Em ambos, nos formulários Menu_OM e Menu existem a caixa texto "txtUsuarioAtual" que tem como essa fonte de controle "=getUsuarioAtual()"
A função utilizada para certificação de login é esse:
Private strUsuarioAtual As String
Function verificaLogin(argLogin As String, argSenha As String) As Boolean
Dim criterio As String
criterio = "Login='" & argLogin & "' And Senha='" & argSenha & "'"
If Nz(DCount("Login", "Usuarios", criterio), 0) > 0 Then
verificaLogin = True
setUsuarioAtual argLogin
Else
verificaLogin = False
End If
End Function
Sub setUsuarioAtual(argUsuario As String)
strUsuarioAtual = argUsuario
End Sub
Function getUsuarioAtual() As String
getUsuarioAtual = strUsuarioAtual
End Function
E o código do botão para chamar cada cliente é esse abaixo:
Private Sub btn_Entrar_Click()
If IsNull(Me.comb_Usuario) Or Me.comb_Usuario.Value = "" Then
MsgBox "O campo Usuario é de preenchimento obrigatório.", vbOKOnly + vbCritical, "Atenção"
Me.comb_Usuario.SetFocus
ElseIf IsNull(Me.txt_Senha) Or Me.txt_Senha.Value = "" Then
MsgBox "O campo Senha é de preenchimento obrigatório.", vbOKOnly + vbCritical, "Atenção"
Me.txt_Senha.SetFocus
Else
If Not IsNull(comb_Usuario) And Not IsNull(txt_Senha) Then
If verificaLogin(comb_Usuario, txt_Senha) Then
Dim strcmd As String
Dim objaccess As Access.Application
strcmd = SysCmd(acSysCmdAccessDir) & "\msaccess.exe " & "C:\Users\Marcos\Desktop\PCVOM_TESTE.accdb"
Call Shell(strcmd, vbNormalFocus)
DoCmd.Quit 'para fechar o banco mdb que chamou o outro
Else
MsgBox "Senha inválida!", vbExclamation, "Login"
Me.txt_Senha = Null
Me.txt_Senha.SetFocus
End If
End If
End If
End Sub
A dúvida é: será que eu consigo fazer com que o BD_Principal herde o Usuário Logado do primeiro BD?
Porque herdando eu consigo atribuir as permissões de cada um já programada no BD_Principal.
Em ambos, nos formulários Menu_OM e Menu existem a caixa texto "txtUsuarioAtual" que tem como essa fonte de controle "=getUsuarioAtual()"
A função utilizada para certificação de login é esse:
Private strUsuarioAtual As String
Function verificaLogin(argLogin As String, argSenha As String) As Boolean
Dim criterio As String
criterio = "Login='" & argLogin & "' And Senha='" & argSenha & "'"
If Nz(DCount("Login", "Usuarios", criterio), 0) > 0 Then
verificaLogin = True
setUsuarioAtual argLogin
Else
verificaLogin = False
End If
End Function
Sub setUsuarioAtual(argUsuario As String)
strUsuarioAtual = argUsuario
End Sub
Function getUsuarioAtual() As String
getUsuarioAtual = strUsuarioAtual
End Function
E o código do botão para chamar cada cliente é esse abaixo:
Private Sub btn_Entrar_Click()
If IsNull(Me.comb_Usuario) Or Me.comb_Usuario.Value = "" Then
MsgBox "O campo Usuario é de preenchimento obrigatório.", vbOKOnly + vbCritical, "Atenção"
Me.comb_Usuario.SetFocus
ElseIf IsNull(Me.txt_Senha) Or Me.txt_Senha.Value = "" Then
MsgBox "O campo Senha é de preenchimento obrigatório.", vbOKOnly + vbCritical, "Atenção"
Me.txt_Senha.SetFocus
Else
If Not IsNull(comb_Usuario) And Not IsNull(txt_Senha) Then
If verificaLogin(comb_Usuario, txt_Senha) Then
Dim strcmd As String
Dim objaccess As Access.Application
strcmd = SysCmd(acSysCmdAccessDir) & "\msaccess.exe " & "C:\Users\Marcos\Desktop\PCVOM_TESTE.accdb"
Call Shell(strcmd, vbNormalFocus)
DoCmd.Quit 'para fechar o banco mdb que chamou o outro
Else
MsgBox "Senha inválida!", vbExclamation, "Login"
Me.txt_Senha = Null
Me.txt_Senha.SetFocus
End If
End If
End If
End Sub
- Anexos
- Anexo.pdf
- Você não tem permissão para fazer download dos arquivos anexados.
- (269 Kb) Baixado 5 vez(es)