SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE sp_SGMChangeJour AS
BEGIN
BEGIN TRANSACTION transac1
-- copie des enregistrement d'hier
-- passage de la date des copies a NuLL
-- regroupement des comptes
insert into T_FAM(FAM, SSFAM, Date, cpt1, cpt2)
select T_FAM, FAM, SSFAM, null, sum(cpt1) as CPT1, sum(cpt2) as CPT2
from T_FAM
where Date <= dateadd(day,-1, getdate())
group by FAM, SSFAM
-- On dispose desormais des enregistrements en double
-- on efface alors les enregistrements disposant d'une date
DELETE FROM T_FAM
where T_FAM_ID in(select T_FAM_ID from T_FAM
where Date <= dateadd(day,-1, getdate()))
-- ilk nous reste a ce moment que les enregistrements a date = null ayant le compte a jour
-- et ceux d'auj'
-- maj de date nulle a hier
UPDATE T_FAM set Date = dateadd(day,-1, getdate())
where Date is null
IF @@error <> 0
ROLLBACK TRANSACTION transac1
ELSE
COMMIT TRANSACTION transac1
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
-- appel de la procédure ds vb.net
-- maCommande.CommandType = CommandType.StoredProcedure
-- maCommande.CommandText = "sp_SGMChangeJour"
-- maCommande.Connection = maConnection
-- maCommande.ExecuteNonQuery()