1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| USE [maBASE]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[ut_DocSupprim]
(
@IdDoc int = null
)
As
/* set nocount on */
declare @nb int,
@IdVer int,
@Titre varchar(100),
@Rev smallint,
@Sql varchar (255)
SELECT @nb= count(*)
FROM Documents
WHERE (IdDoc = @IdDoc)
if @nb=0
begin
return 'Document inexistant'
end
SELECT @Titre=DocTitre
FROM Documents
WHERE (IdDoc = @IdDoc)
SELECT @nb= count(*)
FROM Menu
WHERE (IdDoc = @IdDoc)
if @nb>0
begin
return 'Suppression impossible, le document '''+@Titre+''' est lié à un menu'
end
--suppression de la dernière version du document
SELECT top 1 @IdVer=IdVer
FROM DocVersions
WHERE (IdDoc = @IdDoc)
ORDER BY DocRev DESC
set @Sql = 'DELETE FROM Form_Cases WHERE IdVer = ' + convert(varchar(10),@Idver)
--execute (@Sql)
set @Sql = 'DELETE FROM DocVersions WHERE IdVer = ' + convert(varchar(10),@Idver)
--execute (@Sql)
SELECT @nb= count(*)
FROM DocVersions
WHERE (IdDoc = @IdDoc)
if @nb=0
-- suppression du document s'il ne reste plus aucune version
begin
--si le doc est réservé à des groupes, il faut supprimer les réservations
SELECT @nb= count(*)
FROM BS_GROUPE_DOCUMENT
WHERE (IdDoc = @IdDoc)
if @nb>0
begin
set @Sql = 'DELETE FROM BS_GROUPE_DOCUMENT WHERE IdDoc = ' + convert(varchar(10),@IdDoc)
--execute (@Sql)
end
--suppression du document
set @Sql = 'DELETE FROM Documents WHERE IdDoc = ' + convert(varchar(10),@IdDoc)
--execute (@Sql)
return 'Document '''+@Titre+''' supprimé.'
end
else
-- s'il reste encore une version, mise à jour de la table document
begin
SELECT top 1 @Rev=DocRev
FROM DocVersions
WHERE (IdDoc = @IdDoc)
ORDER BY DocRev DESC
UPDATE Documents set DocRev=@Rev, Valid_Date=NULL, Valid_Id=NULL
FROM Documents
WHERE(IdDoc = @IdDoc)
end
return 'Dernière version du document '''+@Titre+''' supprimée.' |
Partager