Category Archives: Módulos

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

Exemplo de gestão de prestações

Este exemplo mostra como fazer um sistema de gestão de prestações de pagamentos.

O que este exemplo mostra e faz é criar automaticamente, com um clique num só botão, as prestações de um contrato de venda mediante os dados inseridos. Ou seja, introduzimos o nome do cliente a data de inicio do contrato e o valor total a pagar. Depois basta clicar no botão “calcular prestações” que ele gera automaticamente o número de prestações indicadas e divide o valor por cada uma delas e calcula a data de cada prestação( uma por cada mês). Este também é um exemplo que demonstra como acrescentar vários registos de uma só vez, porque ao clicar no botão ele acrescenta um registo para cada uma das prestações.

Download: Inserir Vários Registos

Fichas para um abrigo de animais

Este é um exemplo a pedido da leitora Sónia Campos que pretende uma base de dados para registar dados de animais. É uma base de dados simples com apenas um formulário para entrada de dados com fotografia do animal.

Download:  Abrigo Animais

Qualquer modificação é só comentar aqui.

Introduzir um registo através de campos independentes

Existem várias formas de introduzir um registo, sendo que a mais comum é fazer através de um formulário vinculado a uma tabela. Outra forma de o fazer é através de campos desvinculados, ou seja através de um formulário com campos independentes sem ligação à tabela. Para
introduzir os dados vamos utilizar o ‘recordset’, ou seja através de um código, que no caso deste exemplo é o seguinte:

Dim db As Database
Dim rs As Recordset

If MsgBox(”Deseja gravar?”, vbYesNoCancel, “Opções”) = vbYes Then
‘ Ao carregar no botão é perguntado se deseja gravar o registo ou não, no caso afirmativo continua o código senão termina
Set db = CurrentDb()
Set rs = db.OpenRecordset(”Dados”, dbOpenTable)
‘ Abre a tabela dados para inserir o registo

rs.AddNew
rs(”nome”) = Me!INome
rs(”morada”) = Me!Imorada
rs(”idade”) = Me!Iidade
rs.Update ‘ envia os dados para a tabela
rs.Close ‘ Limpa os dados e fecha o recordset
Set rs = Nothing
Set db = Nothing

Me.INome = Null ‘ limpa os campos no formulário
Me.Imorada = Null
Me.Iidade = Null
MsgBox “Registo gravado”, vbInformation, “Concluído” ‘ Exibe mensagem de confirmação
Me.INome.SetFocus ‘ Move o cursor para o primeiro campo
Else: Exit Sub
End If

Download: Introduzir Independente

Calculos com horas

Este exemplo mostra como efectuar cálculos com horas. É útil para quem precisa de saber quanto tempo decorreu entre uma hora de inicio e uma hora de fim. Não basta fazer a subtracção da hora de fim pela hora de inicio, porque caso a hora de fim passe de um dia para o seguinte as contas já não darão certas, por exemplo:

Hora Inicio: 23:00:00

Hora Fim: 02:00:00

Hora Fim – Hora Inicio = 02:00:00 – 23:00:00 = -21:00:00

Obviamente que não é assim tão simples trabalhar com horas, porque assim em vez de termos 3 horas como resultado correcto teríamos -21 horas erradamente.

Para contornar esta situação em que o período passa de um dia para outro temos que verificar primeiro se a hora de fim é superior à hora de inicio, caso seja maior então o cálculo é: Hora Fim – Hora Inicio.

Caso seja menor então temos que fazer o cálculo de outra forma, ou seja:

Hora Inicio: 23:00:00

Hora Fim: 02:00:00

Total de Horas: 23:59:59

Acerto: 00:00:01

Basicamente o que vamos fazer é somar 24:00:00 ao valor da subtracção para nos dar as três horas correctas. Ou seja:

Hora Fim – Hora Inicio + Total de Horas + Acerto = 02:00:00 – 23:00:00 + 23:59:59 + 00:00:01 = -21:00:00 + 24:00:00 = 03:00:00

Download: Calculo com Horas

Calendário PopUp

Este exemplo mostra como escolher uma data através de um calendário PopUp. Ou seja, através de um módulo e de um formulário podemos escolher uma data como se trata-se de um calendário. No exemplo podemos escolher a data clicando no botão ao lado do campo data ou clicando com o botão do lado direito do rato no campo data. Esta forma de introduzir datas é bastante prática uma vez que nos permite ver um calendário e assim escolher melhor a data que pretendemos.

Download: Calendário PopUp

Desactivar a roda do rato (botão central)

Normalmente quando rodamos o botão central de um rato num formulário, o access muda de registo. Em algumas situações pode ser bastante útil que isso não aconteça.
Este exemplo utiliza um modulo, no evento ao carregar do formulário, para impedir que o utilizador navegue pelos registos utilizado o scroll do rato. Para testar podemos utilizar a roda do rato (botão central) para ver que não muda de registo.

Download aqui: Roda do rato

Manipular a janela do Access

Este exemplo utiliza um módulo que esconde a janela principal do Microsoft Access, ficando apenas a janela do formulário visível.
Para utilizar este módulo temos que utilizar o seguinte comando no evento ao abrir do formulário: call fsetAccessWindow (SW_HIDE).

Para verificar através de um exemplo faça o downloa: Manipular Janela do Acces