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

Вниз

Как получить значение вычислимого поля?   Найти похожие ветки 

 
serg128   (2004-06-17 12:08) [0]

Как получить значение вычислимого поля, ну типа:                   x := ds.FieldByName("calcfld").AsString;
Если я так делаю, то возвращается пустое значение (хотя в датасете значение есть).


 
Sandman25 ©   (2004-06-17 12:13) [1]

Событие OnCalcField обрабатывается?


 
Соловьев ©   (2004-06-17 12:13) [2]


> хотя в датасете значение есть

в гриде смотришь?
а поле какого типа?


 
serg128   (2004-06-17 12:18) [3]

Поле TStringField, смотрю в гриде.


 
Соловьев ©   (2004-06-17 12:20) [4]


> Если я так делаю, то возвращается пустое значение

а тут как проверяешь?


 
Sandman25 ©   (2004-06-17 12:20) [5]

А строчка x := ... где находится? В каком обработчике?


 
serg128   (2004-06-17 12:21) [6]

> Событие OnCalcField обрабатывается?

Там нету такого события :((


 
Соловьев ©   (2004-06-17 12:22) [7]


> А строчка x := ... где находится? В каком обработчике?

телепат моде - on :)
OnCalcField :)


 
Соловьев ©   (2004-06-17 12:23) [8]


> Там нету такого события :((

там это где? вообще-то оно у датасета. Это не твоя прога?


 
Sandman25 ©   (2004-06-17 12:23) [9]

[6] serg128   (17.06.04 12:21)

OnCalcFields. Вы можете объяснить, что где у Вас происходит?


 
serg128   (2004-06-17 12:23) [10]

А строчка x := ... где находится? В каком обработчике?

Находится в OnButton1Click
а проверяю: ShowMessage(ds.FieldByName("calcfld").AsString);


 
Sandman25 ©   (2004-06-17 12:27) [11]

Если Вы не обрабатываете OnCalcFields, то ds.FieldByName("calcfld").AsString действительно будет возвращать пустую строку.


 
Anatoly Podgoretsky ©   (2004-06-17 12:27) [12]

Sandman25 ©   (17.06.04 12:23) [9]
Еще не вечер!


 
Соловьев ©   (2004-06-17 12:28) [13]


> Там нету такого события :((

так ты его в запросе может вычисляешь?


 
Domkrat ©   (2004-06-17 12:31) [14]

procedure Dm.MyDatasetCalcFields(DataSet: TDataSet);
begin
 with DataSet do
 begin
   FieldByName("calcfld").AsString:=
      FieldByName("FIELD1").AsString+
      FieldByName("FIELD2").AsString;
 end;
end;
К примеру


 
serg128   (2004-06-17 12:33) [15]

Динамически создаю поле, типа "Вычислимое" и подсовываю его в TClientDataSet:
 TStringField *fl;
 fl = new TStringField(cds);
 fl->FieldKind = fkCalculated;
 fl->Name      = name;
 fl->FieldName = name;
 fl->Size      = 100;
 fl->DataSet   = cds;
 fl->Tag       = code;
 fl->OnGetText = CalcFld;

Теперь подсовываю обработчик события

void __fastcall TForm1::CalcFld(TField *Sender, AnsiString &Text, bool DisplayText)
{
 cdsCorAcc->Filter = "(OP_ID="+ cdsCor->FieldByName("OP_ID")->AsString +")AND(OP_SUBID="+ cdsCor->FieldByName("OP_SUBID")->AsString +")";
 cdsCorAcc->Filtered = true;
 float ac1 = 0;
 float ac2 = 0;
 if(cdsCorAcc->Locate("CODE", Sender->Tag, TLocateOptions()))
 {
   ac1 = cdsCorAcc->FieldByName("SUM")->AsFloat;
   cdsCorAcc->Locate("CODE", IdAcc, TLocateOptions());
   ac2 = cdsCorAcc->FieldByName("SUM")->AsFloat;
   Text = FloatToStr((ac1 > ac2) ?  ac1 : ac2);
 }
 else Text = "0";
}


 
Sandman25 ©   (2004-06-17 13:57) [16]

[15] serg128   (17.06.04 12:33)

Интересный приемчик Вы использовали...
Все же лучше написать
MyDataSet.OnCalcFields := MyDataSetCalcFields;
Почитайте про OnCalcFields в хелпе


 
serg128   (2004-06-17 15:43) [17]

Спасибо, я уже разобрался....



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

Форум: "Базы";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.039 c
6-1084383557
Dimaxx
2004-05-12 21:39
2004.07.11
Исходники для работы с Р2Р


3-1086928311
Kurmanbek
2004-06-11 08:31
2004.07.11
Помогите востановить базу


1-1088179756
Lampa
2004-06-25 20:09
2004.07.11
Синхронизация


14-1088140764
syte_ser78
2004-06-25 09:19
2004.07.11
Плагиат или подражание?


4-1085487564
Kristy
2004-05-25 16:19
2004.07.11
Получение нажатий клавиш в Windows с помощью WH_JOURNALRECORD





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский