твоя проблема в том, что ты не обрамил тело цикла в begin..end. Соотв. в цикле у тебя выполняется только первая команда.
Код:
for index:=0 to i do
begin
DataModule2.ExDS.Insert;
DataModule2.ExDS.FieldValues['Номер экземпляра']:=index+1;
DataModule2.ExDS.Post;
end;
Можно, конечно, добавлять запросами через ADOCommand (кстати, если не изменяет память, то подобный запрос можно выполнить и через ADOConnection, вроде у него есть метод ExecSQL), но с точки зрения выполняемых комманд это будет абсолютно тоже самое, только, в случае использования прямого запроса, надо будет еще и перечитать открытый DataSet. Тут надо смотреть что же тебе надо на самом деле.