Oder so
Form1.SQLQuery1.ParamByName('fk_category_id').Value := nil;
, aber Clear ist schon schöner.
Etwa so? Will aber irgendwie nicht so recht...
Irgendwie?
Da steht doch genau in der Fehlermeldung drin, was da nicht geht.
Oder würdest du auch ein
Form1.SQLQuery1.ParamByName('fk_category_id').AsInteger := 'abc';
oder
Form1.SQLQuery1.ParamByName('fk_category_id').AsString := 123;
veruchen?
Eine weitere Frage ist aber auch:
Warum ist der ganze Code in TForm2 drin, obwohl über 50% der Zugriffe auf TForm1 gehen?
Das würde doch wohl eher in eine Methode der TForm1 gehören und die Werte z.B. als Parameter übergeben.