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

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

dima10

Добрый день. Помогите пожалуйсто. Есть две таблицы 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


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

AndreyS

Сделай проверку

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

end



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

dima10

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


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]
 
N

nayke

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

V88

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


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

В вашем коде есть ошибки.
Перед тем как присваивать новое значение полю таблицы нужно эту таблицу поставить в стадию редактирования.
Код:
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;

Все работает, но как сделать так чтобы когда первый раз вычел второй раз он вычитал уже из оставшихся "остатков"
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!