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

Вниз

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

 
Саня   (2003-06-06 17:49) [0]

программным путём? (чтоб оно считало сумму трёх других)


 
ladybird ©   (2003-06-06 17:51) [1]

SELECT A, B, C, SUM(A+B+C) as D from xTABLE T


 
Саня   (2003-06-07 14:19) [2]

А если будет сложное условие..
Допустим: таблица заполнена только двумя значениями
"0" или "1" и нужно подсчитать колво "0" в каждой записи.
Колво полей неизвестно. Как быть? Если бы знать число полей-
то было так:
Два клика по ADOQuery1->New field->Calculeted
А в
procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
var L:sting; i:integer;
begin
i:=0;
for i:=0 to ADOQuery1.FieldCount-1 do begin
L:=ADOQuery1.Fields.Fields[i].FieldName
if ADOQuery1.FieldValues[L]="0" tnen inc(i);
end;
end;
Но как программно сделать сделать Calculeted поле?


 
Саня   (2003-06-08 16:38) [3]

Ну?


 
Rol   (2003-06-09 06:54) [4]

>ladybird гм... девушка... это где в природе такой Сиквел встречается?


 
Соловьев ©   (2003-06-09 10:20) [5]


> таблица заполнена только двумя значениями
> "0" или "1" и нужно подсчитать колво "0" в каждой записи.
> Колво полей неизвестно. Как быть?

select count(field1)
from table
where field1=0


 
Соловьев ©   (2003-06-09 10:23) [6]

не-а не прокатит :(
без количесва поле нельзя решить.
А чем не устраивает?

> procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
> var L:sting; i:integer;
> begin
> i:=0;
> for i:=0 to ADOQuery1.FieldCount-1 do begin
> L:=ADOQuery1.Fields.Fields[i].FieldName
> if ADOQuery1.FieldValues[L]="0" tnen inc(i);
> end;
> end;



 
Sandman25 ©   (2003-06-09 10:57) [7]

Соловьев © (09.06.03 10:23)

Мне кажется, автор спрашивает, как добавить вычисляемое поле.
Что-нибудь типа
with Query.Fields.Add do
....


 
Соловьев ©   (2003-06-09 11:12) [8]

Numer: TIntegerField;
...
with MySql do
begin
DataBaseName := "cadr";
AutoCalcFields := true;
OnCalcFields := MyCalcFields;
Numer := TIntegerField.Create(MySql);
with Numer do
begin
FieldName := "Numer";
Calculated := True;
DataSet := MySql;
Name := MySql.Name + FieldName;
MySql.FieldDefs.Add(Name, ftInteger, 0, true);
end;
end;
end;

....
procedure TFirstForm.MyCalcFields(DataSet: TDataSet);
begin
TDataSet(DataSet).FieldByName("Numer").asInteger := <функция>;
end;




 
PI{}Puk ©   (2003-06-09 11:25) [9]

можно также добавить калькулируемое поле и прямо в TDataSet
пр. типа

var bbb: TField;
...
bbb := Tfield.Create(Self);
bbb.FieldName := "bbb";
bbb.FieldKind := fkCalculated;
bbb.SetFieldType(ftInteger);
DM.Query.FieldDefs.Add("bbb",ftInteger,0,False);
DM.Query.Fields.Add(bbb);
...

а самое оптимальное это как говорит Sandman25 © - в динамическом
запросе


 
Саня   (2003-06-12 09:26) [10]

Всем огромное спасибо, особенно Соловьеву (09.06.03 11:12),
его пример работает, а пример PI{}Puk (09.06.03 11:25)
выдаёт много ошибок. Всё хорошо уважаемые мастера, но
теперь как добавить в DataSet программно не вычисляемые поля(Data).
В хелпе нашёл как сделать, работает . Но в комбинации
с примерами PI{}Puk и Соловьёва- не работает
(создаётся только калькулируемое поле).
Давайте добьём мою проблему доконца.


 
Соловьев ©   (2003-06-12 09:47) [11]

with MySql do
begin
DataBaseName := "cadr";
with FieldDefs do
begin
Add("phone", ftFloat, 0, true);
FieldDefs[0].CreateField(MySql);
end;
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.01 c
9-19942
[Baradoo]
2003-01-21 21:26
2003.07.07
Небольшая полезная тема (для знатаков OpenGl)


14-20200
pet
2003-06-20 19:08
2003.07.07
kylix


14-20229
Стражник
2003-06-19 08:13
2003.07.07
Загрузка картинки в поле БД(парадокс)


3-19990
alexru
2003-06-13 11:54
2003.07.07
Сортировка в TDBGrid


1-20091
Joker
2003-06-24 11:06
2003.07.07
Как создать HTML-документ?