Ужасная проблема, которая уже стоила мне много времени. Наконец я нашел обходной путь, описанный здесь (спасибо вам, ребята!):
http://www.delphigroups.info/3/6/171869.html
Сводка: виновником являются определения полей основного клиентского набора данных, то есть того, который содержит поля ftDataset. Как только определения полей основного клиентского набора данных не пусты, команда CreateDataSet завершается ошибкой с описанным выше сообщением об ошибке («Недопустимый тип поля»).
Обход:
Создайте таблицы основных данных в соответствии с инструкциями, но убедитесь, что определения полей пусты при выполнении CreateDataset:
a) Время разработки: перед тем, как вы выполните «основной набор данных | RightClick | Create DataSet» в форме проектирования, вы должны нажать на основной набор данных, перейти к инспектору объектов, нажать «FieldDefs» и удалить все поля в «FieldDefs». окно. (В самый первый раз, когда вы построили основной набор данных, его там все равно нет, но позже они есть.) Только после этого создайте набор данных. (Я сам попробовал это с Delphi 2007; это работает.)
b) Время выполнения: вызовите [Name of Masterdataset]. FieldDefs.Clear перед тем, как выполнить [Name of Masterdataset] .CreateDataSet. (Я сам не пробовал, но это достоверно описано в указанной выше ссылке.)
Если это было слишком сложно, пожалуйста, посмотрите на вышеупомянутую ссылку.