Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@20268 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			147 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
#include "at9.h"
 | 
						||
#include "at9600a.h"
 | 
						||
 | 
						||
#include <applicat.h>
 | 
						||
#include <automask.h>
 | 
						||
#include <progind.h>
 | 
						||
#include <recarray.h>
 | 
						||
#include <recset.h>
 | 
						||
#include <relation.h>
 | 
						||
 | 
						||
#include "benem.h"
 | 
						||
#include "soggetti.h"
 | 
						||
#include "sezioni.h"
 | 
						||
 | 
						||
///////////////////////////////////////////////////////////
 | 
						||
// Maschera
 | 
						||
///////////////////////////////////////////////////////////
 | 
						||
 | 
						||
class TSort_benem_mask : public TAutomask
 | 
						||
{
 | 
						||
 | 
						||
public:
 | 
						||
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
 | 
						||
  TSort_benem_mask();
 | 
						||
	~TSort_benem_mask();
 | 
						||
};
 | 
						||
 | 
						||
bool TSort_benem_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
 | 
						||
{
 | 
						||
  return true;
 | 
						||
}
 | 
						||
 | 
						||
TSort_benem_mask::TSort_benem_mask() : TAutomask("at9700a") 
 | 
						||
{
 | 
						||
}
 | 
						||
 | 
						||
TSort_benem_mask::~TSort_benem_mask()
 | 
						||
{
 | 
						||
}
 | 
						||
 | 
						||
///////////////////////////////////////////////////////////
 | 
						||
// Applicazione
 | 
						||
///////////////////////////////////////////////////////////
 | 
						||
 | 
						||
class TSort_benem_app : public TSkeleton_application
 | 
						||
{
 | 
						||
 | 
						||
protected:
 | 
						||
	virtual void main_loop();
 | 
						||
 | 
						||
public:
 | 
						||
	void riordina_benemerenze(const TMask& msk) const;
 | 
						||
  
 | 
						||
};
 | 
						||
 | 
						||
static int compare_benem(const TObject** o1, const TObject** o2)
 | 
						||
{
 | 
						||
  TRectype* r1 = (TRectype*)*o1;
 | 
						||
  TRectype* r2 = (TRectype*)*o2;
 | 
						||
  
 | 
						||
  const TString b1(r1->get(BEN_TIPOBEN));
 | 
						||
  const TString b2(r2->get(BEN_TIPOBEN));
 | 
						||
  
 | 
						||
  int b=0;
 | 
						||
  if (b1>b2) b=+1;
 | 
						||
  else
 | 
						||
  	if (b1<b2) b=-1;
 | 
						||
	return b;
 | 
						||
}
 | 
						||
 | 
						||
void TSort_benem_app::riordina_benemerenze(const TMask& msk) const
 | 
						||
{
 | 
						||
	//seleziona i soggetti delle sezioni/sottosezioni selezionate
 | 
						||
	TString query;
 | 
						||
	query << "USE SOGGETTI KEY 3\n";
 | 
						||
	query << "FROM CODSEZ=#DACODSEZ CODSOT=#DACODSOT\n";
 | 
						||
	query << "TO CODSEZ=#ACODSEZ CODSOT=#ACODSOT";
 | 
						||
 | 
						||
	TISAM_recordset soggetti(query);
 | 
						||
 | 
						||
	const TString4 dacodsez = msk.get(F_SEZINI);
 | 
						||
	const TString4 dacodsot = msk.get(F_SOTINI);
 | 
						||
	const TString4 acodsez = msk.get(F_SEZFIN);
 | 
						||
	const TString4 acodsot = msk.get(F_SOTFIN);
 | 
						||
 | 
						||
	soggetti.set_var("#DACODSEZ", dacodsez);
 | 
						||
	soggetti.set_var("#ACODSEZ", acodsez);
 | 
						||
	soggetti.set_var("#DACODSOT", dacodsot);
 | 
						||
	soggetti.set_var("#ACODSOT", acodsot);
 | 
						||
 | 
						||
	//giro sui soggetti selezionati
 | 
						||
	const long items = soggetti.items();
 | 
						||
	TProgind pi(items, "Riordinamento benemerenze...", true, true);
 | 
						||
 | 
						||
	const TRectype& rec_sog = soggetti.cursor()->curr();
 | 
						||
	for (bool ok = soggetti.move_first(); ok; ok = soggetti.move_next())
 | 
						||
	{
 | 
						||
    if (!pi.addstatus(1))
 | 
						||
      break;
 | 
						||
 | 
						||
		//per ogni soggetto deve trovare le benemerenze, di norma ordinate alla cazzo
 | 
						||
		const long codice = rec_sog.get_long(SOG_CODICE);
 | 
						||
 | 
						||
		TString query_benem;
 | 
						||
		query_benem << "USE BENEM\nFROM CODICE=#CODICE\nTO CODICE=#CODICE";
 | 
						||
		TISAM_recordset benemerenze(query_benem);
 | 
						||
		benemerenze.set_var("#CODICE", codice);
 | 
						||
		const long ben_items = benemerenze.items();
 | 
						||
 | 
						||
		if (ben_items > 0)
 | 
						||
		{
 | 
						||
			//aggiunge le benemerenze ad un record_array
 | 
						||
			TRecord_array sogg_benem(LF_BENEM, BEN_PROGBEN);
 | 
						||
			TRectype rec_ben(LF_BENEM);
 | 
						||
			rec_ben.put(BEN_CODICE, codice);
 | 
						||
			/*const TRectype& rec_ben = benemerenze.cursor()->curr();
 | 
						||
			for (bool ok = benemerenze.move_first(); ok; ok = benemerenze.move_next())
 | 
						||
			{
 | 
						||
				sogg_benem.add_row(rec_ben);
 | 
						||
			}*/
 | 
						||
 | 
						||
			sogg_benem.read(rec_ben);
 | 
						||
			//magicamente sorta il record_array!
 | 
						||
			sogg_benem.sort(compare_benem);
 | 
						||
 | 
						||
			for (int i = 1; i <= sogg_benem.rows(); i++)
 | 
						||
				sogg_benem[i].put(BEN_PROGBEN, i);
 | 
						||
			//ancora pi<70> magicamente riscrive le benemerenze in modo ordinato!
 | 
						||
			sogg_benem.rewrite();
 | 
						||
		}
 | 
						||
 | 
						||
	}
 | 
						||
}
 | 
						||
 | 
						||
void TSort_benem_app::main_loop()
 | 
						||
{
 | 
						||
  TSort_benem_mask m;
 | 
						||
  while (m.run() == K_ENTER)
 | 
						||
		riordina_benemerenze(m);
 | 
						||
}
 | 
						||
 | 
						||
int at9700(int argc, char* argv[])
 | 
						||
{
 | 
						||
  TSort_benem_app app;
 | 
						||
  app.run(argc, argv, TR("Riordinamento straordinario benemerenze"));
 | 
						||
  return 0;
 | 
						||
} |