Доброго дня!

Существует задача посчитать потребление топлива на основе FIFO

Тоесть, выглядит примерно так:

Транспортная единица начинает рейс   с 1000 литров (вводимые данные , например А1)  по цене 10 за литр (вводимые данные, например А2)

По пути её заправляют  300 литров (В1) по цене 12 за литр (В2)

Еще раз заправляют 200 литров (С1) по цене 16 за литр (С2)

Транспорт прибывает в точку назначения с остатком 270 литров (D1)

Необходимо посчитать:

1)  Сколько топлива израсходовано X1.   Это очевидно будет X1= (A1+B1+C1)-D1

2)  Стоимость израсходованного топлива на базисе FIFO.   Это означает, что вначале расходуется более ранне полученное топливо.
     Тоесть в данном случае было израсходовано 1230 литров, из них 1000 по 10, плюс 230 по 12   =  12760 денег
     Какая формула необходима для скрипта? В ренале может использоваться и большее количество промежуточных заправок.
     Создать массив?

3)  Стоимость остатка топлива ?    Очевидно , это 200 по 16,   и 70 по 12   

Помогите пожалуйста, если можно с примером

Как сделать , чтобы изначально была одна строка ввода, но по мере надобности, можно было бы добавить ?

Например, на форме есть строка "статья расхода", она заполняется, и если нужна еще одна, то добавляем, потом еще и еще, если необходимо

Коллеги,

Доброго дня!

Задача -  в одной из форм указаны статьи дохода-расхода и их значение. Необходимо сделать так, чтобы суммировались только отмеченные "галочкой", или с указанной в комбобоке статьёй дохода-расхода

Подскажите пожалуйста как это воплотить?

В приложении заготовка проекта

Цель вычислить расходы на топливо (bunker)

+++

исходные данные  (см картинку)
Abeg - количество топлива на начало рейса
A1 - количество первого пополнения топлива (если нужно) в течение рейса
А2 - количество второго пополнения топлива (если нужно) в течение рейса
Аend - остаток топлива на конец рейса

B - тоже самое касательно цен

даты отсчета  топлива

+++
В уже существующем проекте (не прилагается) вычисляю таким способом

- получаю усредненную цену топлива  путем сложения всех бункеровок и деления на общее количества топлива  Bend = (Abeg*Bbeg + A1*B1 + A2*B2 ) / (Abeg + A1 + A2)

- затем вычисляю расход топлива  и умножаю на усредненную цену
Costs = (Abeg - Aend + A1 + A2) * Bend

+++

Но это не совсем правильно

При правильном вычислении  судно должно сжигать вначале то
топливо, что было в начале (по одной цене), затем, если нужно еще больтше топлива,
то одну или обе части взятого по пути топлива, каждого по своей цене, или часть, или все

Типа в процессе рейса сожгли все топливо Аbeg по цене Bbeg, все топливо А1 по цене В1,  и часть А2
по цене В2.   

На конец рейса осталось часть А2 по цене В2

Помогите пожалуйста составить скрипт вычисления стоимости сожженного топлива


http://s019.radikal.ru/i622/1702/a2/d83ec11dbf63t.jpg

на 90 градусов против часовой стрелки, чтобы header были вертикально слева?

Проект заносит в БД  информацию о каком-то событии, в котором есть начало и конец события. Начало каждого следующего события
начинается с конца предыдущего.

Можно ли сделать так, чтобы при открытии формы нового события, его начало устанавливалось концом предыдущего автоматически?

Возможно ли?

Исходные данные для поиска:

переменые:
data1  - date-time
data2  - date-time

название объекта:
Сombobox

+++++

Взможно ли для Webgrida сделать encrypted вход?

Спасибо за подсказку

Такой , как внизу, не работает, видимо, я неправильно составил

procedure frmPeriod_Gridsearch_OnChange (Sender: string);
begin
      frmPeriod.Gridsearch.Columns[11].Footer.ValueType := fvtSum;
     end;


Подскажите пожалуйста, как сделать правильно, чтобы суммировал, и выводил результат с двумя знаками после запятой ( 0,00),
не просто округлял, а всегда оставлял два знака

При использовании UNION ALL  ругается, что в запросах на выводе разное число столбцов.

Подскажите на примере :   http://myvisualdatabase.com/forum/viewtopic.php?id=2863

Запрос должен делать выборку между задаваемыми значениями datetime

Замучался искать ошибку

