Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nereu1301

[Resolvido] controle de acesso-parte final

Recommended Posts

não consegui alguem que me ajude a solucionar o problema nessa sub que retorna erro no sublinhado.

 

Private Sub MDIForm_Load()
i = 1 'efeito deslizante
    MnuCalculadora.Enabled = False
    MnuDesconectar.Enabled = True
    MnuOficina1.Enabled = False
    MnuOficina2.Enabled = False
    MnuOrcamento.Enabled = False
    MnuRecepçao.Enabled = False
    MnuProtocolo.Enabled = False
    MnuBackup.Enabled = False
    MnuCadUsuarios.Enabled = False
    Set rsTemp = CreateObject("ADODB.Recordset")
    With rsTemp
        .Open "select a.aplicacao, b.acessos from aplicacoes a, Acesso b where a.cod_aplicacao = b.cod_aplicacao " _
        & "and b.cod_usuario[u]=" & codigo[/u], cnn, adOpenKeyset, adLockOptimistic
        If .RecordCount = 0 Then
            MsgBox "Usuário sem acesso ao sistema!", vbExclamation, "Erro"
        Else
        Do While Not .EOF
        If rsTemp("Aplicacao") = "Calculadora" And rsTemp("Acessos") = 1 Then
            MnuCalculadora.Enabled = True
        End If
        If rsTemp("Aplicacao") = "Oficina1" And rsTemp("Acessos") = 1 Then
            MnuOficina1.Enabled = True
        End If
        If rsTemp("Aplicacao") = "Oficina2" And rsTemp("Acessos") = 1 Then
            MnuOficina2.Enabled = True
        End If
        If rsTemp("Aplicacao") = "Orcamento" And rsTemp("Acessos") = 1 Then
            MnuOrcamento.Enabled = True
        End If
        If rsTemp("Aplicacao") = "Recepçao" And rsTemp("Acessos") = 1 Then
            MnuRecepçao.Enabled = True
        End If
        If rsTemp("Aplicacao") = "Protocolo" And rsTemp("Acessos") = 1 Then
            MnuProtocolo.Enabled = True
        End If
        If rsTemp("Aplicacao") = "Backup" And rsTemp("Acessos") = 1 Then
            MnuBackup.Enabled = True
        End If
        If rsTemp("Aplicacao") = "CadUsuarios" And rsTemp("Acessos") = 1 Then
            MnuCadUsuarios.Enabled = True
        End If
        .MoveNext
        Loop
        End If
        .Close
    End With
End Sub

já entrei em outros furuns e nada, já pedi pra programadores amigos meus e nada, tentei entrar em contato com luciano correa que é quem postou o projeto no IMaster e não consegui então se alguem puder ajudar agradeço.

 

Sistema de controle de acesso de Luciano Correa

Compartilhar este post


Link para o post
Compartilhar em outros sites

retorna erro variavel não declarada, mas se eu declaro a variavel como integer ou double por exemplo ele acessa o programa mas com mensagem de que o usuario nao tem acesso a nenhum aplicativo, isto é ele entende sempre como "0" ou sem permissão.

Isto quer dizer que algo tá errado, provavelmente na consulta, por que ele já para no if.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está implementando em um projeto seu ?

Se sim, acredito que tenha esquecido ele em alguma parte.

 

Esse campo cod_usuario deve ser algo como o "login", unico do usuário. Acho que deve guardar ele desde o login.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Scorpio

Sim estou implementando num projeto que venho desenvolvendo. Não entendi oque voce quiz dizer com "esquecido" porque a sub acima está contida no form MDI que faz parte de um sistema que contem FormLogin, FormAplicações e FormAcesso contidos dentro de um projeto maior, oque não me permite esquecer algo.

Tudo funciona perfeitamente bem exceto esta sub que é a que vai conferir se o usuário tal tem permissão a quais aplicações do projeto.

 

Eu na realidade não fiz esse sistema, estou apenas tentando utilizar um sistema postado no próprio Imaster de propriedade de Luciano Correa.

 

Mas valeu pela dica e se alguem, inclusive o Luciano Correa se ainda existe, puder contribuir agradeço.

 

Nereu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem algum módulo o projeto?

Aperta CTRL+F para pesquisa, digita "codigo" e seleciona "Project". Ache onde a váriavel está declarada.

 

