Files correlati : Ricompilazione Demo : [ ] Commento : 0001446: 001638 - stampa cambi giornalieri Descrizione la stampa dei cambi giornalieri non produce risultati se la selezione è fatta per cambio, stampa invece correttamente selezionando per data. git-svn-id: svn://10.65.10.50/trunk@19529 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			156 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
//Programma per stampa report tabelle
 | 
						|
 | 
						|
#include <applicat.h>
 | 
						|
#include <automask.h>
 | 
						|
#include <relation.h>
 | 
						|
#include <reprint.h>
 | 
						|
#include <tabutil.h>
 | 
						|
#include "ba3200.h"
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TMask_print_table
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TMask_print_table : public TAutomask
 | 
						|
{
 | 
						|
protected:
 | 
						|
  bool on_field_event(TOperable_field& o, TField_event e, long jolly) {return true;}
 | 
						|
 | 
						|
public:
 | 
						|
  TMask_print_table(const char * name);
 | 
						|
  virtual ~TMask_print_table() {}
 | 
						|
};
 | 
						|
 | 
						|
TMask_print_table::TMask_print_table(const char* name)
 | 
						|
								  :TAutomask(name)
 | 
						|
{
 | 
						|
  const int reporty = toolbar() != NULL_WIN ? -2 : -3;
 | 
						|
  TEdit_field & f = add_string(F_REPORT, 0, "Report    ", 2, reporty, 20, "B");
 | 
						|
  f.set_query_button(new TReport_select(&f, name));
 | 
						|
  f.enable_check();
 | 
						|
}
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TTable_recordset
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TTable_recordset : public TISAM_recordset
 | 
						|
{
 | 
						|
	TMask* _mask;
 | 
						|
 | 
						|
protected:
 | 
						|
	virtual void set_custom_filter(TCursor& cursor) const;
 | 
						|
 | 
						|
public:
 | 
						|
  TTable_recordset(const char* use, TMask* mask) : TISAM_recordset(use), _mask(mask) { }
 | 
						|
  virtual ~TTable_recordset() { }
 | 
						|
};
 | 
						|
 | 
						|
void TTable_recordset::set_custom_filter(TCursor& cursor) const
 | 
						|
{
 | 
						|
	CHECK(_mask, "NULL selection mask");
 | 
						|
  TRectype from(cursor.curr()); from.zero();
 | 
						|
  TRectype to(from);
 | 
						|
  bool key1_full = false;
 | 
						|
  TString80 val;
 | 
						|
  for (int i = _mask->fields() - 1; i >= 0; i--)
 | 
						|
  {
 | 
						|
    const TMask_field& f = _mask->fld(i);
 | 
						|
  	const TFieldref* ref = f.field();
 | 
						|
		if (ref != NULL && ref->name() == "CODTAB" && !f.empty())
 | 
						|
		{
 | 
						|
			const bool is_final = f.in_group(2);
 | 
						|
      val = f.get();
 | 
						|
      if (f.is_kind_of(CLASS_DATE_FIELD))
 | 
						|
        val = TDate(val).string(full, '\0', full, full, amg_date);
 | 
						|
			ref->write(val, is_final ? to : from);
 | 
						|
      key1_full = true;
 | 
						|
		}
 | 
						|
  }
 | 
						|
  if (key1_full) // Se e' stato impostato il filtro tramite CODTAB (non #FROM e #TO)
 | 
						|
  	cursor.setregion(from, to);
 | 
						|
}
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TTable_report
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TTable_report : public TReport
 | 
						|
{
 | 
						|
	TMask* _mask;
 | 
						|
 | 
						|
protected:
 | 
						|
	virtual bool set_recordset(const TString& query);
 | 
						|
 | 
						|
public:
 | 
						|
  virtual bool use_mask() { return false;}
 | 
						|
 | 
						|
  TTable_report(TMask * mask) : _mask(mask) {}
 | 
						|
  virtual ~TTable_report() {}
 | 
						|
};
 | 
						|
 | 
						|
bool TTable_report::set_recordset(const TString& query)
 | 
						|
{
 | 
						|
  return TReport::set_recordset(new TTable_recordset(query, _mask));
 | 
						|
}
 | 
						|
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
// TTable_reporter 
 | 
						|
///////////////////////////////////////////////////////////
 | 
						|
 | 
						|
class TTable_reporter : public TSkeleton_application
 | 
						|
{ 
 | 
						|
protected:
 | 
						|
  virtual void main_loop();
 | 
						|
 | 
						|
public:
 | 
						|
  bool get_rpt_name(TFilename& rptname) const;
 | 
						|
};
 | 
						|
 | 
						|
bool TTable_reporter::get_rpt_name(TFilename& rptname) const
 | 
						|
{
 | 
						|
  TTable tab(argv(2));  
 | 
						|
  rptname = tab.module();
 | 
						|
  rptname << "st" << tab.name();
 | 
						|
  rptname.ext("rep");
 | 
						|
  rptname.lower();
 | 
						|
  return rptname.custom_path();
 | 
						|
}
 | 
						|
 | 
						|
void TTable_reporter::main_loop()
 | 
						|
{
 | 
						|
  TFilename rptname;
 | 
						|
  if (get_rpt_name(rptname))
 | 
						|
  {
 | 
						|
	  TFilename msk(rptname.name()); msk.ext(""); msk.lower();
 | 
						|
	  TMask_print_table m(msk);
 | 
						|
  
 | 
						|
    while (m.run() == K_ENTER)
 | 
						|
    {
 | 
						|
	    TTable_report rep(&m);
 | 
						|
			TString name(m.get(F_REPORT));
 | 
						|
 | 
						|
			if (name.blank())
 | 
						|
				name = rptname;
 | 
						|
 | 
						|
      if (rep.load(name))
 | 
						|
      {
 | 
						|
    	  rep.mask2report(m);
 | 
						|
        rep.print_or_preview();
 | 
						|
      }
 | 
						|
      else
 | 
						|
        error_box(FR("Report %s mancante !"), name);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  else
 | 
						|
    error_box(FR("Manca il file %s !"), (const char *)rptname);
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
int ba3200(int argc, char* argv[])
 | 
						|
{     
 | 
						|
  TTable_reporter app;
 | 
						|
  app.run(argc, argv, TR("Stampa Tabelle"));
 | 
						|
  return 0;
 | 
						|
}
 |