Páginas

Mostrando postagens com marcador Access. Mostrar todas as postagens
Mostrando postagens com marcador Access. Mostrar todas as postagens

segunda-feira, 14 de fevereiro de 2011

Como encontrar parcelas vencidas

Uma dica simples e útil. Sempre fui curioso para tentar fazer isto, descobri ao acaso. Deve haver outras mil possibilidades, mas complicar para quê? Este quebra o galho.

Aplicação: Encontrar todas as parcelas vencidas até a data atual (para isto a data da máquina, painel de controle deve estar correta).

no seu campo (vencimento da parcela) insira no critério o seguinte:
sinal de menor date(), ou sinal de maior date()
obs: não utilizei os sinais de maior ou menor para nao atrapalhar na publicação.

segunda-feira, 27 de dezembro de 2010

deletar informações sem deletar registros

Esta é uma dica boa.
Aplicação: Um botão de comando que no evento ao clicar ele deletará as informações de alguns campos que forem indicados e fechará o formulário. Eu incluo sempre em formulario onde efetuo estornos de pagamentos, recebimentos, etc, ele deleta as informações, confirmando e fechando.

(no evento ao clicar) do botão
Me.(nome do campo que deseja deletar informações, sem os parenteses) = Null
Me.(outro campo que deseja deletar) = Null
MsgBox "BLA BLA BLA BLA BLA, tipo estorno efetuado com sucesso", vbOKOnly, "NOME DO SEU PROGRAMA"
DoCmd.Close End Sub

segunda-feira, 13 de setembro de 2010

Consultar parte do nome


Executar uma consulta informando apenas parte do nome ou do campo. Para este tipo de consulta não há necessidade de informar todo o campo, basta apenas informar parte dele. Ex: Para consultar os clientes cadastrados que moram em Londres basta somente digitar “Lon”

No critério do campo desejado insira: Como "*" & [INFORME PARTE DO NOME] & "*"

segunda-feira, 16 de agosto de 2010

Consultas - somente parte do nome


Como informar apenas parte do nome em consultas.
Procedimento:
Abra a consulta e inclua na linha critério do campo desejado:
como "*" & [Informe o nome] & "*"

terça-feira, 3 de agosto de 2010

Ativação de campos bloqueados


Como ativar campos que estão desativados ao selecionar caixa s/n
Vamos imaginar a seguinte situação:
Um formulário para registrar o recebimento de uma prestação:
Campos:
Conf_rec (caxinha s/n - para confirmar o recebimento)
Data_rec (para informar a data do recebimento)
Valor_rec (para informar o valor recebido)

Quando abrir o formulário os campos data e valor estarão bloqueados. Somente serão ativados quando selecionar a caixinha confirmando o recebimento. Isto impede que valores e datas sejam informadas sem que haja recebimento.

Procedimento:
•Abra o formulário em sua estrutura;
•Acesse a propriedade do formulário;
•Na linha “no atual” (do evento) cole o código abaixo:
if conf_rec = 0 then
data_rec.enabled = false
valor_rec.enabled = false
else
data_rec.enabled = true
valor_rec.enabled = true
end if
•Agora acesse a propriedade da caixinha s/n;
•Na linha “após atualizar” (do evento) cole o código abaixo:
if conf_rec = -1 then
data_rec.enabled = true
valor_rec.enabled = true
else
data_rec.enabled = false
valor_rec.enabled = false
end if

sexta-feira, 30 de julho de 2010

Não permitir que campos sejam maiores que outros


Como não permitir que um campo seja maior que o outro. Ex: número de alunos freqüentes maior que o número de alunos matriculados. Neste caso tenho dois campos (alu_mat e alu_freq).

Acesse a propriedade do campo (alu_freq) e localize a linha após atualizar na aba evento e cole o código abaixo:

if me.ctlalu_freq > me.ctlalu_freq then
msgbox "Atenção! O número de de alunos frequentes não pode ser superior ao número de matriculados. Verifique!!", vbokonly
me.ctlalu_freq.value = ""
me.ctlalu_freq.setfocus
end if
end sub

