Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Вниз

Требуется динамически создать 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
14-28269
wandp
2002-11-19 04:44
2002.12.09
HELP с Картой


1-28056
vaneks
2002-11-27 21:30
2002.12.09
Файлы... Они есть?


4-28365
Nomad.kz
2002-10-23 14:58
2002.12.09
определить размер файла


1-28046
Владислав
2002-11-28 19:06
2002.12.09
TImageList & TImage


8-28144
Adil
2002-08-25 18:54
2002.12.09
Эквалайзер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский