raijeweb 30/3/2020, 22:42
oi Celso tanto voce como o amigo Alexandre ajudou muito eu entender o porque que não estava dando certo, pois estava querendo colocar um número longo de ais em um campo que não aceitava
1. uma coisa eu entendi a chave que eu estava querendo gerar com mais de 8 dígitos não da pra campo número
2. o Alexandre postou acima o link esclarecendo o porque em uma página de ajuda microsoft , só que a a juda da microsof é muito complicada,
a minha pergunta é eu mudei o campo chave da tabela tblregistro tipo texto do exemplo (mensagem17), isso vai influenciar na segurança do código para proteção do meu projeto.
aí ocódigo ficou assim:
Public Function fncGerarChave()
Dim blnUsuario As Boolean
Dim blnMaquina As Boolean
Dim varChave As Variant
'------------------------------------------------
'verifica se houve troca de usuário ou de máquina
'-------------------------------------------------
blnUsuario = Nz(DLookup("Usuario", "tblRegistro")) = Environ("UserName")
blnMaquina = Nz(DLookup("Maquina", "tblRegistro")) = Environ("ComputerName")
Randomize
'---------------------------------
'gera nova chave de comprimento 18 mas só gera os 18 dígitos se mudar o campo da tabela para tipo texto
'---------------------------------
varChave = Int(Rnd * 999999999999999999#)
If Len(varChave) < 18 Then varChave = varChave & String(18 - Len(varChave), "0")
'---------------------------------------------------------------------
'grava chave, nome do usuário e nome da máquina na tabela tblRegistro
'---------------------------------------------------------------------
If DCount("*", "tblRegistro") = 0 Then
'insere novo registro
CurrentDb.Execute "INSERT INTO tblRegistro (chave,usuario,maquina) VALUES ('" & varChave & "','" _
& Environ("UserName") & "','" & Environ("ComputerName") & "');"
ElseIf IsNull(DLookup("chave", "tblRegistro")) Or blnUsuario = False Or blnMaquina = False Then
'atualiza registro existente
CurrentDb.Execute "UPDATE tblRegistro SET chave = '" & varChave & "',usuario ='" _
& Environ("UserName") & "',maquina ='" & Environ("ComputerName") & "';"
End If
End Function
porque o campo tipo número não aceita 18 dígitos?