Escrever tudo em maiúsculas ou minúsculas

Para que um utilizador quando estiver a introduzir dados escreva sempre em maiúsculas basta colocar o seguinte código nas propriedades do campo, no evento ‘ao premir a tecla’ (OnKeyPress ):

KeyAscii = Asc(UCase(Chr(KeyAscii)))

onde keyascii vai receber o novo código ASCII

chr = exibe o carácter do código ASCII

Função ‘Asc’: Devolve um número inteiro que representa o código (ASCII) de carácter correspondente à primeira letra numa cadeia.

Função Ucase: converte uma cadeia de caracteres para maiúsculas.

Função Chr: mostra o carácter do código ASCII

Para converter para minúscula basta alterar Ucase por Lcase:

KeyAscii = Asc(LCase(Chr(KeyAscii)))

Mensagens no blogue

tenho notado que alguns leitores enviam a mesma mensagem várias vezes, pois pensam que a primeira não foi submetida com sucesso.
Se é a primeira vez que está a comentar, essa mensagem tem que ser aprovada, o que também o aprova como apto para comentar.
Trata-se de uma protecção contra o SPAM, para não aparecerem mensagens que não tenham a ver com o blogue.
Assim sendo após o envio da primeira mensagem, só tem que aguardar que seja aprovada e partir daí as próxima mensagens já aparecem automaticamente.

Ainda hoje apaguei 252 mensagens de spam…

Downloads – Local de armazenamento

Conforme tinha dito na mensagem anterior, alterei o local onde se encontram os ficheiros para download.
A partir de agora estão alojados no serviço da BOX.NET, onde pelo menos já não se tem que esperar pelo download nem tem publicidade.

Ainda faltam actualizar alguns links, que durante a próxima semana estarão concluídos. Coloquei também um link no menu do blogue “DOWNLOADS” que faz a ligação para a pasta no BOX.NET onde estão todos os ficheiros disponíveis para download.

Qualquer dúvida ou ficheiro que se encontre trocado, agradeço que me informem.

Actualização do sistema de vendas

Após algum tempo sem actualizar o Blogue, finalmente consegui algum tempo para actualizar o sistema de vendas. Muitos leitores não conseguiam entrar devido ao sistema de login que pedia password. Assim sendo, removi o sistema de login para facilitar o acesso.
Além desta alteração fiz as seguintes alterações:

V 0.5.0 (2010-08-19)
– Removi o login e utilizadores.
– Acrescentei campos (família, iva e unidade) na tabela produtos.
– Criei a tabela de IVA.
– Alteração do formulário Produtos. (novos campos, aspecto, nova forma de localizar registos).
– Criei a tabela família (de produtos).
– alterei o formulário de compras: só se inseria um produto de cada vez. Coloquei no formulário de compras um subformulário onde se pode inserir vários produtos comprados num determinado fornecedor.

Download: Vendas 2010

Agradeço comentários para numa nova actualização corrigir ou acrescentar funcionalidades.

De futuro estou a pensar em mudar o local de onde se fazem os downloads dos arquivos, uma vez que se não houver actividade num arquivo durante algum tempo, o arquivo é removido. Assim sendo vou procurar uma alternativa ao easy-share para que isso não aconteça.

No próximo post irei colocar uma versão de como calcular prestações similar ao que aqui já tem neste post, mas que em vez de ter apenas prestações mensais podemos escolher o números de dias que decorrem entre cada prestação. Esse exemplo servirá também para responder a uma questão de um leitor (Marcelo).

Barra de menus personalizada

Hoje vou demonstrar como se cria uma barra de menus, passo a passo, para dar um aspecto mais profissional e apenas dar acesso às opções que realmente interessam para o utilizador final de um projecto em Access.
No final iremos ter uma barra de menus com um aspecto igual à imagem abaixo.

Barra de menus

1- Ir ao menu ‘Ferramentas’ e escolher ‘personalizar’. Aparece o seguinte menu:

personalizar

2- Escolher o separador ‘Barras de Ferramentas’ e escolher ‘nova’ e digitar o nome que queremos dar à barra de ferramentas, eu escolhi “menu”. Clicar em OK e aparece a barra de ferramentas sobre a qual vamos trabalhar, que para já ainda não tem opções.

