Olá Pessoal,
Estava eu garimpando algumas informações na internet sobre Data/Hora no access e achei uma documentação muito interessante no site da Microsoft e gostaria de compartilhar com vocês!
Fonte: http://support.microsoft.com/kb/210604/pt-br
Bons Estudos!
Exibindo datas específicas
Para exibir datas específicas, é possível usar a função DateSerial() para manipular partes de dia, mês e ano de uma data. Por exemplo, é possível usar as seguintes expressões na propriedade ControlSource de uma caixa de texto ou na janela Immediate para retornar às datas específicas:
'O MÊS ATUAL
DateSerial(Ano(Data()), Mês(Data()), 1)
'O PRÓXIMO MÊS
DateSerial(Ano(Data()), Mês(Data()) + 1, 1)
'O ÚLTIMO DIA DO MÊS ATUAL
DateSerial(Ano(Data()), Mês(Data()) + 1, 0)
'O ÚLTIMO DIA DO PRÓXIMO MÊS
DateSerial(Ano(Data()), Mês(Data()) + 2, 0)
'O PRIMEIRO DIA DO MÊS ANTERIOR
DateSerial(Ano(Data()), Mês(Data())-1,1)
'O ÚLTIMO DIA DO MÊS ANTERIOR
DateSerial(Ano(Data()), Mês(Data()),0)
'O PRIMEIRO DIA DO TRIMENTRE ATUAL
DateSerial(Ano(Data()), Int((Mês(Data()) - 1) / 3) * 3 + 1, 1)
'O ÚLTIMO DIA TO TRIMENTRE ATUAL
DateSerial(Ano(Data()), Int((Mês(Data()) - 1) / 3) * 3 + 4, 0)
'O PRIMEIRO DIA DA SEMANA ATUAL (considerando que domingo = dia 1)
Data() - DiaSem(Data()) + 1
'O ÚLTIMO DIA DA SEMANA ATUAL
Data() - DiaSem(Data()) + 7
'O PRIMEIRO DIA DA SEMANA ATUAL (usando definições na caixa de diálogo Opções)
Data() - DiaSem(Data()) + 1
'O ÚLTIMO DIA DA SEMANA ATUAL
Data() - DiaSem(Data(), 0) + 7
Para obter mais informações sobre como calcular o ano fiscal ou mês fiscal, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês): 210249. Como obter o ano ou o mês fiscal de uma determinada data no Access 2000 CUIDADO: caso execute as etapas deste exemplo, você modificará o banco de dados de exemplo Northwind.mdb. Convém fazer backup do arquivo Northwind.mdb e seguir estas etapas em uma cópia do banco de dados.
Calculando intervalos de tempo
Devido ao valor de hora ficar armazenado como uma fração de um dia com 24 horas, é possível receber resultados de formatação incorretos ao tentar adicionar, subtrair, multiplicar ou dividir dados de hora maiores do que 24 horas.
Por exemplo, caso tente encontrar o número de horas decorridas entre duas datas subtraindo os valores no Visual Basic, é possível receber um número incorreto. Como demonstração, digite o seguinte código na janela Imediato e perceba que será retornado um valor de 0:00 hora, e não o valor correto de 53:00 horas.
• A função GetElapsedDays() calcula a hora decorrida entre dois valores de data/hora e exibe o resultado em dias.
• A função GetElapsedTime() calcula a hora decorrida entre valores de tempo e exibe o resultado em dias, horas, minutos e segundos.
• A função GetTimeCardTotal() soma um campo de valores de tempo em uma tabela e exibe o total em horas e minutos.
Função de exemplo GetElapsedDays()
Para criar a função GetElapsedDays(), execute as seguintes etapas:
1.Abra o banco de dados de exemplo Northwind.mdb.
2.Crie um módulo e digite a seguinte linha na seção Declarações caso ainda não esteja lá:
5.Na grade QBE, adicione os seguintes campos.
Função de exemplo GetElapsedTime()
Para criar a função GetElapsedTime(), execute as seguintes etapas: 1. Crie uma nova tabela com a seguinte estrutura e salve como TimeLog.
5.Para testar a função, crie um novo relatório com base na tabela TimeLog, usando o Assistente de AutoRelatório.
6.Exiba o relatório no modo Design.
7.Adicione uma caixa de texto não acoplada à seção de detalhes da tabela TimeLog e defina suas propriedades da seguinte forma:
Função de amostra GetTimeCardTotal()
Para criar a função GetTimeCardTotal(), execute as seguintes etapas:
OBSERVAÇÃO: O código de exemplo neste artigo usa o Microsoft Data Access Objects. Para este código ser executado corretamente, é necessário referenciar a biblioteca de objetos Microsoft DAO 3.6. Para fazer isto, clique em Referências no menu Ferramentas no Editor do Visual Basic e verifique a caixa de seleção Microsoft DAO 3.6 Object Library está marcada.
1.Crie uma nova tabela com a seguinte estrutura e salve-a como TimeCard.
Este tópico o ajudou? Agradecer não custa nada e ainda nos motiva a continuar lhe ajudando. Então que tal dar um joinha ?
Estava eu garimpando algumas informações na internet sobre Data/Hora no access e achei uma documentação muito interessante no site da Microsoft e gostaria de compartilhar com vocês!
Fonte: http://support.microsoft.com/kb/210604/pt-br
Bons Estudos!
Exibindo datas específicas
Para exibir datas específicas, é possível usar a função DateSerial() para manipular partes de dia, mês e ano de uma data. Por exemplo, é possível usar as seguintes expressões na propriedade ControlSource de uma caixa de texto ou na janela Immediate para retornar às datas específicas:
'O MÊS ATUAL
DateSerial(Ano(Data()), Mês(Data()), 1)
'O PRÓXIMO MÊS
DateSerial(Ano(Data()), Mês(Data()) + 1, 1)
'O ÚLTIMO DIA DO MÊS ATUAL
DateSerial(Ano(Data()), Mês(Data()) + 1, 0)
'O ÚLTIMO DIA DO PRÓXIMO MÊS
DateSerial(Ano(Data()), Mês(Data()) + 2, 0)
'O PRIMEIRO DIA DO MÊS ANTERIOR
DateSerial(Ano(Data()), Mês(Data())-1,1)
'O ÚLTIMO DIA DO MÊS ANTERIOR
DateSerial(Ano(Data()), Mês(Data()),0)
'O PRIMEIRO DIA DO TRIMENTRE ATUAL
DateSerial(Ano(Data()), Int((Mês(Data()) - 1) / 3) * 3 + 1, 1)
'O ÚLTIMO DIA TO TRIMENTRE ATUAL
DateSerial(Ano(Data()), Int((Mês(Data()) - 1) / 3) * 3 + 4, 0)
'O PRIMEIRO DIA DA SEMANA ATUAL (considerando que domingo = dia 1)
Data() - DiaSem(Data()) + 1
'O ÚLTIMO DIA DA SEMANA ATUAL
Data() - DiaSem(Data()) + 7
'O PRIMEIRO DIA DA SEMANA ATUAL (usando definições na caixa de diálogo Opções)
Data() - DiaSem(Data()) + 1
'O ÚLTIMO DIA DA SEMANA ATUAL
Data() - DiaSem(Data(), 0) + 7
Para obter mais informações sobre como calcular o ano fiscal ou mês fiscal, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês): 210249. Como obter o ano ou o mês fiscal de uma determinada data no Access 2000 CUIDADO: caso execute as etapas deste exemplo, você modificará o banco de dados de exemplo Northwind.mdb. Convém fazer backup do arquivo Northwind.mdb e seguir estas etapas em uma cópia do banco de dados.
Calculando intervalos de tempo
Devido ao valor de hora ficar armazenado como uma fração de um dia com 24 horas, é possível receber resultados de formatação incorretos ao tentar adicionar, subtrair, multiplicar ou dividir dados de hora maiores do que 24 horas.
Por exemplo, caso tente encontrar o número de horas decorridas entre duas datas subtraindo os valores no Visual Basic, é possível receber um número incorreto. Como demonstração, digite o seguinte código na janela Imediato e perceba que será retornado um valor de 0:00 hora, e não o valor correto de 53:00 horas.
- Código:
StartDate=#6/1/93 8:00AM#
EndDate=#6/3/93 1:00PM#
?Format(EndDate-StartDate,"hh:mm")
- Código:
'-------------------------------------------------------------------
' This sample code separates a time interval into seven variables for the following values: days, hours, minutes, seconds, total time in
' hours, total time in minutes, and total time in seconds. The interval argument is flexible; it can be a single value, an expression, or a field reference.
'-------------------------------------------------------------------
Dim totalhours As Long, totalminutes As Long, totalseconds As Long
Dim days As Long, hours As Long, minutes As Long, seconds As Long
Dim interval As Variant
days = Int(CSng(interval))
totalhours = Int(CSng(interval * 24))
totalminutes = Int(CSng(interval * 1440))
totalseconds = Int(CSng(interval * 86400))
hours = totalhours Mod 24
minutes = totalminutes Mod 60
seconds = totalseconds Mod 60
• A função GetElapsedDays() calcula a hora decorrida entre dois valores de data/hora e exibe o resultado em dias.
• A função GetElapsedTime() calcula a hora decorrida entre valores de tempo e exibe o resultado em dias, horas, minutos e segundos.
• A função GetTimeCardTotal() soma um campo de valores de tempo em uma tabela e exibe o total em horas e minutos.
Função de exemplo GetElapsedDays()
Para criar a função GetElapsedDays(), execute as seguintes etapas:
1.Abra o banco de dados de exemplo Northwind.mdb.
2.Crie um módulo e digite a seguinte linha na seção Declarações caso ainda não esteja lá:
- Código:
Option Explicit
- Código:
Function GetElapsedDays (interval)
Dim days As Long
days = Int(CSng(interval))
GetElapsedDays = days & " Days "
End Function
5.Na grade QBE, adicione os seguintes campos.
- Código:
Campo: ShippedDate
Apresenta: Verdadeiro
Campo: OrderDate
Apresenta: Verdadeiro
Campo: ElapsedTime: GetElapsedDays([ShippedDate]-[OrderDate])
Apresenta: Verdadeiro
Função de exemplo GetElapsedTime()
Para criar a função GetElapsedTime(), execute as seguintes etapas: 1. Crie uma nova tabela com a seguinte estrutura e salve como TimeLog.
- Código:
Tabela: TimeLog
-----------------------
Nome do campo: Hora de início
Tipo de dados: Data/Hora
Formato: Data geral
Nome do campo: Hora de término
Tipo de dados: Data/Hora
Formato: Data geral
- Código:
Hora de início Hora de término
--------------------------------------------
5/10/95 16:57:00 5/15/95 2:38:00
5/11/95 10:17:31 5/24/95 18:05:00
5/18/95 9:16:43 5/19/95 17:03:00
- Código:
Option Explicit
- Código:
Function GetElapsedTime(interval)
Dim totalhours As Long, totalminutes As Long, totalseconds As Long
Dim days As Long, hours As Long, Minutes As Long, Seconds As Long
days = Int(CSng(interval))
totalhours = Int(CSng(interval * 24))
totalminutes = Int(CSng(interval * 1440))
totalseconds = Int(CSng(interval * 86400))
hours = totalhours Mod 24
Minutes = totalminutes Mod 60
Seconds = totalseconds Mod 60
GetElapsedTime = days & " Days " & hours & " Hours " & Minutes & " Minutes " & Seconds & " Seconds "
End Function
5.Para testar a função, crie um novo relatório com base na tabela TimeLog, usando o Assistente de AutoRelatório.
6.Exiba o relatório no modo Design.
7.Adicione uma caixa de texto não acoplada à seção de detalhes da tabela TimeLog e defina suas propriedades da seguinte forma:
- Código:
Caixa de texto
---------------
Nome: ElapsedTime
OrigemDoControle: =GetElapsedTime([Hora de término]-[Hora de início])
Largura: 3 polegadas
Função de amostra GetTimeCardTotal()
Para criar a função GetTimeCardTotal(), execute as seguintes etapas:
OBSERVAÇÃO: O código de exemplo neste artigo usa o Microsoft Data Access Objects. Para este código ser executado corretamente, é necessário referenciar a biblioteca de objetos Microsoft DAO 3.6. Para fazer isto, clique em Referências no menu Ferramentas no Editor do Visual Basic e verifique a caixa de seleção Microsoft DAO 3.6 Object Library está marcada.
1.Crie uma nova tabela com a seguinte estrutura e salve-a como TimeCard.
- Código:
Tabela: CartãoPonto
-----------------------
Nome do campo: Horas diárias
Tipo de dados: Data/Hora
Formato: Hora abreviada
- Código:
8:15
7:37
8:12
8:03
- Código:
Option Explicit
- Código:
Function GetTimeCardTotal ()
Dim db As DAO.Database, rs As DAO.Recordset
Dim totalhours As Long, totalminutes As Long
Dim days As Long, hours As Long, minutes As Long
Dim interval As Variant, j As Integer
Set db = dbengine.workspaces(0).databases(0) Set rs = db.OpenRecordset("timecard") interval = #12:00:00 AM#
While Not rs.EOF
interval = interval + rs![Daily hours]
rs.MoveNext
Wend totalhours = Int(CSng(interval * 24)) totalminutes = Int(CSng(interval * 1440)) hours = totalhours Mod 24 minutes = totalminutes Mod 60 GetTimeCardTotal = totalhours & " hours and " & minutes & " minutes"
End Function
- Código:
?GetTimeCardTotal()
Este tópico o ajudou? Agradecer não custa nada e ainda nos motiva a continuar lhe ajudando. Então que tal dar um joinha ?