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

    [Resolvido]Cancelar adição de registro na tabela se a senha já tiver cadastrada

    Compartilhe

    DiogenesSousa
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 29/01/2018

    [Resolvido]Cancelar adição de registro na tabela se a senha já tiver cadastrada

    Mensagem  DiogenesSousa em 29/1/2018, 04:50

    Boa tarde, estou com uma dificuldade em um sistema no MS Access que gera senhas aleatórias. Gostaria que o sistema não salve a senha na tabela se já existisse uma senha igual. A ideia é se houver uma senha igual, o sistema cancele o salvamento e gere uma outra senha diferente. Obs.: supondo-se que minha tabela se chame "Tabela1" e o campo que quero verificar seja o "Campo1".

    Código do modulo abaixo:

    Option Compare Database

    Function GerarSenha()
    On Error GoTo TratarErro
    Dim TamanhoSenha As Integer, Codigo As String, Novo As String

    '--------------------------------------
    'CRIA SENHA ALEATÓRIA
    '--------------------------------------

    Codigo = ""
    TamanhoSenha = Nz(Form_SenhaAleatoria.TamanhoSenha, Cool

    Dim Letra(99)

    Letra(0) = "01 "
    Letra(1) = "02 "
    Letra(2) = "03 "
    Letra(3) = "04 "
    Letra(4) = "05 "
    Letra(5) = "06 "
    Letra(6) = "07 "
    Letra(7) = "08 "
    Letra(Cool = "09 "
    Letra(9) = "10 "
    Letra(10) = "11 "
    Letra(11) = "12 "
    Letra(12) = "13 "
    Letra(13) = "14 "
    Letra(14) = "15 "
    Letra(15) = "16 "
    Letra(16) = "17 "
    Letra(17) = "18 "
    Letra(18) = "19 "
    Letra(19) = "20 "
    Letra(20) = "21 "
    Letra(21) = "22 "
    Letra(22) = "23 "
    Letra(23) = "24 "
    Letra(24) = "25 "
    Letra(25) = "26 "
    Letra(26) = "27 "
    Letra(27) = "28 "
    Letra(28) = "29 "
    Letra(29) = "30 "
    Letra(30) = "31 "
    Letra(31) = "32 "
    Letra(32) = "33 "
    Letra(33) = "34 "
    Letra(34) = "35 "
    Letra(35) = "36 "
    Letra(36) = "37 "
    Letra(37) = "38 "
    Letra(38) = "39 "
    Letra(39) = "40 "
    Letra(40) = "41 "
    Letra(41) = "42 "
    Letra(42) = "43 "
    Letra(43) = "44 "
    Letra(44) = "45 "
    Letra(45) = "46 "
    Letra(46) = "47 "
    Letra(47) = "48 "
    Letra(48) = "49 "
    Letra(49) = "50 "
    Letra(50) = "51 "
    Letra(51) = "52 "
    Letra(52) = "53 "
    Letra(53) = "54 "
    Letra(54) = "55 "
    Letra(55) = "56 "
    Letra(56) = "57 "
    Letra(57) = "58 "
    Letra(58) = "59 "
    Letra(59) = "60 "
    Letra(60) = "61 "
    Letra(61) = "62 "
    Letra(62) = "63 "
    Letra(63) = "64 "
    Letra(64) = "65 "
    Letra(65) = "66 "
    Letra(66) = "67 "
    Letra(67) = "68 "
    Letra(68) = "69 "
    Letra(69) = "70 "
    Letra(70) = "71 "
    Letra(71) = "72 "
    Letra(72) = "73 "
    Letra(73) = "74 "
    Letra(74) = "75 "
    Letra(75) = "76 "
    Letra(76) = "77 "
    Letra(77) = "78 "
    Letra(78) = "79 "
    Letra(79) = "80 "
    Letra(80) = "81 "
    Letra(81) = "82 "
    Letra(82) = "83 "
    Letra(83) = "84 "
    Letra(84) = "85 "
    Letra(85) = "86 "
    Letra(86) = "87 "
    Letra(87) = "88 "
    Letra(88) = "89 "
    Letra(89) = "90 "
    Letra(90) = "91 "
    Letra(91) = "92 "
    Letra(92) = "93 "
    Letra(93) = "94 "
    Letra(94) = "95 "
    Letra(95) = "96 "
    Letra(96) = "97 "
    Letra(97) = "98 "
    Letra(98) = "99 "
    Letra(99) = "100 "

    Randomize

    Do While Len(Codigo) < TamanhoSenha
       Novo = Letra(Int(99 * Rnd))

       If InStr(1, Codigo, Novo) = 0 Then
           Codigo = Codigo & Novo
       End If

    Loop

    GerarSenha = Codigo

    SairFunction:
    Exit Function

    TratarErro:
    MsgBox "Ocorreu um erro ao processar o comando:" & Chr(13) & Err.Description, vbCritical, " Erro " & Err.Number
    Resume SairFunction

    End Function

    Desde já agradeço a ajuda
    avatar
    formiga10x
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 779
    Registrado : 11/09/2013

    Re: [Resolvido]Cancelar adição de registro na tabela se a senha já tiver cadastrada

    Mensagem  formiga10x em 29/1/2018, 14:57

    Coloque no final uma verificação da tabela tipo

    Código:
    If DLookUp("campo_senha","tabela_senha","campo_senha ='" & variável_senha_gerada & "'") then goto 1

    Caso a senha gerada já se encontre gravada na tabela ele retorna ao inicio do código e faz todo o procedimento novamente.


    Última edição por formiga10x em 31/1/2018, 03:41, editado 2 vez(es)


    .................................................................................
    Abraço
    Formiga10x

    Sempre que possível poste o bd ou parte dele, com uma explicação bem clara e objetiva do que quer.
    “Um homem não está acabado quando enfrenta a derrota. Ele está acabado quando desiste - Richard Nixon”
    Formiga10x

    "Lembro do exato momento em que me dei conta que boa parte de minha vida foi dedicada a localizar erros em meus próprios programas."
    - Maurice Vicent Wilkes

    DiogenesSousa
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 16
    Registrado : 29/01/2018

    Re: [Resolvido]Cancelar adição de registro na tabela se a senha já tiver cadastrada

    Mensagem  DiogenesSousa em 29/1/2018, 16:48

    Perdão, sou novo na área e não entendi como fazer. Se possível você pode me mostra como ficaria no código abaixo?


    Option Compare Database

    Function GerarSenha()
    On Error GoTo TratarErro
    Dim TamanhoSenha As Integer, Codigo As String, Novo As String

    '--------------------------------------
    'CRIA SENHA ALEATÓRIA
    '--------------------------------------

    Codigo = ""
    TamanhoSenha = Nz(Form_SenhaAleatoria.TamanhoSenha, Cool

    Dim Letra(99)

    Letra(0) = "01 "
    Letra(1) = "02 "
    Letra(2) = "03 "
    Letra(3) = "04 "
    Letra(4) = "05 "
    Letra(5) = "06 "
    Letra(6) = "07 "
    Letra(7) = "08 "
    Letra(Cool = "09 "
    Letra(9) = "10 "
    Letra(10) = "11 "
    Letra(11) = "12 "
    Letra(12) = "13 "
    Letra(13) = "14 "
    Letra(14) = "15 "
    Letra(15) = "16 "
    Letra(16) = "17 "
    Letra(17) = "18 "
    Letra(18) = "19 "
    Letra(19) = "20 "
    Letra(20) = "21 "
    Letra(21) = "22 "
    Letra(22) = "23 "
    Letra(23) = "24 "
    Letra(24) = "25 "
    Letra(25) = "26 "
    Letra(26) = "27 "
    Letra(27) = "28 "
    Letra(28) = "29 "
    Letra(29) = "30 "
    Letra(30) = "31 "
    Letra(31) = "32 "
    Letra(32) = "33 "
    Letra(33) = "34 "
    Letra(34) = "35 "
    Letra(35) = "36 "
    Letra(36) = "37 "
    Letra(37) = "38 "
    Letra(38) = "39 "
    Letra(39) = "40 "
    Letra(40) = "41 "
    Letra(41) = "42 "
    Letra(42) = "43 "
    Letra(43) = "44 "
    Letra(44) = "45 "
    Letra(45) = "46 "
    Letra(46) = "47 "
    Letra(47) = "48 "
    Letra(48) = "49 "
    Letra(49) = "50 "


    Randomize

    Do While Len(Codigo) < TamanhoSenha
    Novo = Letra(Int(49 * Rnd))

    If InStr(1, Codigo, Novo) = 0 Then
    Codigo = Codigo & Novo
    End If

    Loop

    GerarSenha = Codigo

    SairFunction:
    Exit Function

    TratarErro:
    MsgBox "Ocorreu um erro ao processar o comando:" & Chr(13) & Err.Description, vbCritical, " Erro " & Err.Number
    Resume SairFunction

    End Function
    avatar
    formiga10x
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 779
    Registrado : 11/09/2013

    Re: [Resolvido]Cancelar adição de registro na tabela se a senha já tiver cadastrada

    Mensagem  formiga10x em 30/1/2018, 06:33

    Tente desta forma abaixo "Lembrando que deve substituir os nomes dos campos pelo da tua tabela.
    Caso não consiga, se puder disponibilizar a(s) tabela(s) em questão será mais fácil ajudá-lo.


    Option Compare Database

    Function GerarSenha()
    On Error GoTo TratarErro
    Dim TamanhoSenha As Integer, Codigo As String, Novo As String

    '--------------------------------------
    'CRIA SENHA ALEATÓRIA
    '--------------------------------------
    1:
    Codigo = ""
    TamanhoSenha = Nz(Form_SenhaAleatoria.TamanhoSenha, Cool

    Dim Letra(99)

    Letra(0) = "01 "
    Letra(1) = "02 "
    Letra(2) = "03 "
    Letra(3) = "04 "
    Letra(4) = "05 "
    Letra(5) = "06 "
    Letra(6) = "07 "
    Letra(7) = "08 "
    Letra(Cool = "09 "
    Letra(9) = "10 "
    Letra(10) = "11 "
    Letra(11) = "12 "
    Letra(12) = "13 "
    Letra(13) = "14 "
    Letra(14) = "15 "
    Letra(15) = "16 "
    Letra(16) = "17 "
    Letra(17) = "18 "
    Letra(18) = "19 "
    Letra(19) = "20 "
    Letra(20) = "21 "
    Letra(21) = "22 "
    Letra(22) = "23 "
    Letra(23) = "24 "
    Letra(24) = "25 "
    Letra(25) = "26 "
    Letra(26) = "27 "
    Letra(27) = "28 "
    Letra(28) = "29 "
    Letra(29) = "30 "
    Letra(30) = "31 "
    Letra(31) = "32 "
    Letra(32) = "33 "
    Letra(33) = "34 "
    Letra(34) = "35 "
    Letra(35) = "36 "
    Letra(36) = "37 "
    Letra(37) = "38 "
    Letra(38) = "39 "
    Letra(39) = "40 "
    Letra(40) = "41 "
    Letra(41) = "42 "
    Letra(42) = "43 "
    Letra(43) = "44 "
    Letra(44) = "45 "
    Letra(45) = "46 "
    Letra(46) = "47 "
    Letra(47) = "48 "
    Letra(48) = "49 "
    Letra(49) = "50 "


    Randomize

    Do While Len(Codigo) < TamanhoSenha
    Novo = Letra(Int(49 * Rnd))

    If InStr(1, Codigo, Novo) = 0 Then
    Codigo = Codigo & Novo
    End If

    Loop

    If DlookUp("campo_senha","tabela_senha","campo_senha ='" & variável_senha_gerada & "'") then goto 1

    GerarSenha = Codigo

    SairFunction:
    Exit Function

    TratarErro:
    MsgBox "Ocorreu um erro ao processar o comando:" & Chr(13) & Err.Description, vbCritical, " Erro " & Err.Number
    Resume SairFunction

    End Function


    .................................................................................
    Abraço
    Formiga10x

    Sempre que possível poste o bd ou parte dele, com uma explicação bem clara e objetiva do que quer.
    “Um homem não está acabado quando enfrenta a derrota. Ele está acabado quando desiste - Richard Nixon”
    Formiga10x

    "Lembro do exato momento em que me dei conta que boa parte de minha vida foi dedicada a localizar erros em meus próprios programas."
    - Maurice Vicent Wilkes

      Data/hora atual: 18/10/2018, 13:19