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

    Usando a função CBool para validar login

    Dilson
    Dilson
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Usando a função CBool para validar login Empty Usando a função CBool para validar login

    Mensagem  Dilson 8/11/2011, 16: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
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    Usando a função CBool para validar login Empty Usando a função CBool para validar login

    Mensagem  good guy 15/8/2012, 11: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: 28/3/2024, 17:24