init
This commit is contained in:
@@ -0,0 +1,200 @@
|
||||
IF OBJECT_ID('sp_GetTeremrend') IS NOT NULL
|
||||
BEGIN
|
||||
DROP PROCEDURE sp_GetTeremrend
|
||||
END
|
||||
GO
|
||||
CREATE PROCEDURE [sp_GetTeremrend]
|
||||
@TanevId int,
|
||||
@IntezmenyId int
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @OrarendiOra TABLE (Hetirend int, OraSzam int, Hetnapja int, Terem nvarchar(max), Foglalkozas nvarchar(max)) --Összes órarendi óra
|
||||
DECLARE @Hetirendek TABLE (Hetirend int) --Összes hetirend
|
||||
DECLARE @Ures TABLE (Hetirend int, OraSzam int, Hetnapja int, Terem nvarchar(max)) --Összes hetirendhez órasávok generálva
|
||||
DECLARE @Teljes TABLE (Hetirend int, OraSzam int, Hetnapja int, Terem nvarchar(max), Foglalkozas nvarchar(max)) --@Ures tábla, a létező órákkal kiegészítve
|
||||
|
||||
DECLARE @AktivtanevId INT = (SELECT ID FROM T_TANEV_OSSZES TANEV WHERE C_AKTIV='T' AND C_INTEZMENYID=@IntezmenyId)
|
||||
|
||||
DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_NAPDATUMA FROM T_NAPTARINAP_OSSZES WHERE C_NAPTIPUSA=1395 AND C_INTEZMENYID=@intezmenyId AND C_TANEVID=@tanevid AND TOROLT='F')
|
||||
|
||||
DECLARE @HetEleje DATE
|
||||
DECLARE @HetVege DATE
|
||||
|
||||
IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap)
|
||||
BEGIN
|
||||
SET @HetEleje =(SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, NH.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid and nh.C_INTEZMENYID=@intezmenyId)
|
||||
SET @HetVege =(SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid and nh.C_INTEZMENYID=@intezmenyId)
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
|
||||
SET @HetEleje =(SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId AND NH.C_INTEZMENYID=@intezmenyId)
|
||||
SET @HetVege =(SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId AND NH.C_INTEZMENYID=@intezmenyId)
|
||||
END
|
||||
|
||||
-- @Hetirendek tábálába inzertálás
|
||||
INSERT INTO @Hetirendek
|
||||
SELECT DISTINCT C_HETIREND
|
||||
FROM T_ORARENDIORA_OSSZES WHERE TOROLT='F' AND C_TANEVID=@TANEVID AND C_INTEZMENYID=@IntezmenyId
|
||||
|
||||
-- @OrarendiOra tábálába inzertálás
|
||||
INSERT INTO @OrarendiOra
|
||||
SELECT C_HETIREND,
|
||||
OrarendiOra.C_ORASZAM,
|
||||
C_HETNAPJA,
|
||||
Terem.C_NEV,
|
||||
--Összefűzi a foglalkozásokat, ha teremre egyszerre több foglalkozás van felvéve egy órára
|
||||
STUFF(
|
||||
(SELECT DISTINCT ', ' + ISNULL(CAST(Foglalkozas.C_NEV AS VARCHAR(MAX)),'')
|
||||
FROM T_ORARENDIORA_OSSZES OrarendiOraFoglalkozas
|
||||
INNER JOIN T_FOGLALKOZAS_OSSZES Foglalkozas ON Foglalkozas.ID = OrarendiOraFoglalkozas.C_FOGLALKOZASID
|
||||
where OrarendiOraFoglalkozas.C_TEREMID = OrarendiOra.C_TEREMID AND
|
||||
(OrarendiOraFoglalkozas.C_HETIREND = OrarendiOra.C_HETIREND OR OrarendiOraFoglalkozas.C_HETIREND = 1554) AND
|
||||
OrarendiOraFoglalkozas.C_HETNAPJA = OrarendiOra.C_HETNAPJA AND
|
||||
OrarendiOraFoglalkozas.C_ORASZAM = OrarendiOra.c_oraszam AND
|
||||
((OrarendiOraFoglalkozas.C_ORAERVENYESSEGKEZDETE<=@HetEleje) and (OrarendiOraFoglalkozas.c_oraervenyessegvege>=@HetVege)or
|
||||
(OrarendiOraFoglalkozas.C_ORAERVENYESSEGKEZDETE>=@HetEleje) and (OrarendiOraFoglalkozas.C_ORAERVENYESSEGKEZDETE<=@HetVege)) AND
|
||||
Foglalkozas.TOROLT = 'F' AND
|
||||
Foglalkozas.C_INTEZMENYID = @IntezmenyId AND
|
||||
Foglalkozas.C_TANEVID = @TanevId AND
|
||||
OrarendiOraFoglalkozas.Torolt ='F' AND
|
||||
OrarendiOraFoglalkozas.C_TANEVID =@TanevId
|
||||
|
||||
FOR XML PATH('')),1,1,''
|
||||
) AS Foglalkozas
|
||||
FROM T_ORARENDIORA_OSSZES OrarendiOra
|
||||
INNER JOIN T_TEREM_OSSZES Terem ON Terem.ID = OrarendiOra.C_TEREMID
|
||||
WHERE OrarendiOra.C_INTEZMENYID = @IntezmenyId AND
|
||||
OrarendiOra.C_TANEVID = @TanevId AND
|
||||
OrarendiOra.TOROLT = 'F' AND
|
||||
OrarendiOra.C_TEREMID IS NOT NULL
|
||||
|
||||
|
||||
|
||||
-- @Ures tábálába inzertálás
|
||||
INSERT INTO @Ures
|
||||
SELECT HetiRend,
|
||||
OraSzam,
|
||||
Hetnapja,
|
||||
Terem
|
||||
FROM @Hetirendek
|
||||
CROSS JOIN (SELECT DISTINCT OraSzam FROM @OrarendiOra) OraSzam (OraSzam)
|
||||
CROSS JOIN (SELECT DISTINCT Terem FROM @OrarendiOra) Terem (Terem)
|
||||
CROSS JOIN (SELECT DISTINCT Hetnapja FROM @OrarendiOra) Hetnapja (Hetnapja)
|
||||
|
||||
|
||||
-- @Teljes tábálába inzertálás
|
||||
INSERT INTO @Teljes
|
||||
SELECT Ures.*,
|
||||
OrarendiOra.Foglalkozas
|
||||
FROM @Ures Ures
|
||||
LEFT JOIN @OrarendiOra OrarendiOra ON OrarendiOra.Hetirend = Ures.Hetirend AND
|
||||
OrarendiOra.Hetnapja = Ures.Hetnapja AND
|
||||
OrarendiOra.OraSzam = Ures.OraSzam AND
|
||||
OrarendiOra.Terem = Ures.Terem
|
||||
|
||||
-- Az Excel nyomtatvány munkalap- és táblázat nevei
|
||||
SELECT Hetnapja
|
||||
FROM (SELECT DISTINCT C_NAME Hetnapja,
|
||||
C_VALUE Sorrend
|
||||
FROM @OrarendiOra
|
||||
INNER JOIN T_DICTIONARYITEMBASE_OSSZES DictionaryItemBase on DictionaryItemBase.ID = Hetnapja
|
||||
) Hetnapja
|
||||
ORDER BY Sorrend
|
||||
|
||||
SELECT Hetirend
|
||||
FROM (SELECT DISTINCT C_NAME Hetirend,
|
||||
C_VALUE Sorrend
|
||||
FROM @Hetirendek
|
||||
INNER JOIN T_DICTIONARYITEMBASE_OSSZES DictionaryItemBase on DictionaryItemBase.ID = Hetirend
|
||||
--WHERE DictionaryItemBase.ID <> 1554--Minden hét
|
||||
) Hetirend
|
||||
ORDER BY Hetirend
|
||||
|
||||
-- @Teljes tábla feltöltése, fő lekérdezés
|
||||
DECLARE KurzorHetirend CURSOR FOR
|
||||
SELECT Hetirend
|
||||
FROM @Hetirendek
|
||||
--WHERE Hetirend <> 1554
|
||||
ORDER BY Hetirend
|
||||
|
||||
DECLARE @Hetirend INT
|
||||
|
||||
DECLARE KurzorHetnapja CURSOR FOR
|
||||
SELECT DISTINCT Hetnapja
|
||||
FROM @Ures
|
||||
ORDER BY Hetnapja
|
||||
|
||||
DECLARE @Hetnapja INT
|
||||
|
||||
OPEN KurzorHetirend
|
||||
FETCH NEXT FROM KurzorHetirend INTO @Hetirend
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
|
||||
OPEN KurzorHetnapja
|
||||
FETCH NEXT FROM KurzorHetnapja INTO @Hetnapja
|
||||
|
||||
-- A "Minden hét" óráinak inzertálása minden hetirendbe
|
||||
INSERT INTO @Teljes
|
||||
SELECT @Hetirend,
|
||||
OraSzam,
|
||||
Hetnapja,
|
||||
Terem,
|
||||
Foglalkozas
|
||||
FROM @OrarendiOra
|
||||
WHERE Hetirend = 1554
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
|
||||
CREATE table #VeglegesteremOrarend(Terem nvarchar(max), [0] nvarchar(max), [1] nvarchar(max), [2] nvarchar(max), [3] nvarchar(max), [4] nvarchar(max), [5] nvarchar(max),
|
||||
[6] nvarchar(max), [7] nvarchar(max), [8] nvarchar(max), [9] nvarchar(max), [10] nvarchar(max))
|
||||
|
||||
INSERT INTO #VeglegesTeremOrarend
|
||||
SELECT Vegleges.Terem,
|
||||
Vegleges.[0],
|
||||
Vegleges.[1],
|
||||
Vegleges.[2],
|
||||
Vegleges.[3],
|
||||
Vegleges.[4],
|
||||
Vegleges.[5],
|
||||
Vegleges.[6],
|
||||
Vegleges.[7],
|
||||
Vegleges.[8],
|
||||
Vegleges.[9],
|
||||
Vegleges.[10]
|
||||
FROM @Teljes
|
||||
|
||||
PIVOT
|
||||
(
|
||||
MAX(Foglalkozas) FOR OraSzam IN ([0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10])
|
||||
) Vegleges
|
||||
|
||||
WHERE Vegleges.Hetirend = @Hetirend AND
|
||||
Vegleges.Hetnapja = @Hetnapja
|
||||
|
||||
SELECT *
|
||||
FROM #VeglegesTeremOrarend
|
||||
|
||||
DROP TABLE #VeglegesTeremOrarend
|
||||
FETCH NEXT FROM KurzorHetnapja INTO @Hetnapja
|
||||
|
||||
END
|
||||
|
||||
FETCH NEXT FROM KurzorHetirend INTO @Hetirend
|
||||
CLOSE KurzorHetnapja
|
||||
|
||||
END
|
||||
|
||||
CLOSE KurzorHetirend
|
||||
DEALLOCATE KurzorHetnapja
|
||||
DEALLOCATE KurzorHetirend
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
Reference in New Issue
Block a user