MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Usando a função CBool para validar login

    Compartilhe
    avatar
    Dilson
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1707
    Registrado : 11/11/2009

    Usando a função CBool para validar login

    Mensagem  Dilson em 8/11/2011, 18:23

    Amigos,

    Estudando a função CBool eu aprendi o seguinte:

    Ela serve para converter uma expressão em um Boolean. Se a expressão avaliar como um valor diferente de zero, CBool retornará True; caso contrário, retornará False.

    Veja a sintaxe:

    CBool
    (Expressão)

    O F1 do access disponibiliza o seguinte código para entedermos como funciona isso:
    ********************************************************************
    Dim A, B, Check

    A = 5: B = 5 ' Inicializa variáveis.
    Check = CBool(A = B) ' Check contém True.

    A = 0 ' Define a variável.
    Check = CBool(A) ' Check contém False.
    ********************************************************************

    Claramente vemos que a função faz a comparação:
    - Se dados semelhantes, retorna True
    - Se dados diferentes, retorna False

    Compreendido a função, resolvi escrever um código para validar a entrada de usuário no banco de dados, veja a seguir:
    ****************************************************************************************
    On Error GoTo trataErro 'Inicio o tratamento de erros
    Dim senhaDoBD As String 'Variável que armazenará a senha contida na tabela do banco
    Dim senhaDoForm As String 'Variável que armazenará a senha digitada no formulário
    Dim AcessoAoSistema As Boolean 'Variável que armazenará o resultado da função Cbool: True ou False

    senhaDoBD = DLookup("senha", "tblUsuario", "login = Forms!LoginCBool!txtLogin") 'Armazena a senha que está no banco
    senhaDoForm = txtSenha 'Armazena a senha digitada no formulário

    AcessoAoSistema = CBool(senhaDoBD = senhaDoForm) 'Faz a comparação se for igual devolverá o valor True

    If AcessoAoSistema = True Then 'Se devolveu True, é porque a senha confere
    DoCmd.OpenForm "MenuDeControle", acNormal 'Se confere, abro o formulário de Menu (Principal)
    Else
    MsgBox "Senha incorreta, tente novamente", vbCritical, "Erro" 'Se não confere, emite a mensagem ao usuário
    End If

    Exit_trataErro:
    Exit Sub 'Encerro o tratamento de erro

    trataErro: 'Se algo inesperado aconteceu, entra em ação o tratamento de erro

    If Err.Number = 94 Then
    MsgBox "O processamento de dados falhou" _
    & vbCrLf & vbCrLf & "Escreva um nome válido.", vbCritical, "Erro"
    Else
    MsgBox "O processamento de dados falhou" _
    & vbCrLf & vbCrLf & "Trata-se do erro n° " & Err.Number & _
    " Descrição: " & Err.Description, vbCritical, "Erro"
    End If

    Resume Exit_trataErro

    ****************************************************************************************
    É isso aí moçada, a idéia foi falar um pouco desta das muitas funções de conversão que aplicam-se ao Microsoft Access. Espero que sirva em suas carreiras.

    Abaixo faça o download do exemplo:

    Download

    Até study
    avatar
    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1237
    Registrado : 05/02/2010

    Usando a função CBool para validar login

    Mensagem  good guy em 15/8/2012, 15:48

    Olá Dilson,

    Valeu mesmo pela dica. Estava trabalhando em um código que me informasse se duas datas coincidiam para a execução de uma tarefa naquele dia e utilizando a função CBool da forma como você a esmiuçou deu para codificar bem e funfar corretamente.

    O código completo ficou :

    Private Sub Form_Load()

    Dim strSQL As String
    Dim nData As String
    Dim mData As String
    Dim sData As String
    Dim xData As String
    Dim count As Integer
    Dim n As Integer
    Dim sOrdem As String
    Dim strTitle As String
    Dim intRetVal As Integer
    Dim strMsg As String
    Dim informacao As Boolean

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM tbl_OS WHERE REAGENDAR = -1 ORDER BY DATAAGENDA DESC")
    DATADEHOJE = Format(Date, "dd/mm/yyyy")
    sData = CStr(DATADEHOJE)

    count = DCount("NOME", "tbl_OS", "REAGENDAR = -1")
    sOrdem = DLookup("ORDEMDESERVICO", "tbl_OS", "REAGENDAR= -1")
    rs.Fields("ORDEMDESERVICO") = sOrdem
    xData = DLookup("DATAAGENDA", "tbl_OS", "REAGENDAR= -1 AND DATAAGENDA = '" & sData & "'")

    If count > 0 Then
    strSQL = "SELECT * FROM tbl_OS WHERE REAGENDAR = -1 AND DATAAGENDA = '" & sData & "'"
    Me.RecordSource = strSQL
    informacao = CBool(xData = sData)

    If informacao = True Then
    MsgBox "HOJE É DIA DE REAGENDAR O.S.('s)", vbInformation, "CONTROLE DE ORDEM DE SERVIÇO"
    Else
    MsgBox "NÃO HÁ O.S's PARA SER REAGENDADAS HOJE !!!", vbInformation, "CONTROLE DE ORDEM DE SERVIÇO"
    End If

    rs.MoveFirst
    For n = 1 To count
    strTitle = "CONTROLE DE ORDEM DE SERVIÇO"
    strMsg = UCase("Você tem o compromisso de reagendar outra(s) O.S.('s) neste(s) dia(s). Total contabilizado: " & count & " !!!" & _
    vbCrLf & vbCrLf & "OS de N.o " & n & vbCrLf & vbCrLf & "OS:" & rs.Fields("ORDEMDESERVICO") & vbCrLf & "DATA REAGENDADA: " & rs.Fields("DATAAGENDA"))
    intRetVal = MsgBox(strMsg, vbInformation + vbOKCancel, strTitle)
    Select Case intRetVal
    Case vbOK
    Case vbCancel
    Exit Sub
    End Select
    rs.MoveNext
    Next n

    ...........

    End Sub

      Data/hora atual: 18/11/2018, 06:35