Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите алгоритм [D6]


NataliK ©   (2003-06-02 11:35:00) 

Добрый день!
Проблема такова есть Парадоксовская база
F1 F2 f3
6 5 (5+3)*X
6 3 (5+3)*X
8 2 (2+1)*Y
8 1 (2+1)*Y
что бы определить F3 надо знать сумму f2 по одной F1.
Школьнай вопрос где лучше хранить эту сумму f2 а запомнить ее наверное надо Получить ее я расчитываю через SQL запрос.


NataliK   (2003-06-02 12:04:00) [1]

Спасибо! Сейчас попробую с закладочками,может именно этот выход подойдет


Sandman25   (2003-06-02 11:59:00) [2]


var p: pointer;
begin
with query1 do
begin
close;
sql.text := "select count(*) from table1 where f1 = :f1";
prepare;
with table1 do
begin
p := getbookmark;
disablecontrols;
try
first;
while not eof do
begin
query.params[0].asInteger := table1f1.asInteger;
query.open;
... // обработка значения
query.close;
next;
end;
finally
gotobookmark(p);
enablecontrols;
end;
end;


NataliK   (2003-06-02 11:50:00) [3]

Можно, но я запуталась < т.е
Я должна пробежаться по Таблице выполнить Sql запрос и посчитать F3 . Мне кажется, можно как-то проще.Может с Lookup
посчитать в цикле или еще как-нибудь


Sandman25   (2003-06-02 11:45:00) [4]

McSimm2 (02.06.03 11:39)

Тогда при изменении F2 в одной записи придется изменять F3 в куче записей с тем же id из F1. Что не есть хорошо, особенно при многопользовательской работе. Нет нормализации.


Sandman25   (2003-06-02 11:42:00) [5]

Если сумму нужно именно хранить, то напрашивается отдельная таблица
типа
f1 f2
6 8
8 3
А если извлекать динамически, то
select sum(f2), f1
from t1
group by f1


McSimm2   (2003-06-02 11:39:00) [6]

А почему результат вычисления нельзя прямо в поле f3 сохранить - высчитывай и записывай...


Наверх

Титульная страница Поиск, карта сайта Написать письмо