3- Com a barra de ferramentas seleccionada clicar em ‘propriedades’ e aparece o seguinte menu:

propriedades

4- Alterar o ‘Tipo’ para ‘Barra de Ferramentas’ e depois clicar em fechar.

5- Clicar no separador ‘comandos’ e na listagem do lado esquerdo que diz ‘categorias’ escolher ‘novo menu’ que deve estar na última posição. Depois Clicar na caixa do lado direito ‘comandos’ e arrastar ‘novo menu’ para cima da nossa barra de menus como exemplifica a imagem abaixo.

menu

Arrastar ‘novo menu’ para cima da nossa barra de menus, as vezes necessárias mediante o número de menus que precisarmos, neste exemplo vou arrastar 3 vezes, para fazer dois menus e um submenu. Para fazer um submenu basta arrastar ‘novo menu’ para dentro de um menu. Nota: O número de menus pode ser alterado posteriormente, pode-se acrescentar ou diminuir mediante o que precisar.

6- Clicar com o botão do lado direito do rato em cima de ‘novo menu’ da nossa barra de ferramentas e alterar o nome conforme pretendido. No exemplo eu escolhi ‘Clientes’ para o 1º e ‘Fornecedores’ para o 2º.

7- Agora vamos colocar nos menus os formulários que pretendemos abrir. Clicar no separador ‘comandos’ e escolher a categoria ‘Todos os formulários’ e no lado direito irá aparecer todos os formulário existentes no projecto actual. Clicar no formulário que queremos e arrastar para a nossa barra de ferramentas. No exemplo eu escolhi vários formulários e relatórios e também a opção SAIR (para fechar o Access). Nesta etapa podemos escolher o que queremos que a nossa barra de ferramentas abra para isso basta escolher nas categorias o que pretendemos (tabelas, formulários, relatórios, consultas, acções dos menus do Access que aparece como barra de menus por defeito, etc.)

8- Depois de escolhermos tudo aquilo que pretendemos ter na nossa barra de menus podemos clicar em cada um deles com o botão direito do rato ver as propriedades que podemos alterar. Veja a imagem abaixo.

alterar opcoes

‘repor’ – Serve para por um item como estava originalmente antes de alterar o nome a imagem, etc.
‘eliminar’ – apagar um item do menu
‘nome’ – para alterar o nome do item do menu. Aqui também podemos definir o atalho para esse item utilizando o símbolo & antes da letra que queremos usar como atalho. Por exemplo a opção Sair já vem por defeito assim Sai&r, no menu aparece a letra ‘r’ sublinhada o que nos indica que ao utilizar a tecla ALT + r é executado o item Sair do menu. No exemplo que escolhi &Clientes para a abrir Cliente com o atalho ALT + C.

‘copiar/colar/repor/editar/alterar imagem do botão’ – estes comando servem exactamente para trabalhar a imagem que queremos ver ao lado de cada item. Podemos copiar e colar a imagem para usar num outro item, repor a imagem original, editar a imagem e fazer com o editor um ícone (pixel a pixel) ou escolher uma imagem disponível no menu alterar.

Depois podemos escolher também o aspecto do item, ou seja se queremos só texto ou texto e imagem.

‘iniciar um grupo’ – serve para separar itens através de uma barra horizontal, ou seja criar grupos de itens.

‘atribuir hiperligação’ – para atribuir uma ligação quer para um URL ou para algum objecto na base de dados.

‘propriedades’ – mostra todas as propriedades do item.

9- Agora que já temos a barra de menus pronta temos que a pôr no lugar devido. Para isso clicamos no botão fechar e arrastamos o nosso menu para o canto superior do ecrã até que ele se cole ao local onde está a barra por defeito do Access.

10- Para a barra iniciar ao abrir a base de dados temos que dar a instrução para abrir quando iniciar o Access. Vamos a ‘Ferramentas’ e ‘Arranque’ e em ‘barra de menus’ escolhemos o nome do nosso menu, neste exemplo ‘menu’.

