MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

2 participantes

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 89
    Registrado : 24/03/2012

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  cantu 12/10/2021, 14:17

    Boa tarde,

    No formulário de login como codificar para que Password e Username sejam sensíveis a letras maiúsculas e minúsculas.
    Actualmente no meu login o Username = CEOAdm Password=123456 mas se escrever ceoadm também aceita e não devia aceitar

    Desde já grato pela Vossa ajuda
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3328
    Registrado : 22/11/2016

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty Re: [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  DamascenoJr. 12/10/2021, 15:09

    Código:
    if strcomp(Texto1, Texto2, vbBinaryCompare) = 0 then
        'comparação binária e os textos estão iguais
    else
        'os textos são diferentes
    end if


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

    cantu gosta desta mensagem

    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 89
    Registrado : 24/03/2012

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty Re: [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  cantu 12/10/2021, 17:01

    Boa tarde,

    Obrigado pela resposta. Tenho uma dúvida, em que parte do código devo inserir?:

    Private Sub BtnLoginEntrar_Click()

    Dim ValidarUtilizador As Integer
    Dim Nivel_Acesso As String
    Nivel_Acesso = DLookup("[GrupoId]", "TB_UTILIZADORES", "UtilizadorLogin = '" & Me.TxtUtilizadorLogin.Value & "'")
    Dim str_user, str_pass As String

    If ValidaCamposNulos = False Then


    Cancel = True

    Else

    ValidarUtilizador = DCount("[UtilizadorId]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    If ValidarUtilizador > 0 Then

    varNomeUtilizadorLog = DLookup("[UtilizadorNome]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    varLoginUtilizadorLog = DLookup("[UtilizadorLogin]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    varGrupoUtilizadorLog = DLookup("[GrupoNome]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    varIdUtilizadorLog = DLookup("[UtilizadorId]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    varIdGrupoLog = DLookup("[GrupoId]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    MsgBox ("Login da Aplicação Tuberculosis OK! " & varNomeUtilizadorLog & "."), vbInformation + vbOKOnly, "INFORMAÇÃO"

    DoCmd.Close acForm, "FRM_LOGIN"
    DoCmd.OpenForm "FRM_MENU"

    Else

    MsgBox ("Utilizador e/ou Senha inválidos!"), vbInformation + vbOKOnly, "ATENÇÃO"

    Me.TxtUtilizadorLogin.SetFocus

    Me.TxtUtilizadorSenha = Empty

    Exit Sub

    End If

    End If

    If Nivel_Acesso = 1 Then
    DoCmd.Close
    DoCmd.OpenForm "FRM_MENU"
    ElseIf Nivel_Acesso = 2 Then
    DoCmd.Close
    DoCmd.OpenForm "FRM_MENU"
    Forms!FRM_MENU.BtnGestaoUtilizadores.Enabled = False

    End If

    End Sub


    Cumprimentos
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3328
    Registrado : 22/11/2016

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty Re: [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  DamascenoJr. 12/10/2021, 17:14

    Código:
    ...

    Else

    ValidarUtilizador = DCount("[UtilizadorId]", "CST_UTILIZADORES_LOGIN", "strcomp([UtilizadorLogin], '" & Me.TxtUtilizadorLogin _
    & "', 0) = 0 And strcomp([UtilizadorSenha], '" & Me.TxtUtilizadorSenha & "', 0) = 0")

    If ValidarUtilizador > 0 Then

    ...


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

    cantu gosta desta mensagem

    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 89
    Registrado : 24/03/2012

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty Re: [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  cantu 13/10/2021, 09:57

    Bom dia,

    Obrigado pela resposta, ficou a funcionar mas apareceu-me um outro problema (se calhar já lá estava e ainda não tinha detetado):
    * Quando me engano a preencher qualquer um dos campos (username e/ou password) ou não preencho aparece uma mensagem
    (Run-time error '94' - Invalid use of Null) e pára na linha de código:
    ** Nivel_Acesso = DLookup("[GrupoId]", "TB_UTILIZADORES", "UtilizadorLogin = '" & Me.TxtUtilizadorLogin.Value & "'")

    * Um dos utilizadores é "CEOAdm" se escrever "ceoadm" aparece como previsto "Utilizador e/ou password incorretos"
    Agradeço desde já a ajuda
    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 89
    Registrado : 24/03/2012

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty Re: [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  cantu 13/10/2021, 10:10

    Bom dia,

    Quando comento:

    ' Dim Nivel_Acesso As String
    ' Nivel_Acesso = DLookup("[GrupoId]", "TB_UTILIZADORES", "UtilizadorLogin = '" & Me.TxtUtilizadorLogin.Value & "'")
    ******
    ' If Nivel_Acesso = 1 Then
    ' DoCmd.Close
    ' DoCmd.OpenForm "FRM_MENU"
    ' ElseIf Nivel_Acesso = 2 Then
    ' DoCmd.Close
    ' DoCmd.OpenForm "FRM_MENU"
    ' Forms!FRM_MENU.BtnGestaoUtilizadores.Enabled = False
    '
    'End If


    fica tudo a funcionar na perfeição, mas todos os utilizadores têm acesso a todos os formulários quando só o administrador é que deve ter acesso.

    No meu caso o formulário de Gestão de Utilizadores só pode ser aberto pelo administrador

    Grato pela atenção
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3328
    Registrado : 22/11/2016

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty Re: [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  DamascenoJr. 14/10/2021, 00:38

    Ora bolas, basta impedir que o código prossiga se a informação não existir.

    Troque

    Código:
    Nivel_Acesso = DLookup("[GrupoId]", "TB_UTILIZADORES", "UtilizadorLogin = '" & Me.TxtUtilizadorLogin.Value & "'")

    Por

    Código:
    If nz(Me.TxtUtilizadorLogin.Value) = "" Or Nz(Me.TxtUtilizadorSenha) = "" then
        call msgbox("Oxi, preencha os campos pra continuar.", vbExclamation, "Atenção aí por favor"
        exit sub
    end if

    Nivel_Acesso = DLookup("[GrupoId]", "TB_UTILIZADORES", "UtilizadorLogin = '" & Me.TxtUtilizadorLogin.Value & "'")


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

    cantu gosta desta mensagem

    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 89
    Registrado : 24/03/2012

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty Re: [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  cantu 14/10/2021, 11:52

    Bom dia,

    Em primeiro lugar os meus agradecimentos pelas contribuições dadas.

    1. Experimentei o código enviado e efectivamente se deixar em branco os campos aparece a msg para preencher - Ok!
    2. Se o username e/ou password estiverem incorrectos aparece a msg a informar que está/estão incorectos - Ok!
    3. Se introduzir as informações correctas aparece: MsgBox ("Login da Aplicação Tuberculosis OK! " & varNomeUtilizadorLog & "."), vbInformation + vbOKOnly, "INFORMAÇÃO" - Ok!
    4. Depois da msg anterior aparece a info: "Run-time '13': Type mismatch" e não filtra o nivel de acesso
    5. O código que tenho actualmente no btn "Entrar":

    Private Sub BtnLoginEntrar_Click()

    Dim ValidarUtilizador As Integer
    Dim Nivel_Acesso As String

    If Nz(Me.TxtUtilizadorLogin.Value) = "" Or Nz(Me.TxtUtilizadorSenha) = "" Then
    MsgBox ("Preencha os campos!"), vbInformation + vbOKOnly, "ATENÇÃO"
    Exit Sub

    End If

    ' Nivel_Acesso = DLookup("[GrupoId]", "TB_UTILIZADORES", "UtilizadorLogin = '" & Me.TxtUtilizadorLogin.Value & "'")

    If ValidaCamposNulos = False Then


    Cancel = True

    Else

    ValidarUtilizador = DCount("[UtilizadorId]", "CST_UTILIZADORES_LOGIN", "strcomp([UtilizadorLogin], '" & Me.TxtUtilizadorLogin _
    & "',0)= 0 And strcomp([UtilizadorSenha], '" & Me.TxtUtilizadorSenha & "',0)=0")

    If ValidarUtilizador > 0 Then

    varNomeUtilizadorLog = DLookup("[UtilizadorNome]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    varLoginUtilizadorLog = DLookup("[UtilizadorLogin]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    varGrupoUtilizadorLog = DLookup("[GrupoNome]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    varIdUtilizadorLog = DLookup("[UtilizadorId]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    varIdGrupoLog = DLookup("[GrupoId]", "CST_UTILIZADORES_LOGIN", "[UtilizadorLogin]= '" & Me.TxtUtilizadorLogin _
    & "' And [UtilizadorSenha]= '" & Me.TxtUtilizadorSenha & "'")

    MsgBox ("Login da Aplicação Tuberculosis OK! " & varNomeUtilizadorLog & "."), vbInformation + vbOKOnly, "INFORMAÇÃO"

    DoCmd.Close acForm, "FRM_LOGIN"
    DoCmd.OpenForm "FRM_MENU"

    Else

    MsgBox ("Utilizador e/ou Senha inválidos!"), vbInformation + vbOKOnly, "ATENÇÃO"

    Me.TxtUtilizadorLogin.SetFocus

    Me.TxtUtilizadorSenha = Empty

    Exit Sub

    End If

    End If

    If Nivel_Acesso = 1 Then
    DoCmd.Close
    DoCmd.OpenForm "FRM_MENU"
    ElseIf Nivel_Acesso = 2 Then
    DoCmd.Close
    DoCmd.OpenForm "FRM_MENU"
    Forms!FRM_MENU.BtnGestaoUtilizadores.Enabled = False

    End If

    End Sub


    Tenho uma tabela de acessos com 3 campos (GrupoCodigo,GrupoID,GrupoNome) onde:
    GrupoID (1 e 2) e GrupoNome (Administrador e Utilizador) respectivamente

    Obrigado pela atenção e agradeço ajuda
    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 89
    Registrado : 24/03/2012

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty Re: [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  cantu 14/10/2021, 14:04

    Caro Damasceno,

    Penso ter resolvido o problema.

    Coloquei a linha de código: Nivel_Acesso = DLookup("[GrupoId]", "TB_UTILIZADORES", "UtilizadorLogin = '" & Me.TxtUtilizadorLogin.Value & "'") depois da msg de login ok e antes de fechar o FRM_LOGIN e abrir a FRM_MENU.

    Antes de dar como resolvido vou testar massivamente.

    Obrigado pela ajuda
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3328
    Registrado : 22/11/2016

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty Re: [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  DamascenoJr. 15/10/2021, 02:12

    Na sua penúltima mensagem

    Código:
    Private Sub BtnLoginEntrar_Click()

    ...
    Dim Nivel_Acesso As String

    ...

    ' Nivel_Acesso = DLookup("[GrupoId]", "TB_UTILIZADORES", "UtilizadorLogin = '" & Me.TxtUtilizadorLogin.Value & "'")

    ...

    If Nivel_Acesso = 1 Then

    ...

    End Sub

    Sua variável Nivel_Acesso foi declarada como texto, porém a linha onde a variável recebia valor estava comentada, isto é, o código seguia com a variável tendo valor vazio. Mais a frente você tenta comparar se um texto vazio é igual a um número, sendo assim você recebe uma mensagem de erro.

    Talvez ao mover a linha de local no código, retirou a marcação de comentário e assim a variável enfim recebeu um valor, e o VBA, bondoso como sempre o é, percebe que embora a variável seja do tipo texto, aceita que o valor contido na variável é um número e então permite a comparação.

    Veja abaixo um tópico com dicas de como encontrar erros no código.
    https://www.maximoaccess.com/t37958-dicas-de-ouro

    Não esqueça de marcar o tópico como resolvido.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

    cantu gosta desta mensagem

    avatar
    cantu
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 89
    Registrado : 24/03/2012

    [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas Empty Re: [Resolvido]Password e Username sensíveis a letras maiúsculas e minúsculas

    Mensagem  cantu 20/10/2021, 13:00

    A funcionar.
    Obrigado pela ajuda

      Data/hora atual: 29/11/2021, 23:14