La cláusula
IN en Firebird 1.5 tiene un límite de 1.500 elementos, puesto que dices da error en 100 o 200, creo es la forma de añadirlo al query.
No entiendo por qué accedes al SQL con índices (entre corchetes), no deberías pensar que tienes espacio en memoria asignado para trabajar con él. Dicho de otra forma, usa los métodos Add que tiene la propiedad sql.
Supongo que dicha restricción del where, lo haces en tiempo de ejecución, así que no tendrás problemas con los strings. Atención al "Add":
Código Delphi
[-]
ClientDataSetCliente.Close;
QueryCliente.SQL.Add('Where (Cliente in (1,2,3,4,10,12))');
ClientDataSetCliente.open;
También podrías partir la cadena, incluso para hacerla más legible:
Código Delphi
[-]QueryCliente.SQL.Add('Where ');
QueryCliente.SQL.Add(' Cliente in (1,2,3,4,' );
QueryCliente.SQL.Add(' 10,12)');
Saludos