11- Para alterar as imagens de cada um dos itens do menu podemos utilizar outra forma que consiste em inserir uma imagem num formulário e copiar a mesma para o item. Ou seja:

– Criar um formulário na forma de estrutura

– ir ao menu inserir e escolher a opção imagem

– escolher uma imagem qualquer e clicar em inserir

– seleccionar a imagem e com o botão direito do rato escolher copiar

– ir no menu ferramentas e escolher a opção personalizar

– clicar com o botão do lado direito do rato no item que desejamos alterar a imagem e escolher colar imagem do botão.

– Clicar em fechar e fechar o Access

– Iniciar a base de dados para ver o resultado final

NOTA IMPORTANTE: Ao alterar a barra de menus, os menu do Access desaparecem na base de dados em que é feito. Para fazer alterações na mesma é necessário arrancar a base de dados pressionado a tecla SHIFT.

O meu menu ficou assim:

barra final

Download: Barra de Menus

Impedir um relatório de abrir se não houver dados para mostrar

Podemos impedir que um relatório abra se não houver dados para mostrar, e para isso podemos utilizar duas formas dependendo da versão do Access:

1- Todas as versões do ACCESS
Colocar o código abaixo nas propriedades do relatório, no evento ‘Ao ativar’

Utilize o evento Ao ativar (Activate) do Relatório:

Private Sub Report_Activate()

If DCount(“*”, Me.RecordSource) = 0 Then

MsgBox “Não existem registos para mostrar”, vbDefaultButton1, “Erro!”

DoCmd.Close acReport, “nome do relatório”

End If

End Sub

2- A partir da versão 7 (Access 95) foi incluido o evento ‘se nenhum dado’, então podemos urilizar o seguinte código:

Private Sub Report_NoData(Cancel As Integer)

MsgBox “Não existem dados no relatório.”, vbInformation, “Erro!!!”

Cancel = True

End Sub

Para ver em funcionamento faça o download do exemplo: Impedir relatório de abrir

Como evitar que um formulário abra se não houver registos para mostrar?

Por vezes torna-se necessário evitar que um formulário abra se não houver registos para mostrar, por exemplo quando fazemos uma consulta e não se encontra nenhum registo pretendido, não precisamos de estar a abrir o formulário uma vez que não temos dados para mostrar. Então o que temos que verificar é se existem registos a mostrar e caso não haja nenhum mostramos uma mensagem e impedimos o formulário de abrir. Como?

É fácil basta colocarmos o código abaixo nas propriedades do formulário no evento ‘ao abrir’:

If Form.RecordsetClone.RecordCount = 0 Then
MsgBox “Não encontrei registos.”, vbExclamation, “Erro!!!”
DoCmd.Close acForm, “localizar dados”
Exit Sub
End If

Para ver um exemplo faça o download: Impedir Formulário de Abrir

Como atribuir acções a teclas?

1- Criar um formulário na vista estrutura e no evento ‘Ao carregar’ nas propriedades do formulário introduzir o seguinte: me.keypreview=true
Ou seja isto vai fazer com que os eventos de teclado sejam recebidos primeiro no formulário.

2- Nas propriedades do formulário, no evento ‘com a tecla em baixo’ colocar o seguinte código:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyF2
DoCmd.OpenForm “formulario1”
Case vbKeyF3
DoCmd.OpenForm “formulario2”
Case vbKeyF4
DoCmd.OpenForm “formulario3”
Case vbKeyF5
Dim Calculadora As Double
Calculadora = Shell(“calc.exe”, vbNormalFocus)
Case vbKeyF6
DoCmd.Close
Case Else
End Select
End Sub

O que este código faz é o seguinte:
– Ao pressionar a tecla F2 abre o formulário1
– Ao pressionar a tecla F3 abre o formulário2
– Ao pressionar a tecla F4 abre o formulário3
– Ao pressionar a tecla F5 abre a calculadora do Windows
– Ao pressionar a tecla F6 fecha o formulário

Além das tecla de funções F1, F2…etc, também podemos utilizar qualquer outra tecla para executar funções, mas tendo em atenção que se estivermos num formulário para introduzir dados não convêm utilizar teclas que são usadas para escrever os dados nos campos.
Outra coisa é o facto de só funciona no formulário onde colocarem os códigos acima mencionados.

