Forum Pplware

Versão Completa: [Resolvido] Access 2013, como formatar campo para ano numa tabela?
Está de momento a ver uma versão reduzida do nosso conteúdo. Ver versão completa com o formato adequado.
Páginas: 1 2
Olá.

Como criar um campo "Ano", apenas de 4 dígitos numa tabela Access 2013?

Quero digitar apenas "13" e que o valor do campo na tabela seja apresentado como "2013"

Obrigado desde já pela v/ ajuda.
Olá Smile

Não sei se isso pode ser feito com os formatos de data do próprio Access, uma vez que ao introduzires 13, pode ser 2013, 1913, 2113, etc.

Podes contornar isso através de VBA, crias o campo "Ano" como texto e quando colocares o campo num formulário por exemplo, trabalhas sobre o evento "Depois de actualizar" desse mesmo campo, fazendo o seguinte,

Código:
Me.ano.Value = "20" & Me.ano.Value

Sempre que introduzires 13, o valor apresentado e guardado é 2013, o mesmo para 14.

Esta forma de fazer as coisas tem alguns riscos, por exemplo, se alguém introduzir 2014 o resultado será 202014. 

Para evitar isto tens de testar o que o utilizador introduz. 

Assim de repente,

Código:
Private Sub ano_AfterUpdate()

If Len(ano.Text) = 2 Then

Me.ano.Value = "20" & Me.ano.Value

End If

End Sub

Caso seja introduzido 14, o resultado é 2014, caso introduzam 2014 o resultado é 2014.

Esta é uma forma, pode haver outra...
Quando um campo "data" é formatado aa/mm/dd basta escrever 13/12/12 para mostrar como 2013/12/12. Não é possível aproveitar isso para mostrar só a parte do ano? Para facilitar a introdução de dados queria usar só duas teclas para introduzir o ano. 
Penso que isso não funciona num campo formatado como Data. Uma vez que um campo formatado como data pressupõe a introdução de um valor válido, ou seja, de uma data válida e 14 ou 13 não é uma data válida.

Podes fazer uma experiência simples, usando até o Excel, se formatares uma célula como data e introduzires o valor 14 o Excel retorna 14/01/1900. Isto porque a forma como o Excel/Access guardam as datas é através do número de dias que passaram desde 1900.

Por exemplo, se colocares a data de hoje 17/04/2014 o valor guardado é 41746, uma vez que passaram 41746 dias desde 01/01/1900. Se colocares 41746 num campo Data o resultado é 17/04/2014. 

A meu ver podemos formatar uma data válida numa data abreviada mas penso que não conseguimos partir de uma abreviação para uma data.

Eu entendo desta forma mas posso estar enganado.
Espera por mais opiniões.

Para completar, as datas/horas são guardadas no seguinte formato dddddd,hhhhhh, ou seja, a parte inteira é a data (número de dias desde 1900) e a parte decimal é a hora. Por exemplo 12:00 é guardado como 0,5, uma vez que 12 é metade de 24
Obrigado nioxys pela ajuda, talvez experimente esse código qd chegar ao form.

Mas ainda estou na tabela e estava a experimentar assim:

Tenho outra tabela ANO tipo matriz;

[Imagem: edit?usp=sharing]

ANO_ID    ANO
  01          2001
  02          2002
   …            
  13          2013
  14          2014

Mas como digitar 13 e apresentar o resultado da 2ª coluna (2013)? 
Numa consulta é fácil ir buscar a 2ª coluna.

No entanto na tabela, poderia ser na construção do campo em "Tipo de dados>Calculado"? Como?
Desculpa mas não percebi muito bem o que pretendes.

Tens uma tabela com os anos, com os campos ANO_ID e ANO. 
Até aqui percebi.

Tu queres introduzir o 13, 14, etc onde? 
Percebi que é numa tabela, mas numa outra ou na mesma?

E no campo onde introduzes 13 é onde queres que apareça 2013?

Desculpa as perguntas mas não estou a perceber o que pretendes fazer.
Sim é isso.

Na mesma tabela de nome "DOCS" tenho um campo "ANO" e quero digitar apenas "13" e visualizar 2013.

A tua primeira sugestão com o código parece-me boa, mas ainda queria tentar outra conforme expliquei antes.

Agora tenho o campo "ANO" a pesquisar outra tabela, digito "13" mas ainda não me mostra o valor da 2ª coluna... Se fosse com uma consulta era fácil, mas assim como seria?
Tens duas tabelas, uma com Ano_ID e Ano e outra tabela Docs com o campo Ano, queres ao introduzir um valor no campo Ano da tabela Docs o Access compare esse mesmo valor com o campo Ano_ID da tabela Ano e retorne o ano correspondente, que por sua vez se encontra no campo Ano

É isto?

Penso que directamente na tabela não consegues fazer, ou melhor, de forma simples talvez não dê. 

Pelo que entendo tu queres que os dados sejam estruturados na forma de tabela e daí que não tenhas avançado para o formulário, estou certo?

De qualquer forma o Access possibilita que um formulário seja apresentado no formato tabela, a chamada vista "Folha de dados" e se criares um formulário com base na tabela Docs utilizando a vista folha de dados a única coisa que tens de fazer para obter o resultado que pretendes é utilizar a função Dlookup no evento "Depois de Actualizar" do campo Ano da tabela Docs no formulário associado.

A função Dlookup e semelhante à função Procv do Excel e tem os seguintes parâmetros,

Dlookup("Campo a Pesquisar", "Tabela", "Critérios")

No teu caso seria algo do género,

Código:
Me.Ano = DLookup("Ano", "tblAno", "Ano_id=" & Me.Ano & "")

Sempre que introduzires 13 o resultado é 2013, uma vez que ele efectua a pesquisa pelo 13 no campo Ano_ID e devolve o valor associado que se encontra no campo Ano, neste caso 2013.

Deixo-te aqui um exemplo,

Access_Dlookup - Download

Abre o formulário Docs e introduz um valor, 13, 14, etc...
[Imagem: tabAnoAccess.png]

E nas propriedades, em Tipo de dados >Calculado?

[Imagem: tabDocsAnoCalc.png]


É possível criar aqui
  • uma consulta?
  • ou utilizar a função Dlookup?



Obs: a Access_Dlookup - Download é uma boa hipótese
Já experimentei com uma consulta mas o resultado não aparece no campo em questão mas sim na folha da consulta.
Também tentei colocar a expressão Dlookup num campo calculado sem resultados.

Se dá para fazer directamente no campo da tabela eu não faço ideia como se faz, sou sincero. Neutral

Pode ser que alguém saiba e aprendemos os dois. Smile
Páginas: 1 2
URL's de Referência