Вычисляемое Поле

  • Автор темы dima10
  • Дата начала
D

dima10

Гость
#1
Добрый день. Помогите пожалуйсто. Есть две таблицы ADOTABLE. 1 таблица -"ostatki" в ней поля: diametr, stenka, ves. 2 таблица "potrebnost" в ней поля : Nomer_zakaza, diametr, stenka, ves, itog.
Если diametr и stenka,в одной таблице равны diametr и stenka в другой тогда нужно из поля ves таблицы ostatki вычитать поле ves таблицы potrebnost.
На пример

"ostatki"
diametr stenka ves
159 5 20

"potrebnost"

Nomer_zakaza diametr stenka ves itog
1 159 5 6 6
2 159 5 12 12
3 159 6 5 2


Спасибо всем кто откликнется
 

AndreyS

Active Member
15.10.2007
39
0
34
КИЕВ
#2
Сделай проверку

if tab1.pole_a = tab2_pole_a and ...... then
begin
ShowMessage(inttostr(tab1.ves-tab2.ves));

end



Ps: вроде там должна еще бить процедура поиска (стандартная) в ячейках .
 
D

dima10

Гость
#3
Вот текст, что не правильно


form1.ADOTable1.First;
while form1.adotable1.Eof do

if form1.ADOTable1diametr.AsInteger=form1.ADOTable2diametr.AsInteger
then
ADOTable1itog.Value:=form1.ADOTable2ves.Value-form1.ADOTable1ves.Value;
form1.ADOTable1.Next;
[/quote]
 

nayke

Well-Known Member
04.08.2010
310
0
Москва
#4
Добрый день. Помогите пожалуйсто. Есть две таблицы ADOTABLE. 1 таблица -"ostatki" в ней поля: diametr, stenka, ves. 2 таблица "potrebnost" в ней поля : Nomer_zakaza, diametr, stenka, ves, itog.
Если diametr и stenka,в одной таблице равны diametr и stenka в другой тогда нужно из поля ves таблицы ostatki вычитать поле ves таблицы potrebnost.
На пример
Вы бы в целом задачу описали зачем хранить избыточную однотипную информацию?
 

V88

Well-Known Member
22.10.2008
51
0
#5
Вот текст, что не правильно


form1.ADOTable1.First;
while form1.adotable1.Eof do

if form1.ADOTable1diametr.AsInteger=form1.ADOTable2diametr.AsInteger
then
ADOTable1itog.Value:=form1.ADOTable2ves.Value-form1.ADOTable1ves.Value;
form1.ADOTable1.Next;
В вашем коде есть ошибки.
Перед тем как присваивать новое значение полю таблицы нужно эту таблицу поставить в стадию редактирования.
Код:
form1.ADOTable1.First;
while not form1.adotable1.Eof do begin
if form1.ADOTable1diametr.AsInteger=form1.ADOTable2diametr.AsInteger then begin
ADOTable1.Edit;
ADOTable1itog.NewValue:=form1.ADOTable2ves.Value-form1.ADOTable1ves.OldValue;
ADOTable1.Post;
end;
form1.ADOTable1.Next;
end;
 
D

dima10

Гость
#6
В вашем коде есть ошибки.
Перед тем как присваивать новое значение полю таблицы нужно эту таблицу поставить в стадию редактирования.
Код:
form1.ADOTable1.First;
while not form1.adotable1.Eof do begin
if form1.ADOTable1diametr.AsInteger=form1.ADOTable2diametr.AsInteger then begin
ADOTable1.Edit;
ADOTable1itog.NewValue:=form1.ADOTable2ves.Value-form1.ADOTable1ves.OldValue;
ADOTable1.Post;
end;
form1.ADOTable1.Next;
end;
Все работает, но как сделать так чтобы когда первый раз вычел второй раз он вычитал уже из оставшихся "остатков"