Então cara, faz um teste. Sabe usar o Immediate Window? Aperta CTRL+G que vai pular um janelinha na sua tela.

Imagem Postada

<var>=valor [ Atribue valor para uma variável

?<var> [ Mostra o valor da variável

 

Declare a variavel codigo na sub que mostrou aqui.

Coloque um breakpoint na linha Set rsTemp = CreateObject("ADODB.Recordset") e execute.

Quando o programa parar no breakpoint, aperta CTRL+G e digita:

codigo = 99999 'Aqui vai o código do usuário que você está no sistema.
E aperta F5 para continuar.

 

 

Ve ae e depois diga o que aconteceu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

boa tarde

 

Este é a parte do módulo onde está a várial código

Public rsUsuarios As New ADODB.Recordset
Public rsAplicacoes As New ADODB.Recordset
Public rsAcesso As New ADODB.Recordset
Public cnnComando As New ADODB.Command
Public rsTemp As ADODB.Recordset

Public codigo As Double

Public NewRecord As Boolean
Public EditRecord As Boolean

 

declarei a váriavel na sub

Coloquei um breakpoint na linha Set rsTemp = CreateObject("ADODB.Recordset") e executei.

 

Quando o programa parou no breakpoint, apertei CTRL+G e digitei:

 

e retornou usuário sem acesso, então coloquei o mouse sobre a palavra código no Immediante e mostra "codigo=2"

 

ai meu amigo, meus conhencimentos não alcançaram mais nada

 

nereu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia

 

Finalmente consegui solucionar. Ao invés de fazer comparações entre duas tabelas como era a idéia do autor do Sistema de Acesso, usei só a tabela de Acesso e funcionou beleza.

 

Ficou assim:

 

Private Sub MDIForm_Load()
i = 1 'efeito deslizante
    MnuCalculadora.Enabled = False
    MnuDesconectar.Enabled = False
    MnuOficina1.Enabled = False
    MnuOficina2.Enabled = False
    MnuOrcamento.Enabled = False
    MnuRecepçao.Enabled = False
    MnuProtocolo.Enabled = False
    MnuBackup.Enabled = False
    MnuCadUsuarios.Enabled = False
    Set rsAcesso = CreateObject("ADODB.Recordset")
    With rsAcesso
        .Open "select * from Acesso where cod_usuario=" & codigo, cnn, adOpenKeyset, adLockOptimistic
        If .RecordCount = 0 Then
            MsgBox "Usuário sem acesso ao sistema!", vbExclamation, "Erro"
        Else
        Do While Not .EOF
        If rsAcesso("Cod_Aplicacao") = "1" And rsAcesso("Acessos") = 1 Then
            MnuRecepçao.Enabled = True
        End If
        If rsAcesso("Cod_Aplicacao") = "2" And rsAcesso("Acessos") = 1 Then
            MnuOficina1.Enabled = True
        End If
        If rsAcesso("Cod_Aplicacao") = "3" And rsAcesso("Acessos") = 1 Then
            MnuOficina2.Enabled = True
        End If
        If rsAcesso("Cod_Aplicacao") = "4" And rsAcesso("Acessos") = 1 Then
            MnuOrcamento.Enabled = True
        End If
        If rsAcesso("Cod_Aplicacao") = "5" And rsAcesso("Acessos") = 1 Then
            MnuCalculadora.Enabled = True
        End If
        If rsAcesso("Cod_Aplicacao") = "6" And rsAcesso("Acessos") = 1 Then
            MnuProtocolo.Enabled = True
        End If
        If rsAcesso("Cod_Aplicacao") = "7" And rsAcesso("Acessos") = 1 Then
            MnuCadUsuarios.Enabled = True
        End If
        If rsAcesso("Cod_Aplicacao") = "8" And rsAcesso("Acessos") = 1 Then
            MnuBackup.Enabled = True
        End If
        If rsAcesso("Cod_Aplicacao") = "9" And rsAcesso("Acessos") = 1 Then
            MnuDesconectar.Enabled = True
        End If
        .MoveNext
        Loop
        End If
        .Close
    End With
End Sub

 

Obrigado a todos pela paciência. Coloquem como resolvido por favor.

 

Abraços

 

Nereu

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.