Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

David Carvalho

Contar data em uma tabela do Sql Server

Recommended Posts

Tenho um formulário do Access que está conectado ao Sql Server.

Preciso inserir algum item (caixa de seleção, botão, qualquer coisa) nesse formulário para gravar o valor "Sim" ou "não" em um campo (char (3)) de uma tabela no Sql Server.


Esse item que precisa ser inserido no formulário tem que gravar o valor e a partir do momento que gravar, tem que começar a contar a data até 6 meses. Após seis meses estando com o valor Sim, tem que automaticamente voltar ao padrão "Não". É basicamente isso.


Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual seu conhecimento de banco de dados ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Motta, obrigado por responder.

 

Creio que sua pergunta não exige uma resposta relevante para a resolução do problema.

Você sabe como fazer isso? Seria uma function, procedure ou até mesmo trigger?

 

Alguém sabe??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu faria um job (procedimento automático), rodaria todo dia e verificaria se a data e menor que a data do Sistema menos 6 meses.

 

Em Oracle o ojjeto que faz isto é o JOB, creio que no Sql Sever também.

 

Perguntei pois se a pessoa não tem muito conhecimento de BD não ainda muito dizer que a solução é Trigger ou procedure.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse item que precisa ser inserido no formulário tem que gravar o valor e a partir do momento que gravar, tem que começar a contar a data até 6 meses. Após seis meses estando com o valor Sim, tem que automaticamente voltar ao padrão "Não". É basicamente isso.

Você já grava o campo data, correto?

Cria uma procedure que calcule a data menos seis meses e de um update neste campo.

Para isso, utilize a função: DATEADD.

Feito isso, agende esta procedure para ser executado todo dia pela manha ou durante a rotina de manutenção do banco.

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grosso Modo

 

create or replace procedure muda_situacao
begin
  update tabela set situacao = 'NAO' 
where data <= dateadd(month,-6,now())
and situacao = 'SIM' ;
end;

A síntaxe exata não sei mas a ideia seria esta, com a procedure pronta agene a execução para rodar todo dia determinada hora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grosso Modo

 

create or replace procedure muda_situacao
begin
  update tabela set situacao = 'NAO' 
where data <= dateadd(month,-6,now())
and situacao = 'SIM' ;
end;

A síntaxe exata não sei mas a ideia seria esta, com a procedure pronta agene a execução para rodar todo dia determinada hora.

 

Motta, no caso do SQL, a função seria a GETDATE() ao invés do NOW()

 

Eu faria deste modo:

 declare @data_06 datetimedeclare @mes_atual int -- PEGO A DATA ATUAL E FAÇO O CALCULO PARA MENOS 6 MESESSELECT @data_06 = CONVERT(varchar(10), (DATEADD(MONTH, -6, GETDATE())),120) -- SEIS MESES ANTERIORES  declare @table table (nome varchar(100), caixa varchar(3), data datetime)  insert @table values ('NOME_A', 'SIM', '2013-02-01')insert @table values ('NOME_B', 'NAO', '2013-03-01')insert @table values ('NOME_C', 'SIM', '2012-11-01')  SELECT * FROM @tablewhere data <= @data_06 -- CHECO O CAMPO DATA PARA A VARIAVEL QUE TEM A DATA ATUAL MENOS SEIS MESES

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta e A.jr, vocês sabem se é possível capturar o valor de uma caixa de seleção do access que é (-1, 0) e gravar no banco como "Sim" e "Não"? Não encontro solução para isso em canto nenhum. Essa procedure seria usada com o valor dessa caixa de seleção.

 

Vocês estão me ajudando bastante, desde já, vou agradecendo mans.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente um case.

Você passa este campo como parametro para ela, e ela trata:

Veja um exemplo, com select:

 

 declare @valor intset @valor = 0 select case when @valor = 0 then 'SIM' else 'NÃO' end

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.