Arquivo da categoria ‘Exemplos’

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

Sábado, Maio 2nd, 2009 |

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?

Quinta-feira, Dezembro 11th, 2008 |

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

Sábado, Setembro 20th, 2008 |

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

Quinta-feira, Junho 19th, 2008 |

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

Resposta a dúvida: Formatar data

Quinta-feira, Junho 12th, 2008 |

O leitor Jacinto pôs uma questão aqui sobre como proceder para alterar o formato de uma data de 2008-06-12 para 2 0 0 8 0 6 1 2, a resposta tal como expliquei nos comentários é simples, basta uma caixa de texto com a seguinte expressão:

=formatar([o nome do campo data];”yyyy mm dd”)

e nas propriedades do campo pôr a seguinte expressão na máscara de introdução: 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0\ 0

Bastante simples e fácil. Segue o exemplo para download: Formatar data

Exemplo de gestão de prestações

Terça-feira, Maio 6th, 2008 |

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

Mudar cor de fundo de um campo de texto que tem o foco

Domingo, Abril 6th, 2008 |

Para quem quer dar um efeito diferente nos formulários, mais propriamente quando estamos a introduzir dados , podemos alterar a cor do campo onde se encontra o cursor. Ou seja , todos os campos de introdução de dados estão com o fundo a branco excepto o campo onde estamos a escrever que está de outra cor.

Para fazer isto é muito fácil, basta seleccionar os campos e escolher a cor de fundo que queremos que apareça quando está o cursor no campo e de seguida alterar a cor para transparente.

Download: Mudar cor campo de dados

Ponto

Terça-feira, Março 18th, 2008 |

A pedido do leitor João Cabrita desenvolvi este exemplo de controle de ponto que se aplica a um quartel de bombeiros, mais especificamente às necessidades do leitor.

É um exemplo básico, mas com alguns pormenores mais avançados em que o que se pretende com ele é fazer o controle das entradas e saídas dos funcionários, verificar se trabalharam um turno de 12 horas e somar as horas trabalhadas a mais e as horas trabalhadas a menos.

Tudo isto para obter um relatório mensal de assiduidade de cada funcionário.

Download: Ponto

Introduzir um registo através de campos independentes

Quarta-feira, Fevereiro 20th, 2008 |

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

Terça-feira, Fevereiro 19th, 2008 |

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

Apresentacao

Avatar

Obrigado pela sua visita.
Subscreva o feed para não perder nenhuma mensagem.

Aqui no blogue vou disponibilizar exemplos de como trabalhar com o Microsoft Access e também tirar dúvidas a quem solicitar. Mais

Quer subscrever?

 Subscrever ou, subscrever por email:
Introduza o seu email:


Anúncios