virose
-
16 sept. 2013 à 09:21
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDerniè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??
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 );
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
sp40
Messages postés1276Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 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
16 sept. 2013 à 11:07