Controle sur date

virose - 16 sept. 2013 à 09:21
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 - 16 sept. 2013 à 14:13
Bonjour,

j'ai une requête qui fait les prévisions congés pour une année donnée, je voudrais savoir si c possible, dans cette requête d'interdire l'insert des prévisions des années antérieure?
comment je fais?
et qu'elle est l'instruction qui me permet de contrôler les dates??

5 réponses

sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
16 sept. 2013 à 10:53
Salut,

C'est quel SGBD que tu utilises ?
0
Sql server 2008
0
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
16 sept. 2013 à 11:20
0
pour être plus claire regardez cette Procédure stockée qui me permet de faire des prévisions congé.

l'idéal serait d'interdire les prévisions antérieur au mois et année actuel

ALTER procedure [dbo].[CongeAgtPrevisionInsert]
(
@IDAGENT int
,@MOISID int
,@ANNEEID int
,@CONGEIDTYPE int
,@IDVILLE int
,@message varchar(100) out
)
as
Begin tran insertion
if exists(select * from PREVISIONCONGES where IDAGENT=@IDAGENT and ANNEEID=@ANNEEID)
begin
set @Message='Vous avez déjà fait une prévision Congé pour le mois de : ' +
(select LIBELLEMOIS from MOIS join PREVISIONCONGES on MOIS.MOISID=PREVISIONCONGES.MOISID
where IDAGENT=@IDAGENT and ANNEEID=@ANNEEID );
if exists (select * from PREVISIONCONGES where IDAGENT=@IDAGENT and ANNEEID=@ANNEEID)
begin
set @Message='Vous avez déjà fait une prévision formation pour le mois de : ' +
(SELECT dbo.MOIS.LIBELLEMOIS FROM dbo.MOIS INNER JOIN dbo.FORMATIONPREVISION ON dbo.MOIS.MOISID = dbo.FORMATIONPREVISION.MOISID)


rollback tran insertion

end
else
BEGIN
INSERT INTO [MOBILITE].dbo.PREVISIONCONGES
([IDAGENT]
,[MOISID]
,[ANNEEID]
,[CONGEIDTYPE]
,[IDVILLE]
)
VALUES
(@IDAGENT
,@MOISID
,@ANNEEID
,@CONGEIDTYPE
,@IDVILLE
)
set @message = 'Prévision Congé Envoyée avec succès pour le mois de:'+
(select LIBELLEMOIS from MOIS join PREVISIONCONGES on MOIS.MOISID=PREVISIONCONGES.MOISID
where IDAGENT=@IDAGENT and ANNEEID=@ANNEEID );

commit
end
end
0
J'explique mon code


ALTER procedure [dbo].[CongeAgtPrevisionInsert]
(
@IDAGENT int
,@MOISID int
,@ANNEEID int
,@CONGEIDTYPE int
,@IDVILLE int
,@message varchar(100) out
)
as
Begin tran insertion

///// Vérification si l'agent n'a jamais fait une prévision pour l'année en cours et ensuite affiche le message /////////

if exists(select * from PREVISIONCONGES where IDAGENT=@IDAGENT and ANNEEID=@ANNEEID)
begin
set @Message='Vous avez déjà fait une prévision Congé pour le mois de : ' +
(select LIBELLEMOIS from MOIS join PREVISIONCONGES on MOIS.MOISID=PREVISIONCONGES.MOISID
where IDAGENT=@IDAGENT and ANNEEID=@ANNEEID );

else
BEGIN
INSERT INTO [MOBILITE].dbo.PREVISIONCONGES
([IDAGENT]
,[MOISID]
,[ANNEEID]
,[CONGEIDTYPE]
,[IDVILLE]
)
VALUES
(@IDAGENT
,@MOISID
,@ANNEEID
,@CONGEIDTYPE
,@IDVILLE
)
set @message = 'Prévision Congé Envoyée avec succès pour le mois de:'+
(select LIBELLEMOIS from MOIS join PREVISIONCONGES on MOIS.MOISID=PREVISIONCONGES.MOISID
where IDAGENT=@IDAGENT and ANNEEID=@ANNEEID );

commit
end
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
16 sept. 2013 à 14:13
Sur SQLServer, tu as les fonctions :
- YEAR() qui te retourne l'année d'une date,
- MONTH() qui te retourne le mois d'une date,
- CURRENT_TIMESTAMP qui te retourne la date et heure du moment

Avec ça, tu devrais pouvoir t'en sortir
0
Rejoignez-nous