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

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

Использование логики в создании вычисляемых полей [D6, dBase, FoxPro]


Lika_d ©   (2004-08-20 09:35:00) 

Ув. Мастера!!!
На форме лежат 2 компонента table, Datasource, Dbgrid
table1 - Справочник, table2 - Итоги
Структура табл1:
Kod_s -Код стоимости
stoimost -Стоимость;
Table2:
Kod_pr Код продукта (этот код большого значения не имеет)
Kod_s - Код стоимости
P_k - Потребное количество продукта
sum- Сумма

Так вот Sum:=P_k*stoimost (из табле1)
т.е. мне нужно чтобы значение стоимости была равна той записи которая указана в поле kod_s.
Я пробовала написать в процедуре table2.oncalcfields следующее:

var
x:variant;
begin
x:=table2.AsInteger;
table1.RecNo :=x;
table2.FieldByName('sum').Value :=table1.fieldbyname('stoimost').Value *table2.FieldByName('p_k').Value;
end;
Но выходит ошибка table1.stoimost не найден, как я поняла это из-за датасета
Помогите пожалуйста!!! Как это реализовать?
Если есть другие легкие методы посоветуйте!

Заранее благодарю!!!


Sergey13   (2004-08-20 10:29:00) [1]

2[4] Lika_d   (20.08.04 10:13)
>я чайник и еще не дошла до запросов куда это писать
Тогда отложи дела в сторону и срочно за книжку. Лучше потратить время с пользой. 8-)


Lika_d   (2004-08-20 10:13:00) [2]

:))
я чайник и еще не дошла до запросов куда это писать, и откуда потом его доставать и выводит в dbgrid и в quickrep е


46_55_41_44   (2004-08-20 10:08:00) [3]

Ну я же не предлагаю тебе все сливать в одну таблицу... просто данный случай решить лучше так...

ну, а если ты все-таки хочешь сделать своим путем, то:

Table2:
Kod_pr Код продукта (этот код большого значения не имеет)
Kod_s - Код стоимости
P_k - Потребное количество продукта
sum- Сумма - это поле не нужно!!!!

далее

SELECT Table2.Kod_Pr, Table1.Stoimost, Table2.P_K, ([P_K]*[Stoimost]) AS Summa
FROM Table1 LEFT JOIN Table2 ON Table1.Kod_s = Table2.Kod_S;


Lika_d   (2004-08-20 09:56:00) [4]


> 46_55_41_44 ©   (20.08.04 09:50) [1]
> Солнышко насколько я вижу ты не корректно организовала БД.

Эта програмка нужна мне для подготовки другой программы т.е. для тренировки предпологается что мне дадут другую программу в которой врядли удастся все в одну таблицу слить, там будут несколько справочников и и несколько видов итоговых таблиц связанных между собой

А за совет спасибо я и этот способ учту!!!


46_55_41_44   (2004-08-20 09:50:00) [5]

Солнышко насколько я вижу ты не корректно организовала БД. Ну зачем тебе отдельная таблица где должны быть цены и их коды...
Каждый товар имеет цену - это определенно.. То есть твоя table1 теряет всякий смысл!!!
Прделагая сделать так...
Table2:
Kod_Pr (как раз-таки должен иметь большое значение для дальнейшего использования... ключевое поле!!!)
Можно еще добавить
Naim_Pr - наименование продукта
Stoimost - стоимость
P_k - Потребное количество продукта...

Далее пишем такой вот запрос:
Select Kod_Pr, Naim_pr, Stoimost, P_K, (Stoimost * P_K) as Summa from Table 2
Order By Kod_Pr

и все получаешь все данные, которые нужны!!!


Наверх

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