- Este tópico contém 3 respostas, 3 vozes e foi atualizado pela última vez 17 anos, 4 meses atrás por
Rodrigo Mesquita.
-
AutorPosts
-
18 de novembro de 2008 às 10:36 pm #83841
Rodrigo Mesquita
ParticipanteSenhores,
Estou com um problema e gostaria de sugestões.Tenho uma tabela de cadastro de formato de documentos.Nela eu cadastro os períodos em que cada formato estará válido.
Ex.:
COD_FORMATO, DATA_INICIO, DATA_FIM
001 01/11/2008 15/12/2008
002 15/12/2008 23/12/2008
003 24/12/2008A aplicação pesquisa durante o período que eu estiver utilizando qual o documento que estará válido naquele momento.Notem que se eu tiver trabalhando no dia 15/12/2008. De acordo com os dados acima eu vou ter o modelo 001 e o 002 válido.
O que preciso é de uma idéia de como validar para que toda vez que eu for inserir um formato novo, eu não permita colocar um período em que algum dia deste período caia no mesmo dia que um período já cadastrado.
18 de novembro de 2008 às 10:47 pm #83842Leonardo Litz
ParticipanteCara isso é muito fodastico… ja trabalhei em um projetim que tinha data de vigencia, vc tem que validar o seguinte:
Periodo
01/01/2000 a 01/12/2000
o novo periodo nao pode esta contido dentro do periodo antigo
exemplo: nao pode ser 01/06/2000 a 01/10/2000o novo periodo nao pode abranger o periodo antigo
exemplo: nao pode ser 01/12/1999 a 01/01/2001o novo periodo nao pode intercalar o periodo antigo
exemplo: nao pode ser 01/12/1999 a 10/06/2000
ou : nao pode ser 10/10/2000 a 01/02/2001É teoria dos conjuntos pura.
Teste o seguinte:
Se a menor data do periodo a ser inserido é maior que a maior data do periodo existente
ou
Se a maior data do periodo a ser inserido é menor que a menor data do periodo existente.Lógico que vc tem que consistir que no periodo a data inicial deve ser menor que a data final.
Blz? Qualquer duvida posta ai…
Vlw Leonardo Litz
18 de novembro de 2008 às 10:57 pm #83844Regis Araujo
ParticipanteOla Rodrigo, boa tarde!
Bom, acho que isto deve ser validado no momento da inserção de um novo período, onde você deverá validar se o valor que será inserido na DATA_INICIO já existe na DATA_FIM, se sim, você deve acrescentar +1 no valor, mas ai também vai depender de qual o período de validade deste formato, se for período pré-determinado, você também terá que somar +1 no DATA_FIM.
Bom, se eu entendi bem.. é isto..
Abraços…
19 de novembro de 2008 às 3:18 pm #83856Rodrigo Mesquita
ParticipanteSenhores,
Consegui efetuar a validação, segue abaixo para quem precisar
function VERIFICA_PERIODO(pInicio in Date, pTermino in Date) return boolean is
Cursor cPeriodo Is (Select data_inicio,
data_termino
From Modelos_Documentos M
Where (m.data_inicio Between pInicio And pTermino Or
m.data_Termino Between pInicio And pTermino));
vResult Boolean;
Begin
vResult := True;
For i In cPeriodo Loop
If i.data_inicio Is Not Null And i.data_termino Is Null Then
If pInicio Is Not Null Then
If pInicio > i.data_inicio Then
vResult := False;
End If;
End If;
If pTermino Is Not Null Then
If pTermino > i.data_inicio Then
vResult := False;
End If;
End If;
Else
If pInicio Between i.data_inicio And i.data_termino Then
vResult := False;
End If;
If pTermino Between i.data_inicio And i.data_termino Then
vResult := False;
End If;
End If;
End Loop;
return(vResult);
end VERIFICA_PERIODO; -
AutorPosts
- Você deve fazer login para responder a este tópico.