Patch level :10.0
Files correlati : Ricompilazione Demo : [ ] Commento : cambiato il modo di fare la query sui documenti! adesso usa una custom_filter anziche una SELECT nella query; questo perche' la select era diventata piu' lunga di 256 caratteri in quanto le commesse di supporto si erano moltiplicate come i pani e i pesci! git-svn-id: svn://10.65.10.50/branches/R_10_00@22095 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
af8c6eb1fe
commit
4f46730350
@ -105,6 +105,42 @@ static int compare_by_fase(TSheet_field & s, int r1, int r2)
|
||||
return cmp;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Recordset
|
||||
///////////////////////////////////////////////////////////
|
||||
static TToken_string _commesse_supporto;
|
||||
|
||||
class TCommesse_supporto_recordset : public TISAM_recordset
|
||||
{
|
||||
static bool cms_supp_filter(const TRelation* rel);
|
||||
|
||||
protected:
|
||||
virtual void set_custom_filter(TCursor& cursor) const;
|
||||
|
||||
public:
|
||||
TCommesse_supporto_recordset(const TString& query, const TToken_string& lista_cms_supp);
|
||||
};
|
||||
|
||||
bool TCommesse_supporto_recordset::cms_supp_filter(const TRelation* rel)
|
||||
{
|
||||
const TString& curr_codcms = rel->curr().get(RDOC_CODCMS);
|
||||
return _commesse_supporto.get_pos(curr_codcms) >= 0;
|
||||
}
|
||||
|
||||
void TCommesse_supporto_recordset::set_custom_filter(TCursor& cursor) const
|
||||
{
|
||||
if (!_commesse_supporto.empty_items())
|
||||
cursor.set_filterfunction(cms_supp_filter);
|
||||
}
|
||||
|
||||
|
||||
TCommesse_supporto_recordset::TCommesse_supporto_recordset(const TString& query, const TToken_string& lista_cms_supp)
|
||||
:TISAM_recordset(query)
|
||||
{
|
||||
_commesse_supporto = lista_cms_supp;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TAutomask
|
||||
///////////////////////////////////////////////////////////
|
||||
@ -1227,17 +1263,14 @@ void TVariazione_budget_mask::calcola_impegnato(const TString& cms, const bool i
|
||||
//cerca tutte le righe documento che soddisfano i numerosi parametri
|
||||
TString query;
|
||||
query << "USE RDOC";
|
||||
query << "\nSELECT (";
|
||||
//query << "\nSELECT (RIGAEVASA!=\"X\")&&("; originale con solo righe inevase
|
||||
FOR_EACH_TOKEN(_cms_supporto, codcms)
|
||||
query << "(CODCMS==\"" << codcms << "\")||";
|
||||
query.rtrim(2);
|
||||
query << ')';
|
||||
query << "\nJOIN DOC INTO PROVV==PROVV ANNO==ANNO CODNUM==CODNUM NDOC==NDOC"; //le testate servono per controllo tipo (vedi sotto)
|
||||
query << "\nFROM CODNUM=#CODNUM ANNO=#DAANNO";
|
||||
query << "\nTO CODNUM=#CODNUM ANNO=#AANNO";
|
||||
|
||||
TISAM_recordset recset(query);
|
||||
//usando il magico TCommesse_supporto_recordset vengono scartate tutte le righedoc che non hanno commessa corretta,..
|
||||
//..ovvero le commesse che non appartengono alla lista _cms_supporto
|
||||
TCommesse_supporto_recordset recset(query, _cms_supporto);
|
||||
|
||||
recset.set_var("#CODNUM", codnum);
|
||||
recset.set_var("#DAANNO", (long)da_anno);
|
||||
recset.set_var("#AANNO", (long)a_anno);
|
||||
|
Loading…
x
Reference in New Issue
Block a user