Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Statistiche soggetti alla data: corretto calcolo in base alle date di iscrizione e dimissione


git-svn-id: svn://10.65.10.50/trunk@6692 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 1998-05-25 13:23:33 +00:00
parent df3fa7cd21
commit 7017b9be2f
3 changed files with 138 additions and 61 deletions

View File

@ -479,6 +479,7 @@ bool TStatSogxEta::riepilogo()
TString256 filtro = ""; TString256 filtro = "";
// filtro per categoria // filtro per categoria
/*
if (_catdon.not_empty()) if (_catdon.not_empty())
{ {
if (filtro.empty()) if (filtro.empty())
@ -502,6 +503,7 @@ bool TStatSogxEta::riepilogo()
} }
} }
} }
*/
// filtro per sezione/sottogruppo // filtro per sezione/sottogruppo
if (_sezini.not_empty()) if (_sezini.not_empty())
{ {
@ -545,20 +547,55 @@ bool TStatSogxEta::riepilogo()
} }
_cur->setfilter((const char*) filtro, TRUE); _cur->setfilter((const char*) filtro, TRUE);
TString16 codsez, codsot; TString16 codsez, codsot, catdon, catcoll;
long numero; long numero;
TString16 sesso; TString16 sesso;
int eta, fascia; int eta, fascia;
TDate datanasc; TDate datanasc, dataisc, datadim;
bool catdim, ok;
const TDate oggi(TODAY); const TDate oggi(TODAY);
const int anno = oggi.year(); const int anno = oggi.year();
TTable ctd("CTD");
ctd.put("CODTAB", _catdon);
if (ctd.read() == NOERR)
catdim = ctd.get_bool("B0");
TRectype& recsog = _cur->curr(); TRectype& recsog = _cur->curr();
long last = _cur->items(); long last = _cur->items();
TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30); TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30);
for ( *_cur=0; _cur->pos() < last; ++(*_cur) ) for ( *_cur=0; _cur->pos() < last; ++(*_cur) )
{ {
prg.addstatus(1); prg.addstatus(1);
catdon = recsog.get(SOG_CATDON);
catcoll = "";
dataisc = NULLDATE;
datadim = NULLDATE;
ok = FALSE;
if (catdon.not_empty())
{
if (catdim)
{
datadim = recsog.get_date(SOG_DATADIM);
ok = ((catdon == _catdon) && (datadim <= _data));
}
else
{
dataisc = recsog.get_date(SOG_DATAISC);
ok = ((catdon == _catdon) && (dataisc <= _data));
if (!ok)
{
ctd.put("CODTAB", catdon);
if (ctd.read() == NOERR)
{
catcoll = ctd.get("S6");
datadim = recsog.get_date(SOG_DATADIM);
ok = ((catcoll == _catdon) && (dataisc <= _data) && (datadim > _data));
}
// se la categoria collegata è vuota occorre esaminare lo storico
}
}
}
if (ok)
{
codsez = recsog.get(SOG_CODSEZ); codsez = recsog.get(SOG_CODSEZ);
codsot = recsog.get(SOG_CODSOT); codsot = recsog.get(SOG_CODSOT);
datanasc = recsog.get_date(SOG_DATANASC); datanasc = recsog.get_date(SOG_DATANASC);
@ -590,6 +627,7 @@ bool TStatSogxEta::riepilogo()
stat.write(); stat.write();
} }
} }
}
return (stat.eod() > 0); return (stat.eod() > 0);
} }
else else

View File

@ -477,7 +477,7 @@ bool TStatSogxCat::riepilogo()
cati = ctd.get("S6"); cati = ctd.get("S6");
dataisc = recsog.get_date(SOG_DATAISC); dataisc = recsog.get_date(SOG_DATAISC);
nuovoi = (dataisc >= _dataini && dataisc <= _datafin); nuovoi = (dataisc >= _dataini && dataisc <= _datafin);
totalei = (dataisc <= _datafin && datadim >= _datafin); totalei = (dataisc <= _datafin && datadim > _datafin);
} }
else else
{ {

View File

@ -475,6 +475,7 @@ bool TStatisticaSog::riepilogo()
_cur = new TCursor(_rel, "", 1); _cur = new TCursor(_rel, "", 1);
TString256 filtro = ""; TString256 filtro = "";
/*
// filtro per categoria // filtro per categoria
if (_catdon.not_empty()) if (_catdon.not_empty())
{ {
@ -499,6 +500,7 @@ bool TStatisticaSog::riepilogo()
} }
} }
} }
*/
// filtro per sezione/sottogruppo // filtro per sezione/sottogruppo
if (_sezini.not_empty()) if (_sezini.not_empty())
{ {
@ -541,16 +543,52 @@ bool TStatisticaSog::riepilogo()
} }
} }
_cur->setfilter((const char*) filtro, TRUE); _cur->setfilter((const char*) filtro, TRUE);
TString16 codsez, codsot; TString16 codsez, codsot, catdon, catcoll;
long numero; long numero;
TString16 gruppo, rh, sesso; TString16 gruppo, rh, sesso;
TDate dataisc, datadim;
bool catdim, ok;
TTable ctd("CTD");
ctd.put("CODTAB", _catdon);
if (ctd.read() == NOERR)
catdim = ctd.get_bool("B0");
TRectype& recsog = _cur->curr(); TRectype& recsog = _cur->curr();
long last = _cur->items(); long last = _cur->items();
TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30); TProgind prg (last, "Elaborazione in corso... Prego attendere", FALSE, TRUE, 30);
for ( *_cur=0; _cur->pos() < last; ++(*_cur) ) for ( *_cur=0; _cur->pos() < last; ++(*_cur) )
{ {
prg.addstatus(1); prg.addstatus(1);
catdon = recsog.get(SOG_CATDON);
catcoll = "";
dataisc = NULLDATE;
datadim = NULLDATE;
ok = FALSE;
if (catdon.not_empty())
{
if (catdim)
{
datadim = recsog.get_date(SOG_DATADIM);
ok = ((catdon == _catdon) && (datadim <= _data));
}
else
{
dataisc = recsog.get_date(SOG_DATAISC);
ok = ((catdon == _catdon) && (dataisc <= _data));
if (!ok)
{
ctd.put("CODTAB", catdon);
if (ctd.read() == NOERR)
{
catcoll = ctd.get("S6");
datadim = recsog.get_date(SOG_DATADIM);
ok = ((catcoll == _catdon) && (dataisc <= _data) && (datadim > _data));
}
// se la categoria collegata è vuota occorre esaminare lo storico
}
}
}
if (ok)
{
codsez = recsog.get(SOG_CODSEZ); codsez = recsog.get(SOG_CODSEZ);
codsot = recsog.get(SOG_CODSOT); codsot = recsog.get(SOG_CODSOT);
gruppo = recsog.get(SOG_GRUPPOAB0); gruppo = recsog.get(SOG_GRUPPOAB0);
@ -587,6 +625,7 @@ bool TStatisticaSog::riepilogo()
stat.write(); stat.write();
} }
} }
}
return (stat.eod() > 0); return (stat.eod() > 0);
} }
else else