MUDAR ANOS DE DATA
Tenho um projeto assim
03/08/2007
Onde quero que a data fique assim:
03/08/1900
Mas não quero apenas diminuir 107 de 2007... e sim mudar o ano...
Digamos que eu digite 03/08/1902.... se subtrairmos 107 vai ficar 1795.. srsrsrs
Como faço esta rotina para me retornar o ano de 1900... ???
03/08/2007
Onde quero que a data fique assim:
03/08/1900
Mas não quero apenas diminuir 107 de 2007... e sim mudar o ano...
Digamos que eu digite 03/08/1902.... se subtrairmos 107 vai ficar 1795.. srsrsrs
Como faço esta rotina para me retornar o ano de 1900... ???
Calma, vc quer atualizar seu banco de dados dessa forma ou apenas sempre retornar com o ano de 1900???
Se quiser apenas retornar faça assim:
Se for atualizar seu banco de dados, poste qual o banco de dados que vc utiliza.
Se quiser apenas retornar faça assim:
Dim Data as Date
Data = "03/08/2007"
MsgBox DateSerial(1900,month(Data), Day(Data))
Se for atualizar seu banco de dados, poste qual o banco de dados que vc utiliza.
Funcao MudaAno (data, novo_ano) retorna data_com_novo_ano
Separa Data em dia, mes e ano
faz ano = novo_ano
Monta data final, dia, mes e ano
Final da Funcao
Para usar a funcao vc passa a data 03/08/2007 e 1900 o resultado será 03/08/1900
Separa Data em dia, mes e ano
faz ano = novo_ano
Monta data final, dia, mes e ano
Final da Funcao
Para usar a funcao vc passa a data 03/08/2007 e 1900 o resultado será 03/08/1900
Everson, de acordo o que vc falou:
Mas não quero apenas diminuir 107 de 2007... e sim mudar o ano...
[txt-backcolor=#ff0000]Digamos que eu digite 03/08/1902.... [/txt-backcolor]se subtrairmos 107 vai ficar 1795.. srsrsrs
Como faço esta rotina para me retornar o ano de 1900... ???
vc quer que mude o ano assim que digitar na textbox é isso?
se for isso vc pode usar a função MID no lostFocus da text
então irá digitar 03/08/2007 e quando sair da text só o ano mudará para 1900.
Mas não quero apenas diminuir 107 de 2007... e sim mudar o ano...
[txt-backcolor=#ff0000]Digamos que eu digite 03/08/1902.... [/txt-backcolor]se subtrairmos 107 vai ficar 1795.. srsrsrs
Como faço esta rotina para me retornar o ano de 1900... ???
vc quer que mude o ano assim que digitar na textbox é isso?
se for isso vc pode usar a função MID no lostFocus da text
Private Sub Text1_LostFocus()
Text1.Text = Mid(Text1.Text, "1", "6") & "1900"
End Sub
então irá digitar 03/08/2007 e quando sair da text só o ano mudará para 1900.
Agradeço a ajuda de todos...
Eu queria esta formula para poder gerar relatorios com os aniversariantes que fazerm aniversarios nos proximos 7 dias...
Mas eu tinha uma formula, que se o ano fosse no formato DD/MM/YYYY ou MM/DD/YYYY.. ele me retornava....
Mas agora eu queria fazer esta rotina... de gerar por exemplo os aniversariante da semana... ou seja de hoje a daqui a sete dias...
Eu tenho esta formula....
On Error GoTo Data
txtAniversario = DateAdd("D", 1, Date)
txtDataInicial.Text = txtAniversario
txtDataFinal = DateAdd("D", 8, Date)
txtDataInicial = Format(txtDataInicial, "MM/DD")
txtDataFinal = Format(txtDataFinal, "MM/DD")
DataReport5.Sections(2).Controls("Label10").Caption = "Aniversariantes nascidos entre os dias " & frmAniversario.txtDataInicial2 & " e " & frmAniversario.txtDataFinal2
MousePointer = 11
VoltaData:
DataEnvironment1.rsCommand1.Source = "select Cli_Usuario,cli_aniversario from cliente " & _
"where (Cli_Usuario like '%" & txtUsuario.Text & "%' and format (cli_Data, 'MM/DD') Between '" & txtDataInicial & "' And '" & txtDataFinal & "')"
DataEnvironment1.rsCommand1.Open
DataReport5.Show
SairData:
MousePointer = 0
End If
'Funciona
Exit Sub
Onde cli_usuario é o Usuario que esta usando e cli_data é o campo que contem a data correta de nascimento....
Mas não consigo fazer ele me retornar os aniversariantes....
E por isto pensei em usar no banco de dados uma coluna onde ele colocaria todos as datas com o ano de 1900 e então eu pegaria as datas... e acrescentaria o ano de 1900... assim
01/08/1900 até 07/08/1900 e ele me retorna a data...
Mas isto é ocupar espaço no banco de dados....
Onde esta o erro do meu codigo ??? Porque ele não retorna as datas no formato MM/DD ???
Abraços e até +
Eu queria esta formula para poder gerar relatorios com os aniversariantes que fazerm aniversarios nos proximos 7 dias...
Mas eu tinha uma formula, que se o ano fosse no formato DD/MM/YYYY ou MM/DD/YYYY.. ele me retornava....
Mas agora eu queria fazer esta rotina... de gerar por exemplo os aniversariante da semana... ou seja de hoje a daqui a sete dias...
Eu tenho esta formula....
On Error GoTo Data
txtAniversario = DateAdd("D", 1, Date)
txtDataInicial.Text = txtAniversario
txtDataFinal = DateAdd("D", 8, Date)
txtDataInicial = Format(txtDataInicial, "MM/DD")
txtDataFinal = Format(txtDataFinal, "MM/DD")
DataReport5.Sections(2).Controls("Label10").Caption = "Aniversariantes nascidos entre os dias " & frmAniversario.txtDataInicial2 & " e " & frmAniversario.txtDataFinal2
MousePointer = 11
VoltaData:
DataEnvironment1.rsCommand1.Source = "select Cli_Usuario,cli_aniversario from cliente " & _
"where (Cli_Usuario like '%" & txtUsuario.Text & "%' and format (cli_Data, 'MM/DD') Between '" & txtDataInicial & "' And '" & txtDataFinal & "')"
DataEnvironment1.rsCommand1.Open
DataReport5.Show
SairData:
MousePointer = 0
End If
'Funciona
Exit Sub
Onde cli_usuario é o Usuario que esta usando e cli_data é o campo que contem a data correta de nascimento....
Mas não consigo fazer ele me retornar os aniversariantes....
E por isto pensei em usar no banco de dados uma coluna onde ele colocaria todos as datas com o ano de 1900 e então eu pegaria as datas... e acrescentaria o ano de 1900... assim
01/08/1900 até 07/08/1900 e ele me retorna a data...
Mas isto é ocupar espaço no banco de dados....
Onde esta o erro do meu codigo ??? Porque ele não retorna as datas no formato MM/DD ???
Abraços e até +
com esse codigo sql ach oque resolve seu problema
SELECT tabela.*, CDate(Format([data],"dd/mm/""1900""")) AS DataEsperada
FROM tabela
WHERE (((CDate(Format([data],"dd/mm/""1900""")))>CDate("01/06/1900") And (CDate(Format([data],"dd/mm/""1900""")))<CDate("01/08/1900")));
segue anexo um banco em mdb com o exemplo que vc quer ....
SELECT tabela.*, CDate(Format([data],"dd/mm/""1900""")) AS DataEsperada
FROM tabela
WHERE (((CDate(Format([data],"dd/mm/""1900""")))>CDate("01/06/1900") And (CDate(Format([data],"dd/mm/""1900""")))<CDate("01/08/1900")));
segue anexo um banco em mdb com o exemplo que vc quer ....
fiz um pequeno projeto e com o banco de dados de uma olhada ach oque seu problema ta no select do sql .....
nesse projeto sua data fica certa !
nesse projeto sua data fica certa !
Tópico encerrado , respostas não são mais permitidas