none
Cancelar adição de registro na tabela se a senha já tiver cadastrada. RRS feed

  • Pergunta

  • Boa tarde, estou com uma dificuldade em um sistema 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.: Estou usando MS Access.

    Código do módulo:

    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, 8)

    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(8) = "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!



    sábado, 27 de janeiro de 2018 21:14

Todas as Respostas

  • Sub PreencherTabela( )

    inicio:

    senha = GerarSenha

    Faça um laço de repetição para percorrer todas as senhas gravadas na tabela:

    http://www.maximoaccess.com/t8641-resolvidopercorrer-registros-de-um-tabela

    Dentro desse laço, coloque a condição:

    if senha = senhaTabela then

    goto inicio

    end if

    Fora do laço (depois do next), grave a senha na tabela

    registroTal = senha

    End Sub


    A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com







    domingo, 28 de janeiro de 2018 13:53
  • Bom dia! Perdão porque não entendi, sou iniciante na área da programação.

    Como assim dentro desse laço? onde colocar essa condição dentro do código abaixo?

    obs.: supondo-se que minha tabela se chame "Tabela1" e o campo que quero verificar seja o "Campo1"

    -----------------------------------------------------

    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, 8)

    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(8) = "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

    domingo, 28 de janeiro de 2018 16:45

  • Alguns links para estudo de laço de repetição:

    https://www.youtube.com/results?search_query=vba+la%C3%A7o+de+repeti%C3%A7%C3%A3o

    SQL:

    https://www.youtube.com/results?search_query=sql

    Access VBA:

    https://www.youtube.com/results?search_query=access+vba

    Percorrer registros de uma tabela:

    http://www.maximoaccess.com/t8641-resolvidopercorrer-registros-de-um-tabela

    Dica:

    Comece a programar pelo Excel. 

    Quando estiver fera no Excel passe para o Access.

    O Access é um pouco mais complexo, pois envolve SQL.




    domingo, 28 de janeiro de 2018 22:44
  • Esse laço de repetição deve ficar dentro de 

    Sub PreencherTabela( )


    A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com



    domingo, 28 de janeiro de 2018 23:00
  • Agradeço muito, mas tenho pressa em terminar esse sistema. Se possível você pode me mostrar como ficaria no código do modulo?

    Nome da tabela: Tabela1

    Nome do Campo da tabela: Campo1

    Nome do formulário: SenhaAleatoria

    Nome da caixa de texto do formulário: SenhaGerada

    Código do modulo:

    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, 8)

    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(8) = "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

    Agradeço novamente a ajuda

    segunda-feira, 29 de janeiro de 2018 07:10
  • Fórum Access VBA:

    http://www.maximoaccess.com/


    A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com

    segunda-feira, 29 de janeiro de 2018 12:16