Kann mir mal irgendjemand erklären, wieso eine zu vergleichende Zahl vor dem Vergleich in einen String gewandelt wird? Nochmal: verwende
SQL-Parameter, mit diesem ganzen Gequote bekommst Du nicht nur falsche Ergebnisse, sondern bist auch anfällig für
SQL-Injection.
Delphi-Quellcode:
DM1.DataModule1.IBCQuery1.SQL.Text := 'select VERANSTALTUNGSID from VERANSTALTUNGEN where EXTRACT(YEAR from DatumStart) <= :Anfang and EXTRACT(YEAR from DatumEnde) >= :Ende';
DM1.DataModule1.IBCQuery1.ParamByName('Anfang').AsInteger := J;
DM1.DataModule1.IBCQuery1.ParamByName('Ende').AsInteger := J;
Das sollte alle Veranstaltungen liefern, die im betreffenden Jahr begonnen haben oder enden bzw. die das komplette Jahr überlappen.