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

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 FunctionDesde já agradeço a ajuda!
- Editado DiogenesSousa domingo, 28 de janeiro de 2018 16:35
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
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
- Editado AndersonFDiniz2 domingo, 28 de janeiro de 2018 23:11
-
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 -
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.
- Editado AndersonFDiniz2 domingo, 28 de janeiro de 2018 23:20
-
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
- Editado AndersonFDiniz2 domingo, 28 de janeiro de 2018 23:10
-
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 FunctionAgradeço novamente a ajuda
-
Fórum Access VBA:
A melhor forma de agradecer e votar como util e / ou marcar como resposta. Anderson Diniz diniabr2011@gmail.com