Ir para conteúdo

Arquivado

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

T13

Limitar Registro de Dados Idênticos à 3 a cada 7 dias

Recommended Posts

Boa Tarde, meus caros amigos.

Não sei se me expressei bem no título mas a minha dúvida é a seguinte:

Tenho uma página HTML onde preencho 2 campos: "Nome 1" e "Nome 2".

Ao enviar o formulário com os 2 campos preenchidos, são gravados no bando de dados ACCESS os registros nome 1, nome 2 e a data atual, ficando assim(exemplo):

Registro 1: Fulano, Ciclano, 26/06/2015

Registro 2: Fulano, Ciclano, 27/06/2015

Registro 3: Fulano, Ciclano, 30/06/2015

Até aí, tudo lindo

A dúvida é: Como fazer para que o ASP permita esse mesmo procedimento apenas 3 vezes por semana (a cada 7 dias)? Gostaria que na quarta tentativa de registro onde nome 1 e nome 2 são os mesmos informados nos 3 registos anteriores, o ASP barre essa quarta inserção dos dados se o número de dias for menor que 7 (uma semana).

Desculpem por não conseguir me expressar com mais clareza, foi o máximo que consegui rs.

Obrigado a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

simples, antes de gravar faça

SQL = "select * FROM TABELA where CAMPO1 = '" & VAR1 & "' and CAMPO2 = '" & VAR1 & "' and CAMPODATA BETWEEN '" & DATA1 & "' and '" & DATA2 & "'"
Set RS=Server.CreateObject("ADODB.Recordset")
RS.Open SQLPegarConsulta, objConn

if RS.eof then
else
	NumReg = 1
	While Not RS.Eof
		NumReg = NumReg + 1
	RS.MoveNext : Wend
end if

if NumReg < 3 then
	GRAVA
else
	MSG NÃO GRAVA
end if

A única "confusão", seria em qual data quer comparar

- Se é de hoje a 7 dias

- Na semana (ai vc teria que pegar o primeiro dia da semana e comparar até hoje

...

enfim tem um monte de possibilidades

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ronaldo,

Obrigado por responder.

 

Ainda não consegui chegar à uma solução.
Fiz a implementação utilizando o código informado por você mas as inserções não se restringem às 3 por semana, que realmente preciso.

 

Dê uma olhada, por favor, no meu código:

## INÍCIO VARIÁVEIS ##

dim DATA1
DATA1 = date()
dim DATA2
DATA2 = date() + 7
session.lcid=1046
dim hora
hora = date()

## FIM VARIÀVEIS ##



cadastro = "select * from cadastros where nome1 = '"&(request.form("nome1"))&"' and nome2 = '"&(request.form("nome2"))&"' and data BETWEEN '" & DATA1 & "' and '" & DATA2 & "'"
set rs=conn.execute(cadastro)

Set RS=Server.CreateObject("ADODB.Recordset")
RS.Open cadastro, objConn



if RS.eof then
else
	NumReg = 1
	While Not RS.Eof
		NumReg = NumReg + 1
	RS.MoveNext 
	Wend
end if

if NumReg < 3 then
query3 = "insert into cadastros (nome1,nome2,data) values ('"&(request.form("nome1"))&"','"&(request.form("nome2"))&"','"&(DATA1)&"')" 
set recset=conn.execute(query3)

else

Response.Write "Não cadastra caso seja maior que 3 registros contendo os mesmos nomes."

end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeira coisa da um response.write na SLQ cadastro e posta ai.

 

outra coisa que não esta certo é esse date() + 7

 

ou seja esta vendo de hoje até 7 dias .. não entendi muito essa lógica

 

o certo seria ver algo na semana, sei lá.

 

mas posta a SQL consulta ai para ver

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc pode dar um DateAdd direto na SQL também

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde.

 

Com base nas dicas postadas pelos amigos, dei uma pesquisada e então fiz alguns ajustes no código.

Estamos quase lá.

Atualmente consigo inserir o mesmo registro até 3 vezes normalmente, porém ainda não está limitando de acordo com a data (7 dias).

 

O código modificado é:
Obs: Estou usando Access como base de dados.

Function pegaDataInicio()
dia = day(now)
mes = month(now)
ano = year(now)
pegaDataInicio = CStr(dia) + "/" + CStr(mes) + "/" + CStr(ano)
End Function


Function pegaDataFim()
dia = day(now) - 6
mes = month(now)
ano = year(now)
pegaDataFim = CStr(dia) + "/" + CStr(mes) + "/" + CStr(ano)
End Function


session.lcid=1046
dim hora
hora = now()

cadastro = "select * from cadastros where nome1 = '"&(request.form("nome1"))&"' and nome2 = '"&(request.form("nome2"))&"' and datafim BETWEEN '" & pegaDataInicio & "' and '" & pegaDataFim & "'"
set rs=conn.execute(cadastro)


if RS.eof then
else
	NumReg = 1
	While Not RS.Eof
		NumReg = NumReg + 1
	RS.MoveNext : Wend
end if

if NumReg < 4 then

query3 = "insert into cadastros (nome1,nome2,data,datafim) values ('"&(request.form("nome1"))&"','"&(request.form("nome2"))&"','"&(hora)&"','"&(pegaDataFim)&"')" 
set recset=conn.execute(query3)

else

Response.Write "Não cadastra caso seja maior que 3 registros contendo os mesmos nomes e no intervalo do SQL."

end if

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.