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

Тема в разделе "Delphi - Базы данных", создана пользователем dima10, 31 окт 2011.

  1. dima10

    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


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

    AndreyS Active Member

    Регистрация:
    15 окт 2007
    Сообщения:
    39
    Симпатии:
    0
    Сделай проверку

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

    end



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

    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]
     
  4. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Вы бы в целом задачу описали зачем хранить избыточную однотипную информацию?
     
  5. V88

    V88 Well-Known Member

    Регистрация:
    22 окт 2008
    Сообщения:
    51
    Симпатии:
    0
    В вашем коде есть ошибки.
    Перед тем как присваивать новое значение полю таблицы нужно эту таблицу поставить в стадию редактирования.
    Код (Delphi):
    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;
     
  6. dima10

    dima10 Гость

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

Поделиться этой страницей