#include #include class TReport_lv : public TReport { protected: virtual bool get_usr_val(const TString& name, TVariant& var) const; }; bool TReport_lv::get_usr_val(const TString& name, TVariant& var) const { if (name == "#NEXTCONS") { TRecordset& recset = *recordset(); const long clifo = recset.get("CODCF").as_int(); const long contr = recset.get("CODCONT").as_int(); const TDate dtcons = recset.get("DTCONS").as_date(); if (clifo > 0 && contr > 0 && dtcons.ok()) { // Scrivere qui il calcolo della prossima data di consegna ... // ... al momento non sono capace di farlo! TDate next_dtcons = dtcons; next_dtcons += 7; var = next_dtcons; return true; } } return TReport::get_usr_val(name, var); } class TStampa_tabelle_lv : public TSkeleton_application { protected: virtual void main_loop(); }; void TStampa_tabelle_lv::main_loop() { // Costruisce il nome del report in base alla riga di comando TFilename rep; if (argc() > 2) { rep = argv(2); rep.strip("-&%$^"); if (rep.len() == 3) rep.insert("lvst"); rep.ext("rep"); } TReport_lv r; bool ok = r.load(rep); // Controlla l'effettiva esistenza del report while (ok) { TReport_book b; ok = b.add(r); // Richiede parametri di stampa in base alla maschera omonima if (ok) b.print_or_preview(); // Stampa effettivamente } } int lv0200(int argc, char* argv[]) { TStampa_tabelle_lv app; app.run(argc, argv, TR("Stampa tabelle")); return 0; }