Download: Teclas
Exemplo teclas de atalho

Menu Personalizado

Este é um tipo de menu que nos permite economizar tempo, linhas de código e uma melhor arrumação em termos de formulários abertos, uma vez que com este menu apenas precisamos de um formulário aberto. Além de diminuir o número de formulários abertos também diminui o número de botões num menu para abrir cada formulario.
Este tipo de menu, certamente que já existe há algum tempo e já é utilizado por muitos utilizadores do Access.
Então em que consiste este menu?
Vamos criar o menu utilizando uma caixa de combinação que contenha todos os formulários que pretendemos abrir através dele. Ao selecionar uma das opções da caixa de combinação o respectivo formulário é exibido dentro de subformulário. Então vamos começar a fazer o menu passo a passo.

1- Vamos criar uma tabela onde vamos guardar o nome que queremos dar a cada um dos formulários e o nome do formulario que vamos abrir. No exemplo criei a tabela ‘tblmenu’ com os seguintes campos:
Campo        Tipo
Nomedomenu    texto -> Nome que vai ser visto no menu (caixa de combinação)
formulario    texto -> Nome do formulário que vai abrir

Depois introduzimos os dados que no exemplo são os seguintes:

NomedoMenu    Formulario

Contas        formulario1
Depósitos    formulario2
Movimentos    formulario3
Conta-Caixa    formulario4
Conta-Conta    formulario5
Extracto    formulario6

2- Depois vamos criar uma consulta da tabela anterior:
Escolhemos a tabela tblmenu e depois escolhemos os dois campos em que escolhemos a ordenação  ascendente para o nomedomenu para ser mais fácil de encontrar o menu que queremos quando tempos bastantes formulários para abrir. A esta consulta dei o nome de ‘CsMenu’.

3- Vamos criar o formulário ‘Menu’, ou seja escolhemos novo formulário em vista de estrutura. Depois vamos criar uma caixa de combinação e modificar as seguintes propriedades:
– Nº de colunas: 2
– LArgura das colunas: 1cm;0cm;
– origem da linha: csmenu ( que é o nome da consulta criada no ponto anterior )

4- No mesmo formulário vamos criar um subformulário desvinculado do formulário principal(No exemplo dei o nome de menuquadro). É neste formulário que vai ser aberto cada um dos formulários que escolher no menu (caixa de combinação).

5- Agora vamos criar o módulo que nos vai permitir abrir o menu que é selecionado na caixa de combinação no subformulário.
Criamos um módulo (ao qual eu chamei de ‘abrirmenu’) e colamos o seguinte código:

Public Function AtivarMenu(Combmenu As ComboBox, subabrir As SubForm)
Dim abrirform As String
abrirform = Combmenu.Column(1)
subabrir.SourceObject = abrirform
subabrir.LinkChildFields = “”
subabrir.LinkMasterFields = “”
End Function

Depois vamos às propriedades da caixa de combinação no formulário Menu e no evento Depois de Actualizar colocamos a função criada: =ativarmenu([Menu];[menuquadro]) em que ‘Menu’ é o nome da caixa de combinação e ‘menuquadro’ o nome do subformulário.

E finalmente o menu está pronto a utilizar. É só testar e usar. Espero que tenham gostado desta dica.
Download: Menu

Abaixo uma imagem do menu.

Menu Personalizado

Menu Personalizado

Medir o tempo que um operador gasta a inserir um registo

Esta era uma dúvida do leitor Elton Rueb e que ele mesmo conseguiu resolver antes de eu ajudar. O que o leitor pretendia era medir o tempo que um utilizador demora a inserir um registo e para isso tem 3 campos: 1 para a hora de inicio altura em que abre o formulário, 1 para a hora de fim que é inserida quando se clica no botão de gravar e 1 campo para calcular a diferença. Este é um exemplo simples mas que pode fazer falta a quem pretenda calcular diferença entre dois tempos. Por isso o Elton Rueb (Rio de Janeiro – RJ – Brasil) disponibilizou o exemplo para que pudesse ajudar mais alguém.

Download: Teste Hora