У меня есть модуль данных с несколькими TClientDataSets
с полями и определениями полей, без провайдера.
Мое недавнее время разработки меняется на все это:
TT_APIVERSION
Если есть одно или несколько полей с FieldKind = fkInternalCalc
, я получаю сообщение об ошибке «Имя не уникально в этом контексте».
Изменение их на fkCalculated
«решает» проблему (но мне пришлось проверить свои обработчики OnCalcField
, чтобы убедиться, что они также работают для State = dsCalcFields
)
Это код, который прошел через несколько версий Delphi, текущая версия Alexandria 28.0.44500.8973
Мы делали подобные модификации раньше, когда я начинал, в наборах данных было Active=true
, а форма содержала PersistDataPacket.Data
капли.
Является ли это (новой) ошибкой Delphi или я что-то пропустил в полях fkInternalCalc
?
Удалите все поля, определенные как fkInternalCalc
, из коллекции FieldDefs
перед любым вызовом CreateDataset
(а также щелкните правой кнопкой мыши «Создать набор данных»).
Не знаю, баг это или фича, но CreateDataset
пытается добавить fkInternalCalc
поля в FieldDefs
коллекцию, не проверяя, существовала ли она ранее.
Если у вас есть все FieldDefs
и соответствующие Fields
, вы также можете удалить все элементы из коллекции FieldDefs
, определения полей будут созданы заново.