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.cut(9);
|
||||
fieldname.strip_spaces();
|
||||
fieldname.strip(",.");
|
||||
fieldname.upper();
|
||||
|
||||
if (nfields == 0)
|
||||
@ -169,75 +170,157 @@ void TReport_application::main_loop()
|
||||
TAutomask & m = get_mask();
|
||||
KEY k;
|
||||
bool has_rs = main_app().has_module(RSAUT, CHK_DONGLE);
|
||||
TString arg = argv(2);
|
||||
|
||||
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)
|
||||
arg.trim();
|
||||
|
||||
if (arg.starts_with("-b"))
|
||||
{
|
||||
TReport & rep = get_report(m);
|
||||
TReport_book b(title());
|
||||
TFilename name = get_output_filename(m, rep);
|
||||
bool ask_filename = name.blank();
|
||||
export_type type = _export_printer;
|
||||
TFilename fname = arg.mid(2);
|
||||
|
||||
switch (k)
|
||||
if(fname.exist())
|
||||
{
|
||||
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;
|
||||
m.load(fname);
|
||||
|
||||
TReport & rep = get_report(m);
|
||||
TReport_book b(title());
|
||||
export_type type = _export_printer;
|
||||
TFilename name = argv(4);
|
||||
bool ask_filename = name.blank();
|
||||
|
||||
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:
|
||||
case K_PRINT:
|
||||
b.print_or_preview();
|
||||
break;
|
||||
case K_EXPORT:
|
||||
b.esporta();
|
||||
break;
|
||||
case K_EXCEL:
|
||||
b.export_excel(name, false, true, ask_filename);
|
||||
break;
|
||||
case K_PDF:
|
||||
b.export_pdf(name, false, true, ask_filename);
|
||||
break;
|
||||
case K_TEXT:
|
||||
b.export_text(name, false, true, ask_filename);
|
||||
break;
|
||||
case K_DBF :
|
||||
b.export_dbase(name, false, get_dbase_recdesc(rep, m), true, ask_filename);
|
||||
break;
|
||||
case K_VISUALIZE:
|
||||
b.preview();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
TReport & rep = get_report(m);
|
||||
TReport_book b(title());
|
||||
TFilename name = get_output_filename(m, rep);
|
||||
bool ask_filename = name.blank();
|
||||
export_type type = _export_printer;
|
||||
|
||||
switch (k)
|
||||
{
|
||||
case K_EXCEL:
|
||||
type = _export_excel;
|
||||
break;
|
||||
case K_EXPORT:
|
||||
type = _export_generic;
|
||||
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:
|
||||
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())
|
||||
output.tempdir();
|
||||
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;
|
||||
}
|
@ -54,11 +54,17 @@ protected: // TApplication
|
||||
virtual void execute_print(TReport_book & book, TAutomask & mask, TReport & rep, export_type type = _export_printer);
|
||||
|
||||
public:
|
||||
virtual const char * title() const { return title(); }
|
||||
virtual short output_id() const { return DLG_OUTPUT; }
|
||||
virtual short report_id() const { return DLG_REPORT; }
|
||||
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);
|
||||
// @cmember Costruttore
|
||||
TReport_application() { }
|
||||
|
@ -960,7 +960,7 @@ TSize TBook::page_res() const
|
||||
|
||||
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);
|
||||
_max_frame.x = _max_frame.y = 0;
|
||||
@ -1644,8 +1644,12 @@ HIDDEN bool ask_export_filename(TFilename& fname)
|
||||
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();
|
||||
|
||||
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"))
|
||||
return export_excel(fname, signature, goto_url, ask_filename);
|
||||
|
||||
if (ask_filename && !ask_export_filename(fname))
|
||||
return false;
|
||||
|
||||
TToken_string str(1024, '=');
|
||||
|
||||
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;
|
||||
TToken_string line(8192, '\t');
|
||||
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)
|
||||
{
|
||||
ask_filename != fname.blank();
|
||||
if (ask_filename && !ask_export_filename(fname))
|
||||
return false;
|
||||
|
||||
TTabulator tab;
|
||||
TString ext = fname.ext(); ext.lower();
|
||||
|
||||
if (ext.blank())
|
||||
fname.ext("xls");
|
||||
if (ask_filename && !ask_export_filename(fname))
|
||||
return false;
|
||||
|
||||
int row = 0, col = 0, wid = 0;
|
||||
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)
|
||||
{
|
||||
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
|
||||
if (ok)
|
||||
{
|
||||
ask_filename |= filename.blank();
|
||||
if (ask_filename && !ask_export_filename(filename))
|
||||
return false;
|
||||
// Evita problemi di aggiornamento del pdf: deve sempre rigenerarlo!
|
||||
if (filename.exist() && !filename.fremove())
|
||||
return cantwrite_box(filename);
|
||||
|
||||
TString ext = filename.ext(); ext.lower();
|
||||
|
||||
if (ext.blank())
|
||||
filename.ext("pdf");
|
||||
|
||||
_pdf_file = filename;
|
||||
_pagefrom = 1;
|
||||
@ -2437,7 +2446,7 @@ bool TBook::esporta()
|
||||
break;
|
||||
case 'E':
|
||||
case 'e':
|
||||
ok = export_text(fname, signature, size);
|
||||
ok = export_text(fname, size, signature);
|
||||
if (ok)
|
||||
xvt_sys_goto_url(fname, "open");
|
||||
break;
|
||||
@ -2458,7 +2467,7 @@ bool TBook::esporta()
|
||||
xvt_sys_goto_url(fname, "open");
|
||||
break;
|
||||
case K_DBF:
|
||||
ok = export_dbase(fname, signature);
|
||||
ok = export_dbase(fname, nullptr, signature);
|
||||
if (ok)
|
||||
xvt_sys_goto_url(fname, "open");
|
||||
break;
|
||||
@ -2521,7 +2530,7 @@ bool TBook::print_or_preview()
|
||||
case exportprinter:
|
||||
{
|
||||
TFilename f = printer().get_export_file();
|
||||
ok = export_text(f, false, 0);
|
||||
ok = export_text(f, 0, false);
|
||||
if (ok)
|
||||
xvt_sys_goto_url(f, "open");
|
||||
}
|
||||
@ -2551,6 +2560,7 @@ TBook::TBook(const char* name)
|
||||
_file.temp("rep", "rap");
|
||||
_is_temporary = true;
|
||||
}
|
||||
ofstream out(_file);
|
||||
}
|
||||
|
||||
TBook::~TBook()
|
||||
|
Loading…
x
Reference in New Issue
Block a user