Dica: Caso seu formulário seja para informar o número de alunos freqüentes durante o mês, dia a dia, basta fazer da seguinte forma:

Crie 31 campos, para cada dia do mês (ex: alu_freq1; alu_freq2; alu_freq3.........alu_freq31) e mais 31 para os matriculados (alu_mat1; alu_mat2; alu_mat3...... alu_mat31).

Agora cole o codigo acima nos 31 campos dos alunos frequentes.

quarta-feira, 21 de julho de 2010

Como mudar a mensagem de alerta ao excluirmos um registro:


Obs: Este código exclui o registro e fecha o formulário:
Procedimento:
Acesse a propriedade do botão e na ação ao clicar da aba avento cole o código:
if msgbox("Deseja realmente excluir este registro?", vbquestion + vbyesno, "confirmação de exclusão") = vbno then exit sub
docmd.domenuitem acformbar, aceditmenu, 8, , acmenuver70
docmd.domenuitem acformbar, aceditmenu, 6, , acmenuver70
docmd.close
exit sub
msgbox err.description
end sub

Obs: Este código exclui, mas não fecha o formulário:
Procedimento: idem como o anterior
if msgbox("Deseja realmente excluir este registro?", vbquestion + vbyesno, "confirmação de exclusão") = vbno then exit sub

quarta-feira, 14 de julho de 2010

Como mudar a mensagem de campos obrigatórios


Procedimento:
O campo deve estar configurado como obrigatório em sua tabela.
Na propriedade do campo localize na aba “evento” a linha “ao sair” e cole o código abaixo:
if me.informe o nome do teu campo.value = "" or isnull(informe o nome do teu campo) then
msgbox "informe a mensagem de alerta. Ex: é obrigatório informar este campo!", vbinformation, "atenção!!!"
end if

terça-feira, 13 de julho de 2010

Como mudar a mensagem original do access para valores duplicados.


Procedimentos:
•O campo deve ser chave primária;
•Na propriedade do campo localize a aba “evento” e a ação “após atualizar“;
•Cole o código abaixo
if dcount("informe o nome do campo", "informe o nome da tua tabela", "[informe o nome do campo]=forms![informe o nome do formulário]![informe o nome do campo]") > 0 then
msgbox "Atenção! o “informe o nome do campo” não pode ser duplicado", vbinformation, "verifique"
me.undo
end if

quarta-feira, 7 de julho de 2010

Bloquear uma opção quando a outra for informada (cx s/n)


Vamos imaginar que no seu banco tenha a opção para informar o sexo, masculino e feminino. A intenção é que quando informar feminino o sistema bloqueie automaticamente o masculino e vice versa. Neste caso vamos nomear as caixinhas sim e não como: masculino e feminino.

1) Procedimentos para bloquear o feminino quando o masculino for informado:

•clique na caixinha masculino e acesse a propriedade (F4);
•na aba evento clique na linha “após atualizar”
•insira o código abaixo:
if me.masculino = true then
me.feminino = false
else
me.feminino = true
end if
end sub

2) Procedimentos para bloquear o masculino quando o feminino for informado:

•clique na caixinha feminino e acesse a propriedade (F4);
•na aba evento clique na linha “após atualizar”
•insira o código abaixo:
if me.feminino = true then
me.masculino = false
else
me.masculino = true
end if
end sub

sexta-feira, 2 de julho de 2010

Desativação de campos após assinalar caixinhas sim/não


Vamos imaginar a seguinte situação:
Um formulário para cadastro do pedido da vaga solicitado pela criança (integral ou parcial), que possui vários campos, mas quando for período parcial não terá necessidade de se informar o telefone, renda e horário (neste meu exemplo).

Ex: O formulário possui todos os campos para o cadastro (nome,endereço, nascimento, nome dos pais, telefone, renda, horário e etc) e temos a caixinha sim/não nomeada como (período_parcial). Neste primeiro exemplo vamos assinalar o parcial e desativar os campos telefone, renda e horario.

Procedimento: na caixinha sim/não (parcial) clique na propriedade e localize a aba “evento”. Na linha “após atualizar” insira o código:

