Таблица поиска DATE (1990/01/01: 2041/12/31)

Я использую основную таблицу DATE для поиска дат и других значений, чтобы контролировать несколько событий, интервалов и вычислений в моем приложении. В нем есть строки для каждого дня, начиная с 01.01.1990 по 31.12.2041.

Один пример того, как я использую эту справочную таблицу:

Клиент заложил товар на: ЯНВ-31-2010Клиент возвращается в период с 3 мая по 10 мая, чтобы попытаться избежать потери товара.Если он выплачивает проценты за 1 месяц, сотрудник вводит «1» и приложение ищет пешку
дата (31 января 2010 года) в основной таблице дат и помещает 28 февраля 2010 года в соответствующую дату выплаты процентов. FEB-28 возвращается, потому что FEB-31 не существует! Если бы 2010 год был високосным, он возвратил бы 29 февраля.Если клиент платит 2 месяца, возвращается MAR-31-2010. 3 месяца, 30 апреля ... Если клиент платит более 3 месяцев или другой период, не охватываемый таблицей поиска дат, сотрудник вручную вводит соответствующую дату.

Вот как выглядит таблица поиска даты:

{ Copyright 1990:2010, Frank Computer, Inc. }

{ DBDATE=YMD4- (correctly sorted for faster lookup) }

CREATE TABLE     datemast 
(
 dm_lookup       DATE,    {lookup col used for obtaining values below}
 dm_workday      CHAR(2), {NULL=Normal Working Date,}
                          {NW=National Holiday(Working Date),}
                          {NN=National Holiday(Non-Working Date),}
                          {NH=National Holiday(Half-Day Working Date),}
                          {CN=Company Proclamated(Non-Working Date),}
                          {CH=Company Proclamated(Half-Day Working Date)}

 {several other columns omitted}

 dm_description CHAR(30), {NULL, holiday description or any comments}
 dm_day_num     SMALLINT, {number of elapsed days since begining of year}
 dm_days_left   SMALLINT, (number of remaining days until end of year}

 dm_plus1_mth   DATE,     {plus 1 month from lookup date}
 dm_plus2_mth   DATE,     {plus 2 months from lookup date}
 dm_plus3_mth   DATE,     {plus 3 months from lookup date}
 dm_fy_begins   DATE,     {fiscal year begins on for lookup date}
 dm_fy_ends     DATE,     {fiscal year ends on for lookup date}
 dm_qtr_begins  DATE,     {quarter begins on for lookup date}
 dm_qtr_ends    DATE,     {quarter ends on for lookup date}
 dm_mth_begins  DATE,     {month begins on for lookup date}
 dm_mth_ends    DATE,     {month ends on for lookup date}
 dm_wk_begins   DATE,     {week begins on for lookup date}
 dm_wk_ends     DATE,     {week ends on for lookup date}

 {several other columns omitted}
)
IN "S:\PAWNSHOP.DBS\DATEMAST"; 

Есть ли лучший способ сделать это или это крутой метод?

Ответы на вопрос(4)

Ваш ответ на вопрос