Patch level : 10.0 462

Files correlati     : cg0.exe cg1.exe
Ricompilazione Demo : [ ]
Commento

Supporto per il passaggio di vairabili sulla riga dello stampatore di report


git-svn-id: svn://10.65.10.50/trunk@19406 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2009-10-08 10:52:25 +00:00
parent 198208b90f
commit 312ae4b486

View File

@ -152,9 +152,38 @@ TReport* TKlarkKent_app::create_report(const char* name) const
void TKlarkKent_app::main_loop()
{
TString_array arr;
TString_array arr; // Lista dei reports
TAssoc_array vars; // Variabili utente
for (int i = 2; i < argc(); i++)
arr.add(argv(i));
{
const TFixed_string arg(argv(i));
const int uguale = arg.find('=');
if (uguale > 0)
{
TString16 name = arg.left(uguale); name.trim();
TString80 val = arg.mid(uguale+1); val.trim();
if (name.full() && val.full())
{
TVariant* var = NULL;
if (real::is_real(val))
var = new TVariant(real(val));
else
var = new TVariant(val);
if (name[0] != '#')
name.insert("#");
vars.add(name, var);
}
}
else
{
TFilename rep = arg;
rep.ext("rep");
if (rep.custom_path())
arr.add(arg);
}
}
if (arr.items() == 0)
arr.add(EMPTY_STRING);
@ -192,6 +221,11 @@ void TKlarkKent_app::main_loop()
if (custom_app)
{
appname << ' ' << report_name;
if (vars.items() > 0)
{
FOR_EACH_ASSOC_OBJECT(vars, h, name, var)
appname<< ' ' << name << '=' << ((TVariant *) var)->as_string();
}
TExternal_app app(appname);
app.run(true);
}
@ -202,6 +236,12 @@ void TKlarkKent_app::main_loop()
report = create_report(report_name);
if (report != NULL)
{
TRecordset* pset = report->recordset();
if (pset != NULL && vars.items() > 0)
{
FOR_EACH_ASSOC_OBJECT(vars, h, name, var)
pset->set_var(name, *(TVariant*)var, true);
}
const bool ok = book.add(*report);
if (ok && arr.items() == 1) // Controlla se e' pensabile ripetere la stampa
{