возвращает error near 'select
cast(sum(economy.ttlfrt * periodTime) as decimal(15,2)) from
(...on line 16

+++


variables in date and time picker:
perbeg
perend

table economy:
values:

voynumber, int
begin  , datetime
end, datetime
ttlfrt, currency

++++

select
voynumber,
begin,
end,
ROUND ((TIME_TO_SEC(TIMEDIFF(economy.begin, economy.end))/86400),4) as fullvoyTime,

  case
      when economy.begin < {perbeg} and economy.end > {perend} then TIME_TO_SEC(TIMEDIFF({perbeg}, {perend}))
      when economy.begin >= {perbeg} and economy.end <= {perend} then TIME_TO_SEC(TIMEDIFF( economy.begin, economy.end))
      when economy.begin < {perbeg} and economy.end <= {perend} then TIME_TO_SEC(TIMEDIFF( {perbeg}, economy.end))
      when economy.begin >= {perbeg} and economy.end > {perend} then TIME_TO_SEC(TIMEDIFF( economy.begin, {perend}))
   end
    as periodTime

from economy
where economy.begin <= {perbeg} and economy.end >= {perbeg} or economy.begin <= {perend} and economy.end >= {perbeg},


select
cast(sum(economy.ttlfrt * periodTime) as decimal(15,2)) from
(
select
voynumber,
ROUND ((TIME_TO_SEC(TIMEDIFF(economy.begin, economy.end))/86400),4) as fullvoyTime,
   case
      when economy.begin < {perbeg} and economy.end > {perend} then TIME_TO_SEC(TIMEDIFF({perbeg}, {perend}))
      when economy.begin >= {perbeg} and economy.end <= {perend} then TIME_TO_SEC(TIMEDIFF( economy.begin, economy.end))
      when economy.begin < {perbeg} and economy.end <= {perend} then TIME_TO_SEC(TIMEDIFF( {perbeg}, economy.end))
      when economy.begin >= {perbeg} and economy.end > {perend} then TIME_TO_SEC(TIMEDIFF( economy.begin, {perend}))
   end as periodTime,
  ttlfrt,
  ttlfrt / TIME_TO_SEC(TIMEDIFF( economy.begin, economy.end)) as tariff  from economy

where economy.begin <= {perbeg} and economy.end >= {perbeg} or economy.begin <= {perend} and economy.end >= {perbeg}) as final

Необходимо выполнить следующий SQL (MySql) запрос

select
TIME_TO_SEC(TIMEDIFF( table.begin, {end})) as duration,

from table

где
{end} переменная , вводимая в date and time picker

как в одном названии {end} совместить и дату , и время?

Дмитрий , а вы можете помочь составить запрос, если в базе будет не автогенерация, а просто еще одна таблица со сгенерированными датами?

Дмитрий, у вас не получилось посмотреть, что не так?   По моим наблюдениям сбоит в феврале и после февраля. Может високосный год виноват?

ПРиложено

Вот привожу простой пример

start end duration rent

1/01/2016 00:00      31/01/2016 23:59        31      31
1/02/2016 00:00     15/02/2016 23:59        15       30
16/02/2016 00:00    25/02/2016 23:59      10       10

результаты запросов:

        искомый период         duration          возвращает( должно быть)
01-02-2016    02-02-2016          2                      2  (4)
01-02-2016    03-02-2016          3                      4  (6)
01-02-2016    06-02-2016          6                    10  (12)
01-02-2016    15-02-2016         15                   28  (30)

В них наглядно видно, что не так

Может вся проблема именно в генерации дат?   Стоит руками таблицу дат делать для про верки, или не тратить время зазря?

А какое ключевое слово нужно погуглить, чтобы почитать об этом запросе?

DriveSoft wrote:

стоимость аренды делится на количество дней

За какой период берется стоимость аренды для вычичления?

Дмитрий, не могли бы вы в словах обьяснить, какие действия происходят в этой части запроса

SELECT SUM(rent.rent / (datediff(rent.`end`, rent.`begin`)+1))

Сумма столбца rent в пределах периода? Каким образом эти rent в столбце считаются?  Идет подсчет pro-rata или нет?

Премного благодарен

Почему  alightment показывается , как хочет? Вся колонка слева, а в сумме справа, и тд и тп
Как можно привести к формату столбца?

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

Каким образом удаленный объект может положить данные в удаленную MySQL базу,
если не имеет постоянного подключения к интернету ? (есть емейл через инмарсат)