Pular para o conteúdo principal

ACCESS & VBA : número aleatório


Nem sempre um campo de numeração automática do Access satisfaz as necessidades de um sistema, pincipalmente quando a complexidade cresce. Muitas vezes, por uma série de razões, necessitamos que determinado campo armazene um número aleatório para servir de chave primária, quer seja para relacionar duas tabelas ou servir de índice para vincular imagens.

Uma maneira fácil e prática é utilizar o relógio interno do sistema operacional para gerar um número aleatório, separando as informações do número da semana do ano, hora, mes, segundo e o ano.
Pois bem, partindo da premissa de que este campo será o primeiro a ser preenchido, nas propriedades do mesmo, no evento "ao receber foco", dentro do editor de VBA:
Private Sub NomeDoCampo_GotFocus()
'declarar as variáveis não precisando especificar o tipo:
Dim semana, hora, mes, segundo, ano
'depois formatar as variáveis criadas
semana = format(Now(), "ww")
'onde Now() é a função que captura os dados do relógio e ww diz que é para ser utilizado apenas o número da semana do ano com dois dígitos.
hora = format(Now(), "hh") 'hh é a hora
mes = format(Now(), "mm") 'mm é o mês
segundo = format(Now(), "ss") 'ss corresponde ao segundos
ano = format(Now(), "yy") 'yy ao ano
'agora é só especificar como os números ficarão dispostos:
me.NomeDoCampo.value = semana & mes & hora & segundo & ano
end sub
Desta maneira se obtém um número aleatório onde é possível, inclusive, autenticcar pela identificação de suas partes, pois se determinado cadastro é realizado somente pela manhã então se os dígitos correspondentes a hora forem posteriores às 13 h algo houve que merece ser verificado.
Bem, por hora é isso e até a próxima.

Comentários

Postagens mais visitadas deste blog

ARTIGO: VINCULAR FOTOS NO MS ACCESS

por Luís Fernando da Silva Bittencourt

Estes dias estava em um fórum na web e notei a grande dificuldade dos usuários mais inexperientes quanto à vinculação de imagens no MS ACCESS. O recurso de vinculação de imagens serve para não sobrecarregar a base de dados com objetos OLE, pois neste aplicativo as imagens podem ser inseridas diretamente na base de dados, aceitando imagens no formato bmp. Entretanto, “o peso” gerado, dependendo da função da base de dados criada com o Access, logo esgotará a possibilidade de novos cadastros, haja vista existir uma limitação de 4Gb de registros.

Então, ao invés de se inserir uma foto no formato bmp diretamente na base de dados, fica muito mais lógico guardar apenas o caminho desta imagem, fazendo com que o nosso sistema busque a imagem respectiva e a apresente em um formulário de consulta ou relatório.

Para tanto, devemos inicialmente criar na respectiva tabela (objeto do MS Access responsável pela guarda das informações, sendo esta a base de dados pro…

Destaque: Relação das Portas TCP/IP Mais Usadas!

por Luís Fernando da Silva Bittencourt

Uma das primeiras providências a se fazer quando existe a suspeita de algum tipo de invasão em um microcomputador é a verificação imediata das portas TCP/IP que estão em execução. Normalmente para isso é usado o comando NETSTAT (pretendo postar uma matéria específica futuramente), ou outro método qualquer de preferência do usuário. Entretanto, usuários menos experientes não sabem o tipo de serviço executados pelas portas em questão, para tanto relacionei as principais visado facilitar o entendimento destas, conforme segue: Observação: Para localizar um item específico use "Ctrl + F".
Porta Serviço 1 tcpmux
3
4
5 rje
7 echo
9 discard
11 systat
13 daytime
15 netstat
17 qotd
18 send/rwp
19 chargen
20 ftp-data
21 ftp
22 ssh, pcAnywhere
23 Telnet
25 SMTP
27 ETRN
29 msg-icp
31 msg-auth
33 dsp
37 time
38 RAP
39 rlp
40
41
42 nameserv, WINS
43 whois, nickname
49 TACACS, Login Host Protocol
50 RMCP, re-mail-ck
53 DNS
57 MTP
59 NFILE
63 whois++
66 sql*net
67 bootps
68 bootpd/dhcp
69 Tri…

ACCESS- CONTADOR DE REGISTROS

Olá meus amigos. Desta vez gostaria de postar uma idéia para um contador simples que pode servir como numeração de protocolo para registro de entrada de documentos. Bem, para começarmos, devemos criar uma consulta que vou chamar de "cns_contagem", onde colocaremos os campos base para o nosso contador. Estes campos são os de preenchimento obrigatório como Id, nome, registro etc.
No formulário, deve ser criado um campo chamado "protocolo" e nas propriedades deste campo, no evento "Ao receber foco", deve ser colocado o seguinte:

Dim N 'declaração da variável que vai receber o valor armazenado.
Dim contar 'declaração da variável q vai fazer a contagem.
contar = DCount("Id", "cns_contagem")
N = contar + 1 'Acrescenta 1 a contagem feita.

MyDate = Now()
MyYear = Year(MyDate) 'MyYear recebe o valor correspondente ao ano atual.

'bem, agora é só montar o valor que irá aparecer no campo protocolo
Me.protocolo.…