Member 13754238 Ответов: 1

Вставить строки всех месяцев b/n a диапазон дат & добавить сумму в строки до текущей строки диапазона для каждого изменения месяца в SQL и VB.NET


Уважаемые Старшеклассники!

Я работаю над текущим проектом, который использует 'VB.Net &SQL Server-2012'.

БД &амп; детали в таблице ниже:

База данных SQL с именем 'DB_COLLECTOR',
Таблица с именем 'Fee_Payment',
Всего названо 6 колонок:

'S_No' Int Primary key identity(1,1),
        'Date_Start' datetime Null,
        'Date_End' datetime Null,
        'Prefixed_Fee' decimal(10) Null, 
        'Paid_Amount' decimal(10) Null, 
        'Balance' decimal(10) Null


У меня есть 2 формы:

1-й класс принимает 'Person Name, Deal_Start_Date, Deal_End_Date, Monthly_Fee', который сохраняет данные в таблице Customer_Master в DB &

2-й класс принимает имя человека, Payment_Amount', который сохраняет данные в 'Fee_Payment стола.

Когда я вхожу в
Deal_Start_Date как 01-04-2018' &амп;
Deal_End_Date как 31-03-2019'
для клиента по имени Джон
с ежемесячной платой, фиксированной в размере $50,00 до 1-й формы,


Требуется Помощь:

1) это должно автоматически добавить 12 строк в Fee_Payment' таблицы с каждой строкой, имеющих 'Date_Start' как '01-апр-2018' &амп; 'Date_End' как '30-Апр-2018, помимо соответствующих данных, сохраненных в 'Customer_Master'.

S_No  Date_Start  Date_End      Prefixed_Fee   Paid_Amount  Balance  <br />
----  ----------  --------      ------------   -----------  -------  <br />
1     01-Apr-2018 30-Apr-2018      Null           Null       Null    <br />
2     01-May-2018 31-May-2018      Null           Null       Null    <br />
3     01-Jun-2018 30-Jun-2018      Null           Null       Null    <br />
..     ....         ....            ..             ..         ..     <br />
12    01-Mar-2019 31-Mar-2019      Null           Null       Null


2) он должен автоматически заменить 'нуль' с '$50.00 до Prefixed_Fee' колонна апреля-2018 строку, если дата находится под диапазоном '01-апр-2018 к 30-Апр-2018' т. е. если текущая дата '02-Апр-2018'.

S_No  Date_Start  Date_End      Prefixed_Fee   Paid_Amount  Balance  <br />
----  ----------  --------      ------------   -----------  -------  <br />
1     01-Apr-2018 30-Apr-2018      50.00          Null       50.00   <br />
2     01-May-2018 31-May-2018      Null           Null       Null    <br />
3     01-Jun-2018 30-Jun-2018      Null           Null       Null    <br />
..     ....         ....            ..             ..         ..     <br />
12    01-Mar-2019 31-Mar-2019      Null           Null       Null


3) Если клиент, Джон заплатил $125,00, он должен выделить $50,00 из $125,00 в первую строку апреля-2018, заполнив сумму, указанную в строке-1 PreFixed_Fee (первая), а затем из суммы баланса, $50,00 во вторую строку мая-2018 (вторая) и сумму баланса от $25,00 до июня-2018 (третья).

S_No  Date_Start  Date_End      Prefixed_Fee   Paid_Amount  Balance  <br />
----  ----------  --------      ------------   -----------  -------  <br />
1     01-Apr-2018 30-Apr-2018      50.00          50.00       0.00   <br />
2     01-May-2018 31-May-2018      50.00          50.00       0.00   <br />
3     01-Jun-2018 30-Jun-2018      50.00          25.00      25.00   <br />
..     ....         ....            ..             ..         ..     <br />
12    01-Mar-2019 31-Mar-2019      Null           Null       Null


Заранее большое спасибо!

Что я уже пробовал:

Мне ничего не приходит в голову, даже попробовать что-то, поэтому не было добавлено никаких образцов кодов, которые были опробованы. Поэтому я приношу свои извинения за то же самое. Пожалуйста, помогите!

1 Ответов

Рейтинг:
1

Wendelius

Этот вопрос слишком велик, чтобы ответить подробно, но некоторые идеи помогут вам продвинуться вперед:

Пуля 1: Поскольку вы знаете диапазон дат, выполните цикл по месяцам между начальной и конечной датой. Во время каждой итерации вставляйте строку в таблицу со значениями из пользовательского интерфейса

Пуля 2: на мой взгляд, это проблематично, так как по умолчанию в базе данных нет процесса, который автоматически изменял бы данные при изменении даты. Вы можете построить такой механизм, например, с помощью Sql Agent, но я не рекомендую этот подход. Вместо этого, почему бы не сохранить префиксные сборы в первую очередь? Было бы довольно просто запросить общий баланс, просто уменьшив оплаченную сумму из комиссии

Пуля 3: опять же вам понадобится петлевая структура, проходящая через строки, где баланс не равен нулю, упорядоченная по дате. Для каждой строки назначьте значение в оплаченную сумму от платежа до тех пор, пока у вас не закончатся деньги в платежной проводке.