MUDAR ANOS DE DATA

EVERSON.PASETTO 03/08/2007 09:32:42
#229265
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... ???
USUARIO.EXCLUIDOS 03/08/2007 09:47:26
#229269
Resposta escolhida
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:
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.
USUARIO.EXCLUIDOS 03/08/2007 16:56:16
#229400
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
USUARIO.EXCLUIDOS 04/08/2007 00:31:29
#229460
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

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.
EVERSON.PASETTO 04/08/2007 09:36:33
#229466
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é +
USUARIO.EXCLUIDOS 04/08/2007 12:36:05
#229479
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 ....


USUARIO.EXCLUIDOS 04/08/2007 12:53:47
#229485
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 !
Tópico encerrado , respostas não são mais permitidas