156 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
// trasferimenti
 | 
						|
 | 
						|
#include <applicat.h>
 | 
						|
#include <config.h>
 | 
						|
#include <mask.h>
 | 
						|
#include <relation.h>
 | 
						|
#include <urldefid.h>
 | 
						|
 | 
						|
#include "atfield.cpp"
 | 
						|
#include "lf.h"
 | 
						|
 | 
						|
//  nomi delle variabili in .ini per i campi
 | 
						|
#define FIELD  "FIELD"
 | 
						|
#define LEN		 "LEN"
 | 
						|
#define DEC		 "DEC"
 | 
						|
#define FLAGS	 "FLAGS"
 | 
						|
 | 
						|
//	nomi delle variabili in .ini per HEADER
 | 
						|
#define HEADER		"HEADER"
 | 
						|
#define NOMEFILE	"NOMEFILE"
 | 
						|
#define LUNGHEZZA	"LUNGHEZZA"
 | 
						|
#define RECORDSEP "RECORDSEP"
 | 
						|
#define FIELDSEP	"FIELDSEP"
 | 
						|
 | 
						|
class TTransfer_app : public TApplication
 | 
						|
{
 | 
						|
	TMask*				_msk;
 | 
						|
	TRelation*	  _rel;
 | 
						|
 | 
						|
protected:
 | 
						|
	virtual bool create();
 | 
						|
	virtual bool destroy();
 | 
						|
	virtual bool menu(MENU_TAG m)	;
 | 
						|
	virtual TMask& get_mask() { return *_msk; }
 | 
						|
	virtual TRelation* get_relation() const { return _rel; }
 | 
						|
	virtual void scarica();
 | 
						|
 | 
						|
public:
 | 
						|
	TTransfer_app() {}
 | 
						|
	
 | 
						|
};
 | 
						|
 | 
						|
HIDDEN inline TTransfer_app& app() { return (TTransfer_app&) main_app(); }
 | 
						|
 | 
						|
bool TTransfer_app::create()
 | 
						|
{
 | 
						|
	_msk = new TMask("at5100a");
 | 
						|
	_rel = new TRelation(LF_SOGGETTI);
 | 
						|
	
 | 
						|
	/*	
 | 
						|
  _rel->add("CTD", "CODTAB==CATDON",1,0,ALIAS_CTD);
 | 
						|
	_donaz = new TLocalisamfile(LF_DONAZ);
 | 
						|
	_contsan = new TLocalisamfile(LF_CONTSAN);
 | 
						|
	_sdonazioni = new TRecord_array(LF_DONAZ,DON_PROGDON);
 | 
						|
	_scontrolli = new TRecord_array(LF_CONTSAN,CON_PROGCON);
 | 
						|
	_asoggetti = new TAssoc_array();
 | 
						|
	
 | 
						|
	_msk->set_handler(F_INS_CONTROLLI,ins_controlli_handler);
 | 
						|
	TSheet_field& ss = (TSheet_field&)_msk->field(F_SOGGETTI);
 | 
						|
	ss.set_notify(soggetti_notify);
 | 
						|
	
 | 
						|
	//ss.sheet_mask().set_handler(F_S_CODICE,codice_handler);
 | 
						|
	ss.sheet_mask().set_handler(F_S_NOME,nome_handler);
 | 
						|
	*/
 | 
						|
	  
 | 
						|
  dispatch_e_menu(BAR_ITEM(1));
 | 
						|
  
 | 
						|
	return TRUE;
 | 
						|
}	
 | 
						|
 | 
						|
bool TTransfer_app::destroy()	
 | 
						|
{
 | 
						|
	delete _rel;
 | 
						|
	delete _msk;
 | 
						|
	/*
 | 
						|
	delete _donaz;
 | 
						|
	delete _contsan;
 | 
						|
	delete _sdonazioni;
 | 
						|
	delete _scontrolli;
 | 
						|
	delete _asoggetti;
 | 
						|
	*/
 | 
						|
	return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool TTransfer_app::menu(MENU_TAG m)
 | 
						|
{ 
 | 
						|
	TMask& msk = get_mask();
 | 
						|
	const TDate oggi(TODAY);
 | 
						|
	KEY tasto;
 | 
						|
	do
 | 
						|
	{
 | 
						|
  	tasto = msk.run();
 | 
						|
  	switch (tasto)
 | 
						|
  	{
 | 
						|
  		case K_ESC:		// annulla
 | 
						|
				msk.reset();
 | 
						|
  		break;
 | 
						|
  		case K_ENTER:	// registra
 | 
						|
  		{
 | 
						|
  			TTransfer_app::scarica();
 | 
						|
  			msk.reset();
 | 
						|
			}  			
 | 
						|
  		break;
 | 
						|
  	}	
 | 
						|
  }	
 | 
						|
	while (tasto != K_QUIT);
 | 
						|
  return FALSE;
 | 
						|
}  
 | 
						|
 | 
						|
void TTransfer_app::scarica()
 | 
						|
{
 | 
						|
 | 
						|
	TArray arr_exprs; 	// array delle TExpr corrispondenti ai campi da scaricare
 | 
						|
	TArray arr_fields;	// array dei TField_text (campi indicati in .ini)
 | 
						|
	
 | 
						|
	TConfig ini("esporta.ini");
 | 
						|
	TString_array campi;
 | 
						|
	int i = ini.list_paragraphs(campi);
 | 
						|
	int poshead = campi.find("HEADER");
 | 
						|
	campi.remove(poshead,TRUE);
 | 
						|
	for ( int k = 0; k < campi.items(); k++ )
 | 
						|
	{
 | 
						|
		const char* campo = campi.row(k);
 | 
						|
		TString_array vl;
 | 
						|
		int i = ini.list_variables(vl, TRUE, campo);
 | 
						|
		//for ( int j = 0; j < vl.items(); j++ )
 | 
						|
		int pos = vl.find(FIELD);
 | 
						|
		TExpr* espressione = vl.row(pos).get(1);
 | 
						|
		arr_exprs.add(espressione)
 | 
						|
		TToken_string variabile = vl.row(pos);
 | 
						|
			int pos = vl.find(LEN);
 | 
						|
			TToken_string variabile = vl.row(pos);
 | 
						|
			int pos = vl.find(DEC);
 | 
						|
			TToken_string variabile = vl.row(pos);
 | 
						|
						
 | 
						|
			
 | 
						|
			
 | 
						|
		}
 | 
						|
		
 | 
						|
		/*		
 | 
						|
		TText_field campo()
 | 
						|
		
 | 
						|
		arr_fields.add();
 | 
						|
		*/		
 | 
						|
	}
 | 
						|
  
 | 
						|
}	
 | 
						|
 | 
						|
 | 
						|
int at5100(int argc, char* argv[])
 | 
						|
{
 | 
						|
	TTransfer_app a;
 | 
						|
	a.run(argc, argv, "Scarico dati");
 | 
						|
	return 0;
 | 
						|
}
 |