Вычитание дат

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

lingreen
Новичок
Сообщения: 20
Зарегистрирован: 06 сен 2006, 08:06
Контактная информация:

Вычитание дат

Сообщение lingreen »

Привед всем, у меня такой вот вопрос, мне надо отнять от одной даты другую хотела использовать ф-ию Sub_date, но из этого ничего не получилось, т к мне надо чтоб при вычитании даты 02.05.2007 от 01.02.2007 получилось01.03.00, а не то, что получается при использовании этой ф-ии, если у кого есть какие-нибудь идеи поделитесь пжст.
dp
Местный житель
Сообщения: 216
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Беларусь, Минск
Контактная информация:

Сообщение dp »

мне надо отнять от одной даты другую
если нужно просто получить количество дней между датами - то переведи в дни, а затем вычти.

если нужно получить что-то более другое - то напиши что нужно получить на выходе
dP
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

есть функция которая сразу дни возвращает ( и могет еще и выходные выбросить)
function CalcDaysBetweenDates (aDateFrom,
aDateTo : date;
aMinusNonWorkDays : Boolean
) : integer;
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

lingreen
честно говоря, не совсем понятно для чего вам такая дата нужна. Если для подсчета ко-ва дней-функция выше, если для чего-то другого-скажите лучше что вы хотите сделать.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

наверное для подсчета стажа 8)
если да то
1. у вас часом доки не завалялось как же его считать?
2. на это дело есть объектный фейс, тока см пункт 1 - у всех свое мнение.
lingreen
Новичок
Сообщения: 20
Зарегистрирован: 06 сен 2006, 08:06
Контактная информация:

Сообщение lingreen »

edward_K
доки не завалялось..........., и какой на енто дело есть фейс?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

runstaj.vih
=========
objinterface ObjRunStaj;

public function RunStrStaj(PsnNRec : comp; StajSysCode : integer; RunDate : date) : string;
// Возвращает стаж в виде строки 'Лет: Месяцев: Дней:

public function GetStajYears(PsnNRec : comp; StajSysCode : integer; RunDate : date) : word;
// Возвращает количество лет в стаже

public function GetStajMonths(PsnNRec : comp; StajSysCode : integer; RunDate : date) : word;
// Возвращает количество месяцев в стаже

public function GetStajDays(PsnNRec : comp; StajSysCode : integer; RunDate : date) : word;
// Возвращает количество дней в стаже

//Для работы иногда требуется привязка к Nrec записи о стаже...
//скажем для анализа пользовательских стажей
public function NRunStrStaj(PsnNRec : comp; StajNrec : comp; RunDate : date) : string;
// Возвращает стаж в виде строки 'Лет: Месяцев: Дней:

public function NGetStajYears(PsnNRec : comp; StajNrec : comp; RunDate : date) : word;
// Возвращает количество лет в стаже

public function NGetStajMonths(PsnNRec : comp; StajNrec : comp; RunDate : date) : word;
// Возвращает количество месяцев в стаже

public function NGetStajDays(PsnNRec : comp; StajNrec : comp; RunDate : date) : word;
// Возвращает количество дней в стаже

end;

objinterface ObjRunStaj1;

public function GetPercServN(PsnNRec : comp; LSchetKateg : comp; RunDate : date) : double;
// Возвращает процент для северного стажа

public function GetPercServNDate(PsnNRec : comp; LSchetKateg : comp; RunDate : date) : date;
// Возвращает реальную дату назначения процента для северного стажа

public function GetNDateForNorth(PsnNRec : comp; LSchetKateg : comp; Percent : double; RunDate : date) : date;
// Возвращает реальную дату назначения указанного процента для северного стажа

end;

vipinterface RunStaj implements ObjRunStaj, ObjRunStaj1
;
varvara
Постоянный обитатель
Сообщения: 130
Зарегистрирован: 21 дек 2005, 19:12

Сообщение varvara »

А как можно посчитать страховой стаж?То ли из-за того , что он появился позже, системный код у него 0 и предложенные методы не подходят.
solka
Сообщения: 9
Зарегистрирован: 30 янв 2008, 14:14

Сообщение solka »

Помогите пожалуйста разобраться с функцией RunStrStaj.
Что такое StajSysCode?
Я описала объектный интерфейс и вызываю ф-ю с параметрами: RunStrStaj(Pers_nrec, epStaffSlCont, DateBeg);
Функция вызывается, но выдает совершенно неверные данные.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

это тип стажа
точнее сис код в Catalogs для типа стажа


