Создание вычисляемых полей в Run-Time (FIBPlus 4.8.1)
Добавлено: 30 янв 2006, 10:52
столкнулся с такой проблемой: создаю вычисляемые поля в TpFIBDataSet только почему то при открытиии онного эксепшины лезут, ноги растут из модуля FIBDataSet
сначало при обработке последнего поля вылазит далее появляются след ексепшны "DataSet.Field Размер поля слишком мал".
вот код который у меня выполняется перед открытием DataSet
подскажите что в коде не так или может какие настройки особые должны в TpFIBDataSet ставится чтобы таким образом поля можно было добавлять? 
Код: Выделить всё
function TFIBCustomDataSet.GetXSQLVAR(Fld:TField):TXSQLVAR;
Код: Выделить всё
feXSQLDAIndexOutOfRange
вот код который у меня выполняется перед открытием DataSet
Код: Выделить всё
//1) получаем описание полей запроса
dstMain.FieldDefs.Update;
//2) добавляем описание нового вычисляемого поля
with dstMain.FieldDefs.Insert(0) as TFieldDef do begin
Name := 'zzz';
DataType := ftFloat;
end;
//3) создаем все описанные поля
for i := 0 to dstMain.FieldDefs.Count-1 do begin
if dstMain.FindField(dstMain.FieldDefs[i].Name) = nil then
dstMain.FieldDefs[i].CreateField(dstMain);
end;
//4) настраиваем вычисляем поле
if dstMain.FindField('zzz') <> nil then begin
dstMain.FindField('zzz').FieldKind := fkCalculated;
dstMain.FindField('zzz').DisplayLabel := 'calc';
dstMain.FindField('zzz').Visible := True;
end;
//5) открываем DataSet
dstMain.Open;
