Avatar billede hugopedersen Nybegynder
04. december 2001 - 10:08 Der er 1 løsning

Hvad er der forkert her

Jeg har en stored procedure som følgende

Alter PROCEDURE proc_FindNewNextDate AS

  DECLARE c_Candidates CURSOR FOR
    SELECT fldFrekvens,
          fldCalcDate,
          fldLastCal
    FROM tblStamData
    WHERE  fldFrekvens > 0
  FOR UPDATE OF fldNextCal

  DECLARE @currFrekvens INTEGER
  DECLARE @currCalcDate DATETIME
  DECLARE @currLastDate DATETIME
  DECLARE @i INTEGER

  OPEN c_Candidates

  FETCH NEXT FROM c_Candidates INTO @currFrekvens, @currCalcDate, @currLastDate

  WHILE (@@FETCH_STATUS = 0)
    BEGIN
    SET @i = 1
    WHILE (DATEADD(mm, @i*@currFrekvens, @currCalcDate) <= @currLastDate OR DATEADD(mm, @i*@currFrekvens, @currCalcDate) <= GETDATE())
      SET @i = @i + 1
      UPDATE tblStamData SET fldNextCal = DATEADD(mm, @i*@currFrekvens, @currCalcDate) WHERE CURRENT OF c_Candidates
      FETCH NEXT FROM c_Candidates INTO @currFrekvens, @currCalcDate, @currLastDate
    END

  CLOSE c_Candidates
  DEALLOCATE c_Candidates

Forklaring :
fldFrekvens - antal måneder mellem kalibrering
fldCalcDate - dato hvor beregning starter fra
fldLastCal  - dato hvor værktøj sidst er kalibreret
fldNextCal  - dato for næste kalibrering

Det der skal ske er at der hele tiden lægges fldFrekvens måneder til fldCalcDate indtil den første dato efter dags dato. Den fundne dato skrives så i fldNextCal

Den virker ikke helt efter hensigten. Det der sker forkert er så vidt jeg kan se at der bliver lagt fldFrekvens måneder for meget til før den nye dato skrives i fldNextCal, men jeg kan ikke lige se hvorfor.

Kan nogen hjælpe ?


Avatar billede hugopedersen Nybegynder
23. januar 2002 - 15:08 #1
Lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester