Guten Tag beisammen,
leider stoße ich erneut auf ein Problem mit Firebird 2.5.
Ich bin dabei, diverse Funktionen in den Server zu verlagern. Dabei wird auf eine Variable immer mit einem Fehler reagiert.
Sicherlich ein Syntaxfehler
SET TERM ^ ;
/* Automatisches Löschen der Monatswerte und der abhängigen Felder in der Auswertung */
CREATE TRIGGER Fehl_changetables FOR Fehltage
ACTIVE after INSERT OR UPDATE OR DELETE
POSITION 0
AS
declare variable refdate Date;
BEGIN
/* falls insert, dann ist old leer */
if (old.StartDatum is NULL) then
begin
/* In einer Schleife abarbeiten */
refdate = new.startdatum;
while (refdate <= new.Enddatum) do
begin
delete from monatswerte m where (m.monat = extract(month from refdate)) and (m.jahr = extract(year from refdate));
delete from auswertungen a where (a.Datum = refdate);
refdate = refdate + 1;
end
end
else
/* ab hier update oder delete */
begin
/* In einer Schleife abarbeiten */
refdate = old.startdatum;
while (refdate <= old.Enddatum) do
begin
delete from monatswerte m where (m.monat = extract(month from refdate)) and (m.jahr = extract(year from refdate));
delete from auswertungen a where (a.Datum = refdate);
refdate = refdate + 1;
end
end
END^
SET TERM ; ^
Was ist daran falsch?
Zur Erklärung:
In einer Tabelle "Fehltage" wurde eine Änderung vorgenommen.
Die Berechnungen in den Tabellen Monatswerte und Auswertungen sollen gelöscht werden.
Dazu ist der Datumsbereich in der while- Schleife abzuarbeiten.
Fehlermeldung
Die Variable in Fett wird bemängelt. Könnt ihr mir helfen?
Vielen Dank und Gruß
Peter
leider stoße ich erneut auf ein Problem mit Firebird 2.5.
Ich bin dabei, diverse Funktionen in den Server zu verlagern. Dabei wird auf eine Variable immer mit einem Fehler reagiert.
Sicherlich ein Syntaxfehler
SET TERM ^ ;
/* Automatisches Löschen der Monatswerte und der abhängigen Felder in der Auswertung */
CREATE TRIGGER Fehl_changetables FOR Fehltage
ACTIVE after INSERT OR UPDATE OR DELETE
POSITION 0
AS
declare variable refdate Date;
BEGIN
/* falls insert, dann ist old leer */
if (old.StartDatum is NULL) then
begin
/* In einer Schleife abarbeiten */
refdate = new.startdatum;
while (refdate <= new.Enddatum) do
begin
delete from monatswerte m where (m.monat = extract(month from refdate)) and (m.jahr = extract(year from refdate));
delete from auswertungen a where (a.Datum = refdate);
refdate = refdate + 1;
end
end
else
/* ab hier update oder delete */
begin
/* In einer Schleife abarbeiten */
refdate = old.startdatum;
while (refdate <= old.Enddatum) do
begin
delete from monatswerte m where (m.monat = extract(month from refdate)) and (m.jahr = extract(year from refdate));
delete from auswertungen a where (a.Datum = refdate);
refdate = refdate + 1;
end
end
END^
SET TERM ; ^
Was ist daran falsch?
Zur Erklärung:
In einer Tabelle "Fehltage" wurde eine Änderung vorgenommen.
Die Berechnungen in den Tabellen Monatswerte und Auswertungen sollen gelöscht werden.
Dazu ist der Datumsbereich in der while- Schleife abzuarbeiten.
Fehlermeldung
SQL Message : -206
Column does not belong to referenced table
Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -206
Column unknown
REFDATE
At line 16, column 69
Column does not belong to referenced table
Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -206
Column unknown
REFDATE
At line 16, column 69
Vielen Dank und Gruß
Peter
Comment