Hi Forum
ich erstelle eine Tabelle die mir das Startdatum von Prod.-Aufträgen liefern soll.
Das Enddatum und die Durchlaufzeit sind bekannt und in einer Tab erfasst.
In einer Kalendertabelle sind jeweils Datum und Arbeitstage erfasst. 1= Arbeitstag, 2=kein Arbeitstag.
Bei folgendem Code rechnet der Cursor bis er auf einen freien Tag kommt.
Wo liegt der Hund begraben ?
System: mssql 2005
Danke für die Hilfe
Bibi
ich erstelle eine Tabelle die mir das Startdatum von Prod.-Aufträgen liefern soll.
Das Enddatum und die Durchlaufzeit sind bekannt und in einer Tab erfasst.
In einer Kalendertabelle sind jeweils Datum und Arbeitstage erfasst. 1= Arbeitstag, 2=kein Arbeitstag.
Bei folgendem Code rechnet der Cursor bis er auf einen freien Tag kommt.
Wo liegt der Hund begraben ?
System: mssql 2005
Danke für die Hilfe
Bibi
Code:
BEGIN
SET @BERECH_ID = @BERECH_ID + 1 -- setzt BERECH_ID auf aktuellen DS
SET @ZTotal = (SELECT ZTotal -- holt Anzahl Arbeitstage
FROM dbo.Temp_BERECHNUNG
WHERE BERECH_ID = @BERECH_ID)
DECLARE CurProdstart CURSOR LOCAL KEYSET
FOR
SELECT Kal_Datum, AT -- AT: 1 Arbeitstag, 2 kein Arbeitstag
FROM dbo.Temp_KALENDER
FOR UPDATE
OPEN CurProdstart
DECLARE @Kal_Datum SMALLDATETIME, @AT INT
FETCH LAST FROM CurProdstart INTO @Kal_Datum, @AT -- letzter DS in dbo.Temp_KALENDER
WHILE @ZTotal >= 1
BEGIN
WHILE @AT = 2 -- 2 kein Arbeitstag
BEGIN
FETCH PRIOR FROM CurProdstart INTO @Kal_Datum, @AT -- solang AT = 2 >1 Tag zurück
END
FETCH PRIOR FROM CurProdstart INTO @Kal_Datum, @AT
SET @ZTotal = @ZTotal -1 -- sonst Arbeitstage -1
END
END