if me.parcial = true then
telefone.enabled=false
renda.enabled=false
horario.enabled=false
else
telefone.enabled=true
renda.enabled=true
horario.enabled=true
end if
end sub

quinta-feira, 1 de julho de 2010

Relógio digital no banco de dados


Como criar um relógio (que funcione durante a navegação em seu programa):
Procedimentos:
a)abra o formulário no modo estrutura;
b)adicione um rótulo (não caixa de texto);
c)clique duas vezes no rótulo (ou F4) para acessar as propriedades;
d)clique na aba “outras” e na propriedade “nome” digite relogio (sem acento);
e)acesse as propriedade do formulário;
f)na aba “evento” na propriedade “intervalo do cronômetro” digite 1000, que equivale a 1 segundo;
g)na propriedade no cronômetro (no timer) insira o código: me!relogio.caption = time

quarta-feira, 30 de junho de 2010

teclas de atalhos - banco de dados


Como criar teclas de atalho em botões de seus formulários:
Procedimento:
a)clique na propriedade do botão ou pressione (F4);
b)localize o campo legenda da aba formato;
c)neste campo é informado o nome do botão, para incluir a tecla de atalho basta inserir & (E comercial) antes da tecla que deseja transformar em atalho. Ex: o botão tem por nome FECHAR e a tecla de atalho será a E, então ficaria desta forma: F&ECHAR

terça-feira, 29 de junho de 2010

Dividindo banco de dados


Vamos dividir o banco de dados, para que vários usuários usem o seu programa ao mesmo tempo em máquinas diferentes.

A primeiro plano teremos a idéia de estarmos trabalhando com banco duplicado, mas na verdade somente os objetos do banco estarão instalados em várias máquinas, pois as tabelas estarão na principal, a qual chamaremos de base de dados única (back-end). A parte operacional (front-end) estará em qualquer computador que desejarmos (em rede).

Isto tornará o programa leve, já que cada máquina terá um programa independente vinculados a mesma base de dados (tabelas da máquina principal).

Mas não se esqueça de um detalhe: Para que os programas em rede funcionem é necessário que a máquina principal esteja constantemente ligada.

Procedimentos (por segurança faça um copia do seu banco antes):

a) abra o seu banco de dados no modo estrutura;

b) clique em ferramentas;

c) utilitário de banco de dados;

d) divisor de banco de dados;

e) quando o assistente se abrir clique em “divisor de banco de dados;

f) na janela criar banco de dados beck-end escolha o diretório/pasta que abrigará a base de dados (a pasta que ficará compartilhada na rede);

g) clique em dividir (o access fará o resto)

Observe que as suas tabelas estão marcadas com uma seta azul ao lado, indicando que estas tabelas estão vinculadas ao banco dividido (verifique se aparece em sua pasta compartilhada um banco salvo com o mesmo nome do seu acompanhado da extensão _be). Observe que neste banco dividido existe somente tabelas e seus relacionamentos.

Obs: Em alguns casos os botões de acesso aos formulários e relatórios do seu banco poderão não funcionar, para solucionar este problema:

a) entre no seu programa (tecla shift);

b) exclua todas as tabelas (setas azuis);

c) inclua novamente a partir do banco que esta na pasta compartilhada (arquivo – obter dados externos – vincular tabelas), mas somente as tabelas, pois a parte operacional (formulários, relatórios, consultas e macros) estão ok.

Importante: Qualquer alteração nas tabelas deverão ser efetuadas no banco que está na pasta compartilhada (back-end).

As alterações nos objetos (formulários e relatórios) deverão ser feitas em todas as máquinas onde estiver instalado o programa (uma a uma), ou se preferir faça as alterações em sua copia e reinstale novamente em cada máquina, mas não se esquecendo que deverá vincular as tabelas novamente.

sexta-feira, 25 de junho de 2010

Cálculos com datas


1) Vamos imaginar a seguinte situação: Temos um formulário para informarmos licenças médicas de funcionários. Temos os campos “data_do_atestado” e “dias_de_atestado”. Eles devem ser do tipo data/hora e formato data abreviada 00/00/0000.

Vamos usar um exemplo: O funcionário apresentou um atestado de 55 dias a partir do 25/06/2010. A nossa questão é calcular o dia do retorno do funcionário.

