Bei Parametern muss man vorsichtig sein, möglicherweise wird dann der Feld vom letzten Vorgang genommen. Also besser explizit auf NULL setzen.
Ok, sag ma wie mache ich das? Etwa so? Will aber irgendwie nicht so recht...
Form1.SQLQuery1.ParamByName('fk_category_id').AsInteger := nil;