Patch level : 12.0 nopatch
Files correlati : Commento : report application
This commit is contained in:
parent
4fbb00fdb5
commit
4ac26c95d3
@ -129,6 +129,7 @@ TTrec * TReport_application::get_dbase_recdesc(TReport & rep, const TAutomask &
|
|||||||
fieldname = fld.formatted_text();
|
fieldname = fld.formatted_text();
|
||||||
fieldname.cut(9);
|
fieldname.cut(9);
|
||||||
fieldname.strip_spaces();
|
fieldname.strip_spaces();
|
||||||
|
fieldname.strip(",.");
|
||||||
fieldname.upper();
|
fieldname.upper();
|
||||||
|
|
||||||
if (nfields == 0)
|
if (nfields == 0)
|
||||||
@ -169,75 +170,157 @@ void TReport_application::main_loop()
|
|||||||
TAutomask & m = get_mask();
|
TAutomask & m = get_mask();
|
||||||
KEY k;
|
KEY k;
|
||||||
bool has_rs = main_app().has_module(RSAUT, CHK_DONGLE);
|
bool has_rs = main_app().has_module(RSAUT, CHK_DONGLE);
|
||||||
|
TString arg = argv(2);
|
||||||
|
|
||||||
if (m.exist(DLG_EXPORT))
|
arg.trim();
|
||||||
m.enable(DLG_EXPORT, has_rs);
|
|
||||||
if (m.exist(DLG_EXPORT_EXCEL))
|
if (arg.starts_with("-b"))
|
||||||
m.enable(DLG_EXPORT_EXCEL, has_rs);
|
|
||||||
if (m.exist(DLG_EXPORT_PDF))
|
|
||||||
m.enable(DLG_EXPORT_PDF, has_rs);
|
|
||||||
if (m.exist(DLG_EXPORT_DBF))
|
|
||||||
m.enable(DLG_EXPORT_DBF, has_rs);
|
|
||||||
if (m.exist(DLG_EXPORT_TEXT))
|
|
||||||
m.enable(DLG_EXPORT_TEXT, has_rs);
|
|
||||||
if (m.exist(DLG_OUTPUT))
|
|
||||||
m.show(DLG_OUTPUT, has_rs);
|
|
||||||
while ((k = m.run()) != K_QUIT)
|
|
||||||
{
|
{
|
||||||
TReport & rep = get_report(m);
|
TFilename fname = arg.mid(2);
|
||||||
TReport_book b(title());
|
|
||||||
TFilename name = get_output_filename(m, rep);
|
|
||||||
bool ask_filename = name.blank();
|
|
||||||
export_type type = _export_printer;
|
|
||||||
|
|
||||||
switch (k)
|
if(fname.exist())
|
||||||
{
|
{
|
||||||
case K_EXCEL:
|
m.load(fname);
|
||||||
type = _export_excel;
|
|
||||||
break;
|
TReport & rep = get_report(m);
|
||||||
case K_PDF:
|
TReport_book b(title());
|
||||||
type = _export_pdf;
|
export_type type = _export_printer;
|
||||||
break;
|
TFilename name = argv(4);
|
||||||
case K_TEXT:
|
bool ask_filename = name.blank();
|
||||||
type = _export_text;
|
|
||||||
break;
|
|
||||||
case K_DBF:
|
|
||||||
type = _export_dbase;
|
|
||||||
break;
|
|
||||||
case K_VISUALIZE:
|
|
||||||
type = _export_visualize;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
|
|
||||||
|
if (name.blank() || name.starts_with("-u"))
|
||||||
|
name = get_output_filename(m, rep);
|
||||||
|
k = 20000 + UPCASE(argv(3)[0]);
|
||||||
|
switch (k)
|
||||||
|
{
|
||||||
|
case K_PRINT:
|
||||||
|
type = _export_printer;
|
||||||
|
break;
|
||||||
|
case K_EXPORT:
|
||||||
|
type = _export_generic;
|
||||||
|
break;
|
||||||
|
case K_EXCEL:
|
||||||
|
type = _export_excel;
|
||||||
|
break;
|
||||||
|
case K_PDF:
|
||||||
|
type = _export_pdf;
|
||||||
|
break;
|
||||||
|
case K_TEXT:
|
||||||
|
type = _export_text;
|
||||||
|
break;
|
||||||
|
case K_DBF:
|
||||||
|
type = _export_dbase;
|
||||||
|
break;
|
||||||
|
case K_VISUALIZE:
|
||||||
|
type = _export_visualize;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
execute_print(b, m, rep, type);
|
||||||
|
switch (k)
|
||||||
|
{
|
||||||
|
case K_ENTER:
|
||||||
|
case K_PRINT:
|
||||||
|
print(b, m, rep);
|
||||||
|
break;
|
||||||
|
case K_EXPORT:
|
||||||
|
export(b, m, rep);
|
||||||
|
break;
|
||||||
|
case K_EXCEL:
|
||||||
|
b.export_excel(name);
|
||||||
|
break;
|
||||||
|
case K_PDF:
|
||||||
|
b.export_pdf(name);
|
||||||
|
break;
|
||||||
|
case K_TEXT:
|
||||||
|
b.export_text(name);
|
||||||
|
break;
|
||||||
|
case K_DBF:
|
||||||
|
b.export_dbase(name, get_dbase_recdesc(rep, m), false, false, ask_filename);
|
||||||
|
break;
|
||||||
|
case K_VISUALIZE:
|
||||||
|
preview(b, m, rep);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
execute_print(b, m, rep, type);
|
}
|
||||||
switch (k)
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (m.exist(DLG_EXPORT))
|
||||||
|
m.enable(DLG_EXPORT, has_rs);
|
||||||
|
if (m.exist(DLG_EXPORT_EXCEL))
|
||||||
|
m.enable(DLG_EXPORT_EXCEL, has_rs);
|
||||||
|
if (m.exist(DLG_EXPORT_PDF))
|
||||||
|
m.enable(DLG_EXPORT_PDF, has_rs);
|
||||||
|
if (m.exist(DLG_EXPORT_DBF))
|
||||||
|
m.enable(DLG_EXPORT_DBF, has_rs);
|
||||||
|
if (m.exist(DLG_EXPORT_TEXT))
|
||||||
|
m.enable(DLG_EXPORT_TEXT, has_rs);
|
||||||
|
if (m.exist(DLG_OUTPUT))
|
||||||
|
m.show(DLG_OUTPUT, has_rs);
|
||||||
|
while ((k = m.run()) != K_QUIT)
|
||||||
{
|
{
|
||||||
case K_ENTER:
|
TReport & rep = get_report(m);
|
||||||
case K_PRINT:
|
TReport_book b(title());
|
||||||
b.print_or_preview();
|
TFilename name = get_output_filename(m, rep);
|
||||||
break;
|
bool ask_filename = name.blank();
|
||||||
case K_EXPORT:
|
export_type type = _export_printer;
|
||||||
b.esporta();
|
|
||||||
break;
|
switch (k)
|
||||||
case K_EXCEL:
|
{
|
||||||
b.export_excel(name, false, true, ask_filename);
|
case K_EXCEL:
|
||||||
break;
|
type = _export_excel;
|
||||||
case K_PDF:
|
break;
|
||||||
b.export_pdf(name, false, true, ask_filename);
|
case K_EXPORT:
|
||||||
break;
|
type = _export_generic;
|
||||||
case K_TEXT:
|
break;
|
||||||
b.export_text(name, false, true, ask_filename);
|
case K_PDF:
|
||||||
break;
|
type = _export_pdf;
|
||||||
case K_DBF :
|
break;
|
||||||
b.export_dbase(name, false, get_dbase_recdesc(rep, m), true, ask_filename);
|
case K_TEXT:
|
||||||
break;
|
type = _export_text;
|
||||||
case K_VISUALIZE:
|
break;
|
||||||
b.preview();
|
case K_DBF:
|
||||||
break;
|
type = _export_dbase;
|
||||||
default:
|
break;
|
||||||
break;
|
case K_VISUALIZE:
|
||||||
|
type = _export_visualize;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
execute_print(b, m, rep, type);
|
||||||
|
switch (k)
|
||||||
|
{
|
||||||
|
case K_ENTER:
|
||||||
|
case K_PRINT:
|
||||||
|
b.print_or_preview();
|
||||||
|
break;
|
||||||
|
case K_EXPORT:
|
||||||
|
esporta(b, m, rep);
|
||||||
|
break;
|
||||||
|
case K_EXCEL:
|
||||||
|
export_excel(name, b, m, rep);
|
||||||
|
break;
|
||||||
|
case K_PDF:
|
||||||
|
export_pdf(name, b, m, rep);
|
||||||
|
break;
|
||||||
|
case K_TEXT:
|
||||||
|
export_text(name, b, m, rep);
|
||||||
|
break;
|
||||||
|
case K_DBF:
|
||||||
|
export_dbase(name, b, m, rep);
|
||||||
|
break;
|
||||||
|
case K_VISUALIZE:
|
||||||
|
b.preview();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -249,5 +332,11 @@ const char * TReport_application::get_output_filename(const TAutomask & mask, co
|
|||||||
if (output.blank())
|
if (output.blank())
|
||||||
output.tempdir();
|
output.tempdir();
|
||||||
output.add(output_name(mask, rep));
|
output.add(output_name(mask, rep));
|
||||||
|
|
||||||
|
TString & t = get_tmp_string(20);
|
||||||
|
|
||||||
|
_strtime_s(t.get_buffer(), t.size());
|
||||||
|
t.strip(":");
|
||||||
|
output << '_' << today.date2ansi() << '_' << t;
|
||||||
return get_tmp_string() = output;
|
return get_tmp_string() = output;
|
||||||
}
|
}
|
@ -54,11 +54,17 @@ protected: // TApplication
|
|||||||
virtual void execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type = _export_printer);
|
virtual void execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type = _export_printer);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual const char * title() const { return title(); }
|
|
||||||
virtual short output_id() const { return DLG_OUTPUT; }
|
virtual short output_id() const { return DLG_OUTPUT; }
|
||||||
virtual short report_id() const { return DLG_REPORT; }
|
virtual short report_id() const { return DLG_REPORT; }
|
||||||
const char * report_name(const TAutomask & mask) const { return mask.get(report_id()); }
|
const char * report_name(const TAutomask & mask) const { return mask.get(report_id()); }
|
||||||
const char * output_name(const TAutomask & mask, const TReport & rep) const { return report_name(mask); }
|
virtual void print(TReport_book & book, TAutomask & mask, TReport & rep) { book.print_or_preview(); }
|
||||||
|
virtual void esporta(TReport_book & book, TAutomask & mask, TReport & rep) { book.esporta();}
|
||||||
|
virtual void export_excel(TFilename & name, TReport_book & book, TAutomask & mask, TReport & rep) { book.export_excel(name, false, true); }
|
||||||
|
virtual void export_pdf(TFilename & name, TReport_book & book, TAutomask & mask, TReport & rep) { book.export_pdf(name, false, true); }
|
||||||
|
virtual void export_text(TFilename & name, TReport_book & book, TAutomask & mask, TReport & rep) { book.export_text(name, 0, false, true); }
|
||||||
|
virtual void export_dbase(TFilename & name, TReport_book & book, TAutomask & mask, TReport & rep) { book.export_dbase(name, get_dbase_recdesc(rep, mask), false, true); }
|
||||||
|
virtual void preview(TReport_book & book, TAutomask & mask, TReport & rep) { book.preview(); }
|
||||||
|
virtual const char * output_name(const TAutomask & mask, const TReport & rep) const { return report_name(mask); }
|
||||||
const char * get_output_filename(const TAutomask & mask, const TReport & rep);
|
const char * get_output_filename(const TAutomask & mask, const TReport & rep);
|
||||||
// @cmember Costruttore
|
// @cmember Costruttore
|
||||||
TReport_application() { }
|
TReport_application() { }
|
||||||
|
@ -960,7 +960,7 @@ TSize TBook::page_res() const
|
|||||||
|
|
||||||
bool TBook::open_page()
|
bool TBook::open_page()
|
||||||
{
|
{
|
||||||
if (_out == NULL) // Sto per scrivere la prima pagina
|
if (_out == nullptr) // Sto per scrivere la prima pagina
|
||||||
{
|
{
|
||||||
_out = new ofstream(_file);
|
_out = new ofstream(_file);
|
||||||
_max_frame.x = _max_frame.y = 0;
|
_max_frame.x = _max_frame.y = 0;
|
||||||
@ -1644,8 +1644,12 @@ HIDDEN bool ask_export_filename(TFilename& fname)
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TBook::export_text(TFilename& fname, bool signature, int size, bool goto_url, bool ask_filename)
|
bool TBook::export_text(TFilename& fname, int size, bool signature, bool goto_url, bool ask_filename)
|
||||||
{
|
{
|
||||||
|
ask_filename != fname.blank();
|
||||||
|
if (ask_filename && !ask_export_filename(fname))
|
||||||
|
return false;
|
||||||
|
|
||||||
TString ext = fname.ext(); ext.lower();
|
TString ext = fname.ext(); ext.lower();
|
||||||
|
|
||||||
if (ext.blank())
|
if (ext.blank())
|
||||||
@ -1655,9 +1659,6 @@ bool TBook::export_text(TFilename& fname, bool signature, int size, bool goto_ur
|
|||||||
if (ext.starts_with("xls") || ext.starts_with("htm"))
|
if (ext.starts_with("xls") || ext.starts_with("htm"))
|
||||||
return export_excel(fname, signature, goto_url, ask_filename);
|
return export_excel(fname, signature, goto_url, ask_filename);
|
||||||
|
|
||||||
if (ask_filename && !ask_export_filename(fname))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
TToken_string str(1024, '=');
|
TToken_string str(1024, '=');
|
||||||
|
|
||||||
ifstream ifs(_file);
|
ifstream ifs(_file);
|
||||||
@ -1846,8 +1847,12 @@ static void reformat_excel(TString& str)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TBook::export_dbase(TFilename& fname, bool signature, TTrec * desc, bool goto_url, bool ask_filename)
|
bool TBook::export_dbase(TFilename& fname, TTrec * desc, bool signature, bool goto_url, bool ask_filename)
|
||||||
{
|
{
|
||||||
|
ask_filename != fname.blank();
|
||||||
|
if (ask_filename && !ask_export_filename(fname))
|
||||||
|
return false;
|
||||||
|
|
||||||
TFilename temp;
|
TFilename temp;
|
||||||
TToken_string line(8192, '\t');
|
TToken_string line(8192, '\t');
|
||||||
TString ext = fname.ext(); ext.lower();
|
TString ext = fname.ext(); ext.lower();
|
||||||
@ -1936,13 +1941,15 @@ bool TBook::export_dbase(TFilename& fname, bool signature, TTrec * desc, bool go
|
|||||||
|
|
||||||
bool TBook::export_excel(TFilename& fname, bool signature, bool goto_url, bool ask_filename)
|
bool TBook::export_excel(TFilename& fname, bool signature, bool goto_url, bool ask_filename)
|
||||||
{
|
{
|
||||||
|
ask_filename != fname.blank();
|
||||||
|
if (ask_filename && !ask_export_filename(fname))
|
||||||
|
return false;
|
||||||
|
|
||||||
TTabulator tab;
|
TTabulator tab;
|
||||||
TString ext = fname.ext(); ext.lower();
|
TString ext = fname.ext(); ext.lower();
|
||||||
|
|
||||||
if (ext.blank())
|
if (ext.blank())
|
||||||
fname.ext("xls");
|
fname.ext("xls");
|
||||||
if (ask_filename && !ask_export_filename(fname))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
int row = 0, col = 0, wid = 0;
|
int row = 0, col = 0, wid = 0;
|
||||||
TToken_string str(1024, '=');
|
TToken_string str(1024, '=');
|
||||||
@ -2380,19 +2387,21 @@ bool TBook::print(size_t pagefrom, size_t pageto, word copies)
|
|||||||
|
|
||||||
bool TBook::export_pdf(TFilename& filename, bool signature, bool goto_url, bool ask_filename)
|
bool TBook::export_pdf(TFilename& filename, bool signature, bool goto_url, bool ask_filename)
|
||||||
{
|
{
|
||||||
TString ext = filename.ext(); ext.lower();
|
|
||||||
|
|
||||||
if (ext.blank())
|
|
||||||
filename.ext("pdf");
|
|
||||||
bool ok = (pages() > 0) && main_app().has_module(RSAUT); // Controllo paranoico dei permessi
|
bool ok = (pages() > 0) && main_app().has_module(RSAUT); // Controllo paranoico dei permessi
|
||||||
if (ok)
|
if (ok)
|
||||||
{
|
{
|
||||||
|
ask_filename |= filename.blank();
|
||||||
if (ask_filename && !ask_export_filename(filename))
|
if (ask_filename && !ask_export_filename(filename))
|
||||||
return false;
|
return false;
|
||||||
// Evita problemi di aggiornamento del pdf: deve sempre rigenerarlo!
|
// Evita problemi di aggiornamento del pdf: deve sempre rigenerarlo!
|
||||||
if (filename.exist() && !filename.fremove())
|
if (filename.exist() && !filename.fremove())
|
||||||
return cantwrite_box(filename);
|
return cantwrite_box(filename);
|
||||||
|
|
||||||
|
TString ext = filename.ext(); ext.lower();
|
||||||
|
|
||||||
|
if (ext.blank())
|
||||||
|
filename.ext("pdf");
|
||||||
|
|
||||||
_pdf_file = filename;
|
_pdf_file = filename;
|
||||||
_pagefrom = 1;
|
_pagefrom = 1;
|
||||||
@ -2437,7 +2446,7 @@ bool TBook::esporta()
|
|||||||
break;
|
break;
|
||||||
case 'E':
|
case 'E':
|
||||||
case 'e':
|
case 'e':
|
||||||
ok = export_text(fname, signature, size);
|
ok = export_text(fname, size, signature);
|
||||||
if (ok)
|
if (ok)
|
||||||
xvt_sys_goto_url(fname, "open");
|
xvt_sys_goto_url(fname, "open");
|
||||||
break;
|
break;
|
||||||
@ -2458,7 +2467,7 @@ bool TBook::esporta()
|
|||||||
xvt_sys_goto_url(fname, "open");
|
xvt_sys_goto_url(fname, "open");
|
||||||
break;
|
break;
|
||||||
case K_DBF:
|
case K_DBF:
|
||||||
ok = export_dbase(fname, signature);
|
ok = export_dbase(fname, nullptr, signature);
|
||||||
if (ok)
|
if (ok)
|
||||||
xvt_sys_goto_url(fname, "open");
|
xvt_sys_goto_url(fname, "open");
|
||||||
break;
|
break;
|
||||||
@ -2521,7 +2530,7 @@ bool TBook::print_or_preview()
|
|||||||
case exportprinter:
|
case exportprinter:
|
||||||
{
|
{
|
||||||
TFilename f = printer().get_export_file();
|
TFilename f = printer().get_export_file();
|
||||||
ok = export_text(f, false, 0);
|
ok = export_text(f, 0, false);
|
||||||
if (ok)
|
if (ok)
|
||||||
xvt_sys_goto_url(f, "open");
|
xvt_sys_goto_url(f, "open");
|
||||||
}
|
}
|
||||||
@ -2551,6 +2560,7 @@ TBook::TBook(const char* name)
|
|||||||
_file.temp("rep", "rap");
|
_file.temp("rep", "rap");
|
||||||
_is_temporary = true;
|
_is_temporary = true;
|
||||||
}
|
}
|
||||||
|
ofstream out(_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
TBook::~TBook()
|
TBook::~TBook()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user