Procedimento – formulário deve estar baseado em uma consulta:

a) crie um controle calculado na consulta (insira coluna vazia);

b) nomeie o controle. Exemplo: retorno_licença:([data_do_atestado])+([dias_de_atestado])
pronto, o sistema retornará a data do retorno do funcionário. Este exemplo pode ser usado para outras finalidades, tipo: férias ou outros tipos de licenças ou afastamentos, basta alterar os nomes dos campos.


2) Como calcular período entre duas datas? Ex: O funcionário esteve de licença médica no período de 01/04/2009 até 23/06/2010. A questão é calcular quantos dias o funcionário esteve de atestado.

Na sua tabela crie 2 campos, data_do_atestado e o outro será data_retorno (sendo os dois campos tipo data/hora e formato data abreviada 00/00/0000).

Procedimento – formulário baseado em uma consulta:

a) na consulta crie um controle calculado (insira columa vazia);

b) nomei o controle calculado. Exemplo: dias_total_afastado:difdata(“d”;[data_retorno];[data_do_atestado])

obs: o “d” da função acima força o access a retornar o total de dias, caso queria que mostre a quantidade de meses entre datas basta alterar para “m”. caso queira altere os campos data_do_atestado e data_retorno para data_nasc e data_hoje (respectivamente) e o sistema retornará os seus dias de vida.


3) Como calcular período entre determinada data e data do sistema. Para isto a data da maquina deverá estar atualizada.

Vamos usar o exemplo do caso acima: O funcionário saiu de licença médica em 01/04/2009 e esta retornando hoje. Então na sua tabela basta ter apenas o campo “data_do_atestado (tipo data/hora e formato data abreviada 00/00/0000).

Procedimento – formulário baseado em uma consulta:

a) crie um controle calculado (insira coluna vazia);

b) nomeie o controle. Exemplo: dias_afastado: difdata(“m”;[data_do_atestado]; data())

caso goste de programar através do VB empregue o uso do hífen para nomear os campos na tabela, desta forma evitará transtornos futuros nos códigos.

quarta-feira, 23 de junho de 2010

Fixar data e extrair ano de campo data/hora


1) Como fixar a data atual (do sistema) em um banco de dados, sem ter que ficar repetindo o processo nos formulários e relatórios?

•Crie um campo que deve ser do tipo data hora e o formato data abreviada;
•na propriedade valor padrão do campo informe: date()

Em qualquer objeto do banco que o campo for inserido ele automaticamente retornará a data atual, mas para isto é necessário que a data do sistema (da máquina) esteja correta.

Obs: O mesmo sistema pode ser feito em determinados objetos do banco, ex: somente em formulários, neste caso será retornado a data atual somente neste objeto, o interessante é fazer na própria tabela, assim não será preciso refazer o processo em relatórios e consultas. É opcional.


2) Como criar um campo que retorne somente o ano, usando outro campo de data? Este processo deve ser feito em uma consulta, para isto você já deve ter outro campo que retorna a data do sistema (como o do item 1, acima). O sistema é simples, este teu campo de data retorna data desta forma, ex: 31/12/2010, mas você deseja que mostre somente o ano: 2010, então:

•Crie um campo calculado na consulta (insira uma coluna em branco na consulta);
•Programe o formato do campo calculado para dd/mm/yyyy;
•Nomeie (opcional) o campo como: consulta ano: formato([informe o nome do outro campo que você usa para mostrar a data];”yyyy”)
•No critério do campo calculado coloque: [informe o ano]
Desta forma o campo calculado “consulta ano” ficará acoplado em sua consulta e poderá ser incluído em qualquer formulário ou relatório.

sexta-feira, 18 de junho de 2010

Incluir ítens novos em caixa de combinação


Vamos imaginar um formulário de cadastro de clientes, e um dos itens a serem informados (estado civil), para isto no formulário já deverá ter a caixa de combinação com as opções (casado, solteiro, viúvo, etc), porém com o uso do programa você perceba que faltou um item (desquitado). Agora surgiu o problema, como fazer?

