Inquiridor
Data automática

Pergunta
-
Olá pessoal,
Como faço isso:
Tenho um cadastro de usuários. Um dos campos do formuário é data de cadastro, que é capturado via getdate do SQL SERVER 2005.
Tenho um segundo campo, Vencimento do cadastro, tipo data. Como faço para que este campo vencimento do cadastro não seja digitado e sim pegue o valor data de cadastro e acrescente 365 dias ao mesmo.
Um exemplo:
Faço o cadastro hoje, 5/07/07, a data de vencimento seria 05/07/08.
Uso VS2005 e SQL SERVER 2005.
Grato,
Dirceu
Todas as Respostas
-
-
-
-
-
Dirceu,
Primeiramente respondende a sua primeira dúvida, você poderá utilizar a função Dateadd para acrescentar a quantidade de dias desejada, veja o exemplo:
Select DateAdd(Day,365,GetDate())
Eu preferi utilizar a função DateAdd, para adicionar valores a um campo DateTime, por questão de compatibilidade.
Em relação a sua outra dúvida você poderia fazer uso do case, veja o exmeplo:
Select Case When DateAdd(Day,365,Cata_cadastro) = Data_Vencimento Then 'Inativo' Else 'Ativo' End as 'Situação'
-
Junior,
Esta é minha procedure, funcionava perfeitamente assim,
set
ANSI_NULLS ONset
QUOTED_IDENTIFIER ONGO
-- =============================================
-- Author: Dirceu Martins de Azevedo
-- Create date: 07/06/2007
-- Description: Busca registros do Banco
-- =============================================
ALTER
PROCEDURE [dbo].[USP_Pec_01_Usuarios_Seleciona]@LOGIN
AS varchar(50),@SENHA
AS varchar(255)As
if
(@login Is Not Null)Begin
SET NOCOUNT ON SELECT Nome FROM Tb_Pec_01_Usuarios WHERE Login = @Login AND Senha = @Senha SET NOCOUNT OFFEnd
Else
Begin
SET NOCOUNT ON Select nome From tbl_pec_01_Usuarios SET NOCOUNT OFFEnd
O que preciso agora é o seguinte:
Além de checar login e senha preciso checar o campo situação "Ativo" ou "Inativo";
Feito isso preciso que ele faça o seguinte, se a Data_Vencimento for igual a Data_Cadastro + 365 dias
mude o campo situacao de "Ativo" para "Inativo";
Abs,
Dirceu
-
Bom dia,
Tentei dessa forma, não deu erro, mas também não mudou o valor do campo:
set
ANSI_NULLS ONset
QUOTED_IDENTIFIER ONGO
-- =============================================
-- Author: Dirceu Martins de Azevedo
-- Create date: 07/06/2007
-- Description: Busca registros do Banco
-- =============================================
ALTER
PROCEDURE [dbo].[USP_Pec_01_Usuarios_Seleciona]@LOGIN
AS varchar(50),@SENHA
AS varchar(255),@VSITUACAO
As Varchar(7)As
if
(@login Is Not Null)Begin
SET NOCOUNT ON SELECT Nome FROM Tb_Pec_01_Usuarios WHERE Login = @Login AND Senha = @Senha AND Situacao = @Vsituacao Select Case When DateAdd(Day,365,Data_cadastro) = Data_Vencimento Then 'Inativo' Else 'Ativo' End as 'Situação' FROM Tb_Pec_01_UsuariosSET
NOCOUNT OFFEnd
Else
Begin
SET NOCOUNT ON Select nome From tbl_pec_01_Usuarios SET NOCOUNT OFFEnd
Grato
Dirceu
-
-
Olá Dirceu,
Me parece que é apenas um problema de lógica.
Vamos ver se entendi. No momento do cadastro da pessoa, o campo Data_Vencimento é populado automaticamento com um DateAdd(Day,365,Data_cadastro), certo? Então, dentro do teu SELECT você está comparando esses dois campo e o resultado sempre vai ser verdadeiro!
Então, creio que você terá que comparar o Data_Vencimento com a data atual! Ou seja, um GETDATE ().
Mude esta linha:
Select Case When GETDATE () > Data_Vencimento Then 'Inativo' Else 'Ativo' End as 'Situação' FROM Tb_Pec_01_Usuarios
Se eu endendi corretamente, vai funcionar.
Qualquer coisa retorne.
Abraço
-
Olá Alexandre,
É o seguinte quanto o uuário é cadastrado temos 2 campos data, Data_Cadastro e Data_Vencimento. Obtenho a Data_Cadastro através do getdate(), e Data-Vencimento através do getdate()+365.
Tenho um campo situação, Ativo e Inativo.
O usuário vai usando o sistema, quando fizer um ano, tenho que mudar o valor do campo situação para Inativo, pois o contrato de 1 ano venceu, e só será reativado mediante solicitação do cliente.
Tenho que comparar a a Data_cadastro com a Data_Vencimento, quando a Data de vencimento for igual a Data_Cadastro + 1 ano o campo Situacao de mudar de Ativo para Inativo.
Grato
Dirceu
-
-
Dirceu,
Creio que você terá que analisar novamente sua solução. Desta forma está um tanto complexo. Eu recomendaria o seguinte, faça o controle inicialmente através da data. Se for feito isso, o campo situação acaba perdendo o sentido. Então, colocaria um outro campo, algo do tipo "LiberadoPedidoCliente" ou algo assim, apenas para controlar se o cliente pediu a liberação ou não.
Veja se pegou minha idéia, qualquer coisa retorne que te ajudo com mais calma.
Abraço