#include #include #include #include #include #include #include #include #include "../mg/anamag.h" #include "ps0330100a.h" /////////////////////////////////////////////// // MASCHERA /////////////////////////////////////////////// class TMultimarche_mask : public TAutomask { protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); public: TMultimarche_mask(); }; TMultimarche_mask::TMultimarche_mask() : TAutomask("ps0330100a") { } bool TMultimarche_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { /*switch(o.dlg()) { default: break; }*/ return true; } /////////////////////////////////////////////// // RECORDSET /////////////////////////////////////////////// /////////////////////////////////////////////// // REPORT /////////////////////////////////////////////// //il report in questione ha la query inside.. //..e non necessita di altro che i FIELD #... dei campi della maschera per avere i valori.. //..delle set_var interne class TMultimarche_report : public TReport { protected: virtual bool use_mask() { return false; } //questo ci vuole perchè la maschera ha un nome != dai report public: TMultimarche_report() {} }; /////////////////////////////////////////////// // APPLICAZIONE /////////////////////////////////////////////// class TMultimarche : public TSkeleton_application { TMultimarche_mask* _mask; protected: virtual bool check_autorization() const {return false;} virtual const char * extra_modules() const {return "ve";} virtual bool create(); virtual void main_loop(); public: void elabora(); }; void TMultimarche::elabora() { TMultimarche_report rep; if (rep.load(_mask->get(F_REPORT))) { TRecordset* recset = rep.recordset(); const long anno = _mask->get_int(F_ANNO); //crea l'elenco delle marche TString marche_query; marche_query << "USE ANAMAG\nSELECT CODART?=\"???"; marche_query << "\nFROM CODART=#DAMARCA"; marche_query << "\nTO CODART=#AMARCA"; TISAM_recordset marche_recset(marche_query); const TString& damarca = _mask->get(F_DAMARCA); const TString& amarca = _mask->get(F_AMARCA); marche_recset.set_var("#DAMARCA", damarca); marche_recset.set_var("#AMARCA", amarca); const long marche_items = marche_recset.items(); TProgind pi(marche_items, "Esportazione bovina in corso...", true, true); for (bool ok = marche_recset.move_first(); ok; ok = marche_recset.move_next()) { if (!pi.addstatus(1)) break; const TString4 marca = marche_recset.get(ANAMAG_CODART).as_string(); recset->set_var("#MARCA", marca); recset->set_var("#ANNO", anno); const long items = recset->items(); if (items > 0) { TReport_book book; book.add(rep); TFilename fname = _mask->get(F_PATH_FILE); TString4 str_anno; str_anno << anno; fname.add(str_anno); fname << "_" << marca; fname.ext("xls"); book.export_excel(fname, false); } } } } bool TMultimarche::create() { //se non ha VE non può proseguire if (!has_module(VEAUT)) return error_box(TR("Modulo non autorizzato")); Tdninst dninst; if (!dninst.can_I_run(true)) return error_box(TR("Programma non autorizzato!")); return TSkeleton_application::create(); } void TMultimarche::main_loop() { _mask = new TMultimarche_mask; if (_mask->run() != K_QUIT) elabora(); delete _mask; _mask = NULL; } int ps0330100 (int argc, char **argv) { TMultimarche a; a.run(argc,argv, TR("Rimanenze per marca")); return true; }