* fechar o formulário que está cadastrando e perder os dados;
* abrir outro formulário para cadastrar o estado civil (desquitado);
* abrir novamente o formulário para recomeçar o cadastro anterior.

Quanta perda de tempo. Vamos imaginar o seguinte: Realmente no meio do cadastro percebemos que não existe um item na caixa de combinação (estado civil), não teremos necessidade de interromper o trabalho para cadastrarmos o desquitado.

1º passo – criar formulário
a) baseado em uma tabela independente (uma só para estado civil) crie um formulário simples com uma combo para informar o estado civil;

b) no formulário (cadastro de clientes) na combo estado civil informe sim na sua propriedade “limitar a uma lista” (desta forma o access impedirá que novos dados sejam incluídos por engano)

2º passo - cadastar cliente:
a) quando estivermos cadastrando um cliente novo e ao chegarmos no ítem estado civil não vamos encontrar a opção “desquitado”, basta somente digitá-la dentro da caixa;

b) ao atualizar o campo o access verificará que não existe esta opção (desquitado);

c) este código retornará a pergunta “o item desquitado não está cadastrado, deseja cadastra-lo”, clique em sim;

d) desta forma o access abrirá o formulário criado, no 1º passo, para que você redigite o estado civil novo, neste caso, desquitado (porém o formulário de cadastro de clientes não será fechado, continuará ativo);

e) automaticamente o access gravará o novo estado civil, fechará o formulário que você utilizou para cadastrá-lo e atualizará o formulário de cadastro de cliente;

f) voltando ao formulário de cadastro você poderá verificar que agora o item “desquitado” aparece na lista da caixa de cominação e que você não perdeu os dados anteriores, basta somente continuar o cadastro.

Cole o código abaixo na propriedade "se não estiver na lista" da combo:

response = acdataerrcontinue ' inibe msg padrão do access.
if msgbox("item não cadastrado: '" & newdata & "'" & vbcrlf & "deseja cadastrar?", 32 + vbyesno) = 6 then
docmd.openform "informe o nome do seu formulário que utiliza para cadastrar os ítens", , , , acformadd, acdialog, newdata
' a execução deste código fica interrompida aqui até o
' fechamento do seu formulario.
response = acdataerradded
else
response = acdataerrcontinue
'gotorecord acform
'docmd.openform
end if
end sub

quarta-feira, 16 de junho de 2010

Códigos VB para Access - fechar formulários


1) Código para fechar formulários a partir de um botão criado manualmente.

Aplicação e vantagem:
Para quem possui vários formulários e também um menu principal (formulário de iniciação) e não quer ficar naquela chatice de construir macros por macros (com uma infinidade de nomes e nomes de formulários) ou se não quer ficar construindo botão por botão e depois padronizá-los manualmente, deixando iguais a altura, largura, cor, tamanho e fonte iguais, basta somente copiar um botão já pronto (neste caso será o de fechar formulários) colá-lo em todos os outros formulários que desejar, porém fazendo isto (copiar e colar), o botão perderá a sua função, ou seja o código vb interno, desta forma seria necessário construir outro botão ou inserir um código vb, para evitar isto basta copiar e colar o botão e depois colar este código no evento ao clicar do botão, assim teremos botões padronizados e com funcionalidade.

Neste caso é bom que o banco de dados tenha um menu principal ou (formulário de iniciação), pois em qualquer formulário que o código estiver colado, ele fechará e o menu principal ou formulário de iniciação será aberto.

Obs: Um banco de dados bem apresentável prima pela padronização, portanto caso tenha vários formulários, procure deixar todos os botões (fechar, imprimir, abrir, confirmar, etc...) padronizados e sempre na mesma direção e cantinho da página. Lembre-se, os sistemas existem para facilitar a correria do dia a dia, deles (o povo que irá usar...)

* crie um botão usando a barra de ferramenta
* cole o código abaixo na propriedade ao clicar do botão
on error goto err_comando(incluir número do botão de comando)_click
docmd.close
exit_comando(incluir número do botão de comando)_click:
exit sub
err_comando(incluir número do botão de comando)_click:
msgbox err.description
resume exit_comando(incluir número do botão de comando)_click
end sub