none
Data automática RRS feed

  • 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

    quinta-feira, 5 de julho de 2007 13:46

Todas as Respostas

  •  

    Dirceu,

     

    Pode usar o GETDATE () + 365. Faça o teste desta maneira:

    Code Snippet

     

    SELECT GETDATE () + 365

     

     

     

    Abraço

    quinta-feira, 5 de julho de 2007 14:06
  •  

     

     acho melhor usar o dateadd

     

     select dateadd(day,365,getdate())

     

    veja os parametros da dateadd no books on line vc. pode incluir dias, meses, anos, etc

     

     

    Abs;

    quinta-feira, 5 de julho de 2007 14:12
  • Olá,

    Como faço isso,

    Tenho um campo situação,

    Se Data vencimento igual Data de cadastro + 365

    Campo situação = Inativo

     

     

    Dirceu

    quinta-feira, 5 de julho de 2007 16:34
  •  

     

     faca um case se for para o select

     

     select situacao = case when dateadd(day,365,data_cadastro) = data_vencimento then 'inativa' else 'ativo' end

     

     

     

    quinta-feira, 5 de julho de 2007 16:40
  • 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'

    quinta-feira, 5 de julho de 2007 16:52
  • Junior,

     

    Esta é minha procedure, funcionava perfeitamente assim,

    set ANSI_NULLS ON

    set QUOTED_IDENTIFIER ON

    GO

    -- =============================================

    -- 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 OFF

    End

    Else

    Begin

    SET NOCOUNT ON

    Select nome From tbl_pec_01_Usuarios

    SET NOCOUNT OFF

    End

     

    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

     

     

     

     

    quinta-feira, 5 de julho de 2007 19:46
  • Bom dia,

     

    Tentei dessa forma, não deu erro, mas também não mudou o valor do campo:

    set ANSI_NULLS ON

    set QUOTED_IDENTIFIER ON

    GO

    -- =============================================

    -- 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_Usuarios

     

    SET NOCOUNT OFF

    End

    Else

    Begin

    SET NOCOUNT ON

    Select nome From tbl_pec_01_Usuarios

    SET NOCOUNT OFF

    End

     

    Grato

    Dirceu

    sexta-feira, 6 de julho de 2007 11:16
  • Olá pessoal,

     

    O que poder estar errado?

     

    Dirceu

    sexta-feira, 6 de julho de 2007 16:16
  •  

    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

    sexta-feira, 6 de julho de 2007 16:30
  • 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

     

     

    sexta-feira, 6 de julho de 2007 16:44
  • Olá

    Tem alguma outra forma de se faze isso?

    Dirceu

    sexta-feira, 6 de julho de 2007 17:34
  •  

    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

    sexta-feira, 6 de julho de 2007 19:27