Помогите новичку, пожалуйста
Добрый день. Есть форма в виде таблицы с несколькими столбцами. Столбцы заполняются из БД. В следующем после MasterData1 бенде вывожу сумму по столбцам. Все работает. В самом же бэнде masterdata1 дабавляю еще один столбец, который должен считаться как знач.в стрке столбец1/сумму столбца 1+столбец 4/сумму столбца 4 - знач в строке 6/сумму столбца 1
Как мне взять эту сумму из memo в бенде ниже. Сумма высчитывается же уже после того, как считается нужное значение формулы выше. Идея в переменную передавать значение memo с суммой, а потом в выражении делить на эту переменную. Как сделать? просьба не пинать сильно....
Как мне взять эту сумму из memo в бенде ниже. Сумма высчитывается же уже после того, как считается нужное значение формулы выше. Идея в переменную передавать значение memo с суммой, а потом в выражении делить на эту переменную. Как сделать? просьба не пинать сильно....
Комментарии
значение
GroupHeader2
значение
MasterData1
Memo1 Memo2 Memo3 Memo4
GroupFooter1
Memo5 Memo6
________________________________________________
Mem1-3 берутся из базы, Memo5 = сумма по столбцу Memo1, Memo6 = сумма по столбцу Memo2.
Нужно высчитать Поле Memo4 = знач из строки Memo1/значение из Memo5 + знач из строки Memo2/значение из memo6 - знач из Memo3/знач из Memo5
Получается, что значение из поля memo5 и memo 6 нужно вроде загнать в переменные например sum1 и sum2, а потом в формулу выше уже можно вставить деление на эту sum1 и sum2, где это нужно. Как взять это все и подставить куда надо, загнать в переменные.
CODE:
var
s1 : integer;
s2 : integer;
procedure SumCalc;
begin
QDetail.Open;
QDetail.First;
s1 := 0;
s2 := 0;
while (not QDetail.eof) do
begin
s1 := s1 + QDetail.FieldByName('QTYTASK').AsInteger;
s2 := s2 + QDetail.FieldByName('QTYGOODS').AsInteger;
QDetail.next;
end;
Set('sum1', s1);
Set('sum2', s2);
end;
begin
SumCalc;
end.
В шаблоне в нужной ячейке уже подставил нужную формулу и применял полученные переменные
Вопрос снят, спасибо
Т.е. получается не сначала все рассчитывается, а потом вставляется в ячейки таблицы, а рассчиталось значения - подставились в формулу в ячейке и посчиталось, записалось, затем снова посчитались значения в переменных, подставились в формулу, отобразились в отчете.
if QDetail.FieldByName('sNameRole').AsString = 'Сбор заказа' then
begin
Set('sum1', s1);
Set('sum2', s2);
end;
if QDetail.FieldByName('sNameRole').AsString = 'Стол контроля' then
begin
Set('sum1', s3);
Set('sum2', s4);
end;
var
s1, s2, s3, s4, s5, s6 : integer;
procedure SumCalc; // Считаем суммы по нужным нам столбцам и закидываем результат в переменные,
// которые потом можно будет использовать в формалах
begin
QDetail.Open;
QDetail.First;
s1 := 0;
s2 := 0;
s3 := 0;
s4 := 0;
s5 := 0;
s6 := 0;
while (not QDetail.eof) do
begin
if QDetail.FieldByName('SNAMEROLE').AsString = 'Сбор заказа' then
begin
s1 := s1 + QDetail.FieldByName('QTYTASK').AsInteger;
s2 := s2 + QDetail.FieldByName('QTYGOODS').AsInteger;
end;
if QDetail.FieldByName('SNAMEROLE').AsString = 'Стол контроля' then
begin
s3 := s3 + QDetail.FieldByName('QTYTASK').AsInteger;
s4 := s4 + QDetail.FieldByName('QTYGOODS').AsInteger;
end;
if QDetail.FieldByName('SNAMEROLE').AsString = 'Ручной добор' then
begin
s5 := s5 + QDetail.FieldByName('QTYTASK').AsInteger;
s6 := s6 + QDetail.FieldByName('QTYGOODS').AsInteger;
end;
QDetail.next;
end;
if QDetail.FieldByName('sNameRole').AsString = 'Сбор заказа' then
begin
Set('sum1', s1);
Set('sum2', s2);
end;
if QDetail.FieldByName('sNameRole').AsString = 'Стол контроля' then
begin
Set('sum1', s3);
Set('sum2', s4);
end;
end;
begin
SumCalc;
end.
[(<IBXQuery1."QTYTASK">/<sum1> + <IBXQuery1."QTYGOODS">/<sum2> - <IBXQuery1."QTYGOODSPROBLEM">/<sum1>)*100]%
Но есть еще области склада, такие как сбор заказов, столы проверки и т.д. и все они вставляются в этот единственный бэнд. Соответственно пока значение sum1 и sum2 считается для области склада "сбор заказа", то цифры получаются верные, но когда начинается область "стол проверки", по нем уже должна браться другая сумма проверенных, собранных и т.д. заказов. т.е. sum3 и sum4 соответвенно, ну и так далее для следующих областей. Всего 4 области на складе. Т.е. переменных с суммой будет 8. Вот в одну формулу в той ячейке не могу вставить по условию эти суммы по достижению новой области склада в отчете. Расчет продолжается с суммами, хранящимися в sum1 и sum2, хотя мне уже нужно, чтобы в формуле подставлялись значения sum3 и sum4
Выше. там не видно, идет область склада Сбор заказов. Там данные считаются в последней колонке верно. А вот уже с того момента, как идет Стол контроля, там неправильно. Нужно уже брать другую сумму.
Или цепочку IIF. Но это будет громоздко
if QDetail.FieldByName('SNAMEROLE').AsString = 'Сбор заказа' then
begin
Set ('sum1', s1);
Set ('sum2', s2);
end;
if QDetail.FieldByName('SNAMEROLE').AsString = 'Стол контроля' then
begin
Set ('sum1', s3);
Set ('sum2', s4);
ну и так далее....
что я делаю неправильно?
Кстати тут и ответ, почему использую еще и sum1 и sum2, если можно использовать s1, s2 и т.д. В формуле в memo пишу одну формулу с sum1 и sum2, а в коде хочу, чтобы по достижению записей определенных значение в них менялось на уже s1 s2 s3 s4 и т.д.