Evgeniy
Зарегистрирован: 24.10.2012 Сообщения: 7
|
Добавлено: Пн Ноя 26, 2012 09:22 Заголовок сообщения: Сводка движения |
|
|
Здравствуйте, форумчане. Помогите пожалуйста решить один вопрос. Имеется процедура в табельном учете в на основе которой формируется отчет о движении людей(пришло, ушло за месяц) и в конце этой процедуры идет подсчет мужчин и женщин на конец месяца. Задача состоит в том, как сделать чтобы рассчет мужчин и женщин производился на начало, а не на конец месяца? Текст процедуры прилагается ниже, специально расставил комментарии где именно идет подсчет мужчин и женщин.
{
var InsertVal[250];
var SelectStr[250];
var tempstr[100];
var T;
var s[4];
var mm, yy, dd_[3], dd_1[3], dd_2[3],_dd_1[3];
var mes[20];
var podr[40];
var kvalID[2];
var id[2];
var GrLevel[2];
var kval[40];
var sd[4];
var sd_n[4];
number summa_d;
delete from tb_user_svodka_dvig;
ParamStr(0, s); strnum(s, yy);
ParamStr(1, s); strnum(s, mm);
НМесяц(mm,mes,0);
sput(s," %04d г.",yy);
sput(dd_1, "%04d-%02d-%02d", yy, mm, 1);
sput(dd_2, "%04d-%02d-%02d", yy, mm, ДнейМесяца(mm, yy));
Дата(1,mm,yy,dd_);
ДатаМинусДни(_dd_1,1,dd_);
Open T
SELECT GrLevel, catID, ID, Cat, Struct_Name
FROM tb_user_svodka_dvig_category
WHERE GrLevel > 0 order by 2,3,5;
while(1)
{
Fetch T,GrLevel, kvalID, id, kval, podr ;
strnum(kvalID,summa_d);
if (teot(T)) break;
sput(InsertVal, "INSERT INTO tb_user_svodka_dvig(GrLevel, CatLevel, Categ, struct_name, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10) "
"VALUES (%s, %s, '%s', '%s' " , GrLevel, kvalID, kval, podr);
//--подсчет работников на начало месяца по каждой квалификации и подразделению
sput(SelectStr, "select dbo.user_forSvodDvig_00('%s', '%s')", id, dd_1);
T1=topen(SelectStr,0);
tget(T1,sd);
close T1;
sput(tempstr, ", %s", sd);
//--если данная квалификация РУКОВОДИТЕЛИ СПЕЦИАЛИСТЫ
if (summa_d == 4)
{
sput(SelectStr, "select dbo.user_forSvodDvig_01('%s', '%s')", id, dd_1);
T1=topen(SelectStr,0);
tget(T1,sd_n);
close T1;
sput(tempstr, ", %s", sd,sd_n);
};
strcat(InsertVal,tempstr);
//--подсчет работников вновь принятых на комбинат по каждой квалификации и подразделению
sput(SelectStr, "select dbo.user_forSvodDvig_02('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd);
close T1;
sput(tempstr, ", %s", sd);
//--если данная квалификация РУКОВОДИТЕЛИ СПЕЦИАЛИСТЫ
if (summa_d == 4)
{
sput(SelectStr, "select dbo.user_forSvodDvig_03('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd_n);
close T1;
sput(tempstr, ", %s", sd,sd_n);
};
strcat(InsertVal,tempstr);
//--подсчет работников вышедших из декрета по каждой квалификации и подразделению
sput(SelectStr, "select dbo.user_forSvodDvig_04('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd);
close T1;
sput(tempstr, ", %s", sd);
//--если данная квалификация РУКОВОДИТЕЛИ СПЕЦИАЛИСТЫ
if (summa_d == 4)
{
sput(SelectStr, "select dbo.user_forSvodDvig_05('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd_n);
close T1;
sput(tempstr, ", %s", sd,sd_n);
};
strcat(InsertVal,tempstr);
//--подсчет работников перешедших из одного подразделения в другое по каждой квалификации и подразделению
sput(SelectStr, "select dbo.user_forSvodDvig_06('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd);
close T1;
sput(tempstr, ", %s", sd);
//--если данная квалификация РУКОВОДИТЕЛИ СПЕЦИАЛИСТЫ
if (summa_d == 4)
{
sput(SelectStr, "select dbo.user_forSvodDvig_07('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd_n);
close T1;
sput(tempstr, ", %s", sd,sd_n);
};
strcat(InsertVal,tempstr);
//--подсчет работников уволившихся за месяц по каждой квалификации и подразделению
sput(SelectStr, "select dbo.user_forSvodDvig_08('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd);
close T1;
sput(tempstr, ", %s", sd);
//--если данная квалификация РУКОВОДИТЕЛИ СПЕЦИАЛИСТЫ
if (summa_d == 4)
{
sput(SelectStr, "select dbo.user_forSvodDvig_09('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd_n);
close T1;
sput(tempstr, ", %s", sd,sd_n);
};
strcat(InsertVal,tempstr);
//--подсчет работников ушедших в декрет по каждой квалификации и подразделению
sput(SelectStr, "select dbo.user_forSvodDvig_10('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd);
close T1;
sput(tempstr, ", %s", sd);
//--если данная квалификация РУКОВОДИТЕЛИ СПЕЦИАЛИСТЫ
if (summa_d == 4)
{
sput(SelectStr, "select dbo.user_forSvodDvig_11('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd_n);
close T1;
sput(tempstr, ", %s", sd,sd_n);
};
strcat(InsertVal,tempstr);
//--подсчет работников перешедших в другие подразделения по каждой квалификации и подразделению
sput(SelectStr, "select dbo.user_forSvodDvig_12('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd);
close T1;
sput(tempstr, ", %s", sd);
//--если данная квалификация РУКОВОДИТЕЛИ СПЕЦИАЛИСТЫ
if (summa_d == 4)
{
sput(SelectStr, "select dbo.user_forSvodDvig_13('%s', '%s', '%s')", id, dd_1, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd_n);
close T1;
sput(tempstr, ", %s", sd,sd_n);
};
strcat(InsertVal,tempstr);
//--подсчет работников на конец месяца по каждой квалификации и подразделению
sput(SelectStr, "select dbo.user_forSvodDvig_14('%s', '%s')", id, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd);
close T1;
sput(tempstr, ", %s", sd);
//--если данная квалификация РУКОВОДИТЕЛИ СПЕЦИАЛИСТЫ
if (summa_d == 4)
{
sput(SelectStr, "select dbo.user_forSvodDvig_15('%s', '%s')", id, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd_n);
close T1;
sput(tempstr, ", %s", sd,sd_n);
};
strcat(InsertVal,tempstr);
//--подсчет мужчин на конец месяца по каждой квалификации и подразделению
sput(SelectStr, "select dbo.user_forSvodDvig_16('%s', '%s')", id, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd);
close T1;
sput(tempstr, ", %s", sd);
//--если данная квалификация РУКОВОДИТЕЛИ СПЕЦИАЛИСТЫ
if (summa_d == 4)
{
sput(SelectStr, "select dbo.user_forSvodDvig_17('%s', '%s')", id, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd_n);
close T1;
sput(tempstr, ", %s + %s", sd , sd_n);
};
strcat(InsertVal,tempstr);
//--подсчет женщин на конец месяца по каждой квалификации и подразделению
sput(SelectStr, "select dbo.user_forSvodDvig_18('%s', '%s')", id, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd);
close T1;
sput(tempstr, ", %s", sd);
//--если данная квалификация РУКОВОДИТЕЛИ СПЕЦИАЛИСТЫ
if (summa_d == 4)
{
sput(SelectStr, "select dbo.user_forSvodDvig_19('%s', '%s')", id, dd_2);
T1=topen(SelectStr,0);
tget(T1,sd_n);
close T1;
sput(tempstr, ", %s + %s", sd , sd_n);
};
strcat(InsertVal,tempstr);
strcat(InsertVal,");");
DO_SQL(InsertVal);
}
Close T;
return 0;} |
|