esta deberia ir asi y no trabajar con el recordcount, para eso no necesitas sacar el maximo
Código Delphi
[-]
w_maximo : Integer;
Query1.Active:=False;
Query1.SQL.Clear;
Query1.SQL.Add('select max(id_planti) as maximo from planti_corr');
Query1.Active:=True;
w_maximo := query1.fieldbyname('maximo').asinteger + 1;
Query1.Active:=False;
Otra cosa es el tipo de campo, dependiendo el tipo de base de datos, por ejemplo en paradox no te permite guardar un integer en un campo declarado como smallint
Por el error que dices que te da, Type minsmatch esta normalmente asociado a este tipo de situaciones
Saludos