( 61, 'Общий стаж');
( 62, 'Непрерывный стаж для листа нетрудоспособности');
( 63, 'Стаж по специальности');
( 64, 'Северный стаж');
( 65, 'Стаж для выслуги лет');
( 88, 'Стаж работы по последней профессии');
...
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Здравствуйте!
Подскажите, что не так: у меня строка стажа (staj) пустая.

Код: Выделить всё

#include RunStaj.vih
interface CalcStaj
var
  icalcstaj: runstaj;
  staj: string;
  persnrec: comp;
  dstaj: date;

create view as select * from grnal;

parameters
  persnrec, staj, dstaj;

browse www
  fields
    grnal.nrec;
end;

handleevent
  cminit:
  {
     staj:=icalcstaj.NRunStrStaj(PersNRec, 1FCh, dstaj);
     closeinterface(0);
  }
end;

end.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Неужели никто с этим не сталкивался? RunStaj.vih я, естественно, взял новый (для 8.1), с #define и #component. Вызываю из отчёта фейс RunInterface(Calcstaj, ls, staj, endper), а он ругается, что "Возникло необработанное исключение ExObjIfcNoLoad (ExRef)
ошибка загрузки объекта из ресурсного файла(RunStaj)". Соответственно, переменная staj - пустая...
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

как вариант, возможно, отличаются исходники, проверьте

Код: Выделить всё

#ifndef _RunStaj_vih_Included
#define _RunStaj_vih_Included

#ifdef ComponentVersion
#component "z_Staff"
#end

#doc
Расчет стажей
#end
objinterface ObjRunStaj;

#doc
Возвращает стаж в виде строки 'Лет: Месяцев: Дней:
#end
public function RunStrStaj(PsnNRec : comp; StajSysCode : integer; RunDate : date) : string;

#doc
Возвращает количество лет в стаже
#end
public function GetStajYears(PsnNRec : comp; StajSysCode : integer; RunDate : date) : word;

#doc
Возвращает количество месяцев в стаже
#end
public function GetStajMonths(PsnNRec : comp; StajSysCode : integer; RunDate : date) : word;

#doc
Возвращает количество дней в стаже
#end
public function GetStajDays(PsnNRec : comp; StajSysCode : integer; RunDate : date) : word;

//Для работы иногда требуется привязка к Nrec записи о стаже...
//скажем для анализа пользовательских стажей

#doc
Возвращает стаж в виде строки 'Лет: Месяцев: Дней:
#end
public function NRunStrStaj(PsnNRec : comp; StajNrec : comp; RunDate : date) : string;

#doc
Возвращает количество лет в стаже
#end
public function NGetStajYears(PsnNRec : comp; StajNrec : comp; RunDate : date) : word;

#doc
Возвращает количество месяцев в стаже
#end
public function NGetStajMonths(PsnNRec : comp; StajNrec : comp; RunDate : date) : word;

#doc
Возвращает количество дней в стаже
#end
public function NGetStajDays(PsnNRec : comp; StajNrec : comp; RunDate : date) : word;

#doc
Возвращает процент для северного стажа
#end
public function GetPercServN(PsnNRec : comp; LSchetKateg : comp; RunDate : date) : double;

#doc
Возвращает реальную дату назначения процента для северного стажа
#end
public function GetPercServNDate(PsnNRec : comp; LSchetKateg : comp; RunDate : date) : date;

#doc
Возвращает реальную дату назначения указанного процента для северного стажа
#end
public function GetNDateForNorth(PsnNRec : comp; LSchetKateg : comp; Percent : double; RunDate : date) : date;

#doc
Перерасчитывает стажи, получая реальные данные в 3-е окно, относительно записей в "истории" каждого стажа по текущему работнику
#end
public procedure ReCalcStaj(PsnNRec : comp; cPosition : comp);

end;

vipinterface RunStaj implements ObjRunStaj
#ifdef ATL51
Licensed (free)
#end
;
#endif
Последний раз редактировалось Max_Fin 08 сен 2008, 13:07, всего редактировалось 1 раз.
Жду выхода Вселенная 2.12!
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Сообщение RAJAH »

Нет, всё тоже, только у меня с шапкой, где написано что "Разработал Антонович А.К." :) Всё равно то же предупреждение выскакивает.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Быстрее всего все же не определена/криво определена компонетная принадлежность...В сообщении об ошибке же идет далее "Ошибка загрузки объекта из ресурного файла(....)" В скобочках вся суть.. )

Вы попробуйте в заголовочном файле поправить сами спецом криво вместо #component "z_staff", например, "qwerty"? собрать такой вариант и запустить на выполенение. Если все правильно подключено, то получите в приведенной Вами ошибки мессаг типа
"Ошибка загрузки объекта из ресурного файла(qwerty::runstaj)"
Ответить