#include #include #include #include #include #include #include #include "co2.h" #include "co2100a.h" #include "socicoop.h" //////////////////////////////////////////////////////// // MASCHERA //////////////////////////////////////////////////////// class TStampaAnagSoci_mask : public TAutomask { protected: bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TStampaAnagSoci_mask(); virtual ~TStampaAnagSoci_mask() {}; }; TStampaAnagSoci_mask::TStampaAnagSoci_mask() :TAutomask ("co2100a") { } bool TStampaAnagSoci_mask::on_field_event(TOperable_field& f, TField_event e, long jolly) { return true; } ///////////////////////////////////////////////////////////// // REPORT ///////////////////////////////////////////////////////////// class TStampaAnagSoci_report : public TReport { protected: virtual bool use_mask() { return false; } public: TStampaAnagSoci_report() {} }; //////////////////////////////////////////////////////// // APPLICAZIONE //////////////////////////////////////////////////////// class TStampaAnagSoci : public TSkeleton_application { public: virtual void main_loop(); }; void TStampaAnagSoci::main_loop() { TStampaAnagSoci_mask m; while (m.run() == K_ENTER) { TStampaAnagSoci_report rep; TReport_book book; const int formato = m.get_int(F_FORMATO); //ATTENZIONE: in caso di formato == 3 il report dovrebbe essere co2100b e non co2100a!!!!!!!!!!!!!!! if (rep.load(formato==3 ? "co2100b" : "co2100a")) { TString use(rep.recordset()->query_text()); int pos = use.find("JOIN"); if (pos <= 0) pos = use.len(); switch(formato) { case 1: use.insert("SELECT BETWEEN(DATAASS, #DADATA, #ADATA)\n", pos); break; case 2: use.insert("SELECT BETWEEN(DATAREC, #DADATA, #ADATA)\n", pos); break; case 3: use.insert("SELECT BETWEEN(#DADATA, DATAASS, DATAREC) || BETWEEN(#ADATA, DATAASS, DATAREC)\n", pos); break; default: break; } const int ordinamento = m.get_int(F_ORDINAMENTO); pos = use.find("JOIN"); if (pos <= 0) pos = use.len(); if (ordinamento == 2) use.insert("BY 20.RAGSOC\n", pos); else use.insert("BY CODCF\n", pos); rep.set_recordset(use); } rep.recordset()->set_var("#DASOCIO", TVariant(m.get(F_DASOCIO))); rep.recordset()->set_var("#ASOCIO", TVariant(m.get(F_ASOCIO))); rep.recordset()->set_var("#DADATA", TVariant(m.get(F_DADATA))); rep.recordset()->set_var("#ADATA", TVariant(m.get(F_ADATA))); book.add(rep); book.print_or_preview(); } } int co2100(int argc, char* argv[]) { TStampaAnagSoci a; a.run(argc, argv, TR("Stampa anagrafica soci")); return 0; }