Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.09;
Скачать: CL | DM;

Вниз

Требуется динамически создать Calculated поле   Найти похожие ветки 

 
Boriz   (2002-11-21 15:48) [0]

Доброе время суток! Потребовалось применять caclulated поля, но выделять под это отдельную ADOStoredProc не хочется.
Вопрос: а как динамически создать calculated поле? Пробовал так:
var Fld: TField;
...
Fld:=TField.Create(nil);
Fld.FieldName:="test";
Fld.FieldKind:=fkCalculated;
Fld.Dataset:=SProc;
SProc.Fields.Add(Fld);
Sproc.Open;


На SProc.Open выдается сообщение, что поле test не может быть calculated или lookup полем.
Что я упустил?


 
Prooksius ©   (2002-11-21 15:57) [1]

TFieldDefs.AddFieldDef - посмотри хелп Delphi - может так можно...


 
Boriz   (2002-11-21 16:01) [2]

Все получилось. Просто был невнимателен ;o)

if SP.Active then Sp.Close;
SP.ProcedureName:="usp_test";
SP.Parameters.Clear;
SP.Parameters.CreateParameter("@param", ftInteger, pdInput, SizeOf(integer), 0);
Fld:=TStringField.Create(SP);
Fld.FieldName:="regnum_obj";
Fld.Dataset:=SP;
Fld.Alignment:=taRightJustify;
Fld.FieldKind:=fkCalculated;
SP.OnCalcFields:=CalcFields;
SP.Open;
SP.First;
Memo1.Clear;
While not SP.EOF do begin
Memo1.Lines.Add(SP.FieldByName("code").AsString+" - "+SP.FieldByName("regnum_obj").AsString);
SP.Next;
end;
SP.Close;

end;

procedure TForm1.CalcFields(DataSet: TDataSet);
begin
if SP.FieldByName("code").AsInteger > 10 then
SP.FieldByName("regnum_obj").AsString:="БОЛЬШОЙ"
else
SP.FieldByName("regnum_obj").AsString:="маленький";

Вот и все ;o)



Страницы: 1 вся ветка

Текущий архив: 2002.12.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
8-28135
sanbah
2002-03-22 15:48
2002.12.09
Мультимедиа


1-28045
Кокандокало
2002-11-27 19:07
2002.12.09
Как скрольнуть TStringGrid


1-28071
Manulo
2002-11-24 16:23
2002.12.09
хм... текстовый файл


14-28258
deep.1
2002-11-17 22:31
2002.12.09
Люди, а кто нить знает о замене консоли под Вынь


4-28353
Subfire
2002-10-28 13:03
2002.12.09
Открытие заблокированного файла