Patch level : 2.2 66
Files correlati : ca1.exe Ricompilazione Demo : [ ] Commento : Prima versione tampe anagrafiche git-svn-id: svn://10.65.10.50/trunk@12891 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
063e4effb5
commit
276227182d
@ -2402,6 +2402,92 @@ bool TReport::do_message(const TVariant& var, FLDMSG_FUNC msg, void* jolly)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TReport::report2mask(TMask & m) const
|
||||||
|
{
|
||||||
|
TVariant var;
|
||||||
|
|
||||||
|
for (int i = m.fields()-1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
TMask_field& f = m.fld(i);
|
||||||
|
const TFieldref* ref = f.field();
|
||||||
|
if (ref != NULL)
|
||||||
|
{
|
||||||
|
const bool is_final = f.in_group(2);
|
||||||
|
TString name = ref->name();
|
||||||
|
if (name[0] != '#')
|
||||||
|
name.insert("#");
|
||||||
|
if (get_usr_val(name, var))
|
||||||
|
{
|
||||||
|
if (is_final)
|
||||||
|
{
|
||||||
|
switch (f.class_id())
|
||||||
|
{
|
||||||
|
case CLASS_CURRENCY_FIELD:
|
||||||
|
case CLASS_REAL_FIELD:
|
||||||
|
if (var.as_real() == 999999999L)
|
||||||
|
var.set_null();
|
||||||
|
break;
|
||||||
|
case CLASS_DATE_FIELD:
|
||||||
|
if (var.as_date().year() == 9999)
|
||||||
|
var.set_null();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (var.as_string() == "~~~")
|
||||||
|
var.set_null();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!var.is_null())
|
||||||
|
f.set(var.as_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TReport::mask2report(const TMask & m)
|
||||||
|
{
|
||||||
|
TVariant var;
|
||||||
|
TRecordset* rset = recordset();
|
||||||
|
|
||||||
|
if (rset != NULL && rset->variables().items() == 0)
|
||||||
|
rset = NULL;
|
||||||
|
for (int i = m.fields()-1; i >= 0; i--)
|
||||||
|
{
|
||||||
|
TMask_field& f = m.fld(i);
|
||||||
|
const TFieldref* ref = f.field();
|
||||||
|
if (ref != NULL)
|
||||||
|
{
|
||||||
|
const bool is_final = f.in_group(2);
|
||||||
|
switch (f.class_id())
|
||||||
|
{
|
||||||
|
case CLASS_CURRENCY_FIELD:
|
||||||
|
case CLASS_REAL_FIELD:
|
||||||
|
var = real(f.get());
|
||||||
|
if (var.is_empty())
|
||||||
|
var.set(is_final ? 999999999L : 0L);
|
||||||
|
break;
|
||||||
|
case CLASS_DATE_FIELD:
|
||||||
|
var = TDate(f.get());
|
||||||
|
if (var.is_empty())
|
||||||
|
var.set(TDate(is_final ? 99991231L : 0L));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
var = f.get();
|
||||||
|
if (var.is_empty())
|
||||||
|
var.set(is_final ? "~~~" : "");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
TString name = ref->name();
|
||||||
|
if (name[0] != '#')
|
||||||
|
name.insert("#");
|
||||||
|
set_usr_val(name, var);
|
||||||
|
if (rset != NULL)
|
||||||
|
rset->set_var(name, var);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
KEY TReport::run_form(const TString& maskname)
|
KEY TReport::run_form(const TString& maskname)
|
||||||
{
|
{
|
||||||
TFilename fname = maskname; fname.ext("msk");
|
TFilename fname = maskname; fname.ext("msk");
|
||||||
@ -2409,87 +2495,11 @@ KEY TReport::run_form(const TString& maskname)
|
|||||||
if (fname.custom_path())
|
if (fname.custom_path())
|
||||||
{
|
{
|
||||||
TMask m(maskname);
|
TMask m(maskname);
|
||||||
TVariant var;
|
|
||||||
for (int i = m.fields()-1; i >= 0; i--)
|
report2mask(m);
|
||||||
{
|
|
||||||
TMask_field& f = m.fld(i);
|
|
||||||
const TFieldref* ref = f.field();
|
|
||||||
if (ref != NULL)
|
|
||||||
{
|
|
||||||
const bool is_final = f.in_group(2);
|
|
||||||
TString name = ref->name();
|
|
||||||
if (name[0] != '#')
|
|
||||||
name.insert("#");
|
|
||||||
if (get_usr_val(name, var))
|
|
||||||
{
|
|
||||||
if (is_final)
|
|
||||||
{
|
|
||||||
switch (f.class_id())
|
|
||||||
{
|
|
||||||
case CLASS_CURRENCY_FIELD:
|
|
||||||
case CLASS_REAL_FIELD:
|
|
||||||
if (var.as_real() == 999999999L)
|
|
||||||
var.set_null();
|
|
||||||
break;
|
|
||||||
case CLASS_DATE_FIELD:
|
|
||||||
if (var.as_date().year() == 9999)
|
|
||||||
var.set_null();
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
if (var.as_string() == "~~~")
|
|
||||||
var.set_null();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!var.is_null())
|
|
||||||
f.set(var.as_string());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
key = m.run();
|
key = m.run();
|
||||||
if (key != K_QUIT && key != K_ESC)
|
if (key != K_QUIT && key != K_ESC)
|
||||||
{
|
mask2report(m); // Rendi visibili tutte le variabili utente al report
|
||||||
TRecordset* rset = recordset();
|
|
||||||
if (rset != NULL && rset->variables().items() == 0)
|
|
||||||
rset = NULL;
|
|
||||||
|
|
||||||
// Rendi visibili tutte le variabili utente al report
|
|
||||||
for (int i = m.fields()-1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
TMask_field& f = m.fld(i);
|
|
||||||
const TFieldref* ref = f.field();
|
|
||||||
if (ref != NULL)
|
|
||||||
{
|
|
||||||
const bool is_final = f.in_group(2);
|
|
||||||
switch (f.class_id())
|
|
||||||
{
|
|
||||||
case CLASS_CURRENCY_FIELD:
|
|
||||||
case CLASS_REAL_FIELD:
|
|
||||||
var = real(f.get());
|
|
||||||
if (var.is_empty())
|
|
||||||
var.set(is_final ? 999999999L : 0L);
|
|
||||||
break;
|
|
||||||
case CLASS_DATE_FIELD:
|
|
||||||
var = TDate(f.get());
|
|
||||||
if (var.is_empty())
|
|
||||||
var.set(TDate(is_final ? 99991231L : 0L));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
var = f.get();
|
|
||||||
if (var.is_empty())
|
|
||||||
var.set(is_final ? "~~~" : "");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
TString name = ref->name();
|
|
||||||
if (name[0] != '#')
|
|
||||||
name.insert("#");
|
|
||||||
set_usr_val(name, var);
|
|
||||||
if (rset != NULL)
|
|
||||||
rset->set_var(name, var);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
@ -533,8 +533,11 @@ public:
|
|||||||
|
|
||||||
int parse_field(const char* code, char& type, int& level, int& id) const;
|
int parse_field(const char* code, char& type, int& level, int& id) const;
|
||||||
TReport_field* field(const char* code);
|
TReport_field* field(const char* code);
|
||||||
|
|
||||||
void destroy();
|
void report2mask(TMask & m) const;
|
||||||
|
void mask2report(const TMask & m);
|
||||||
|
|
||||||
|
void destroy();
|
||||||
TReport();
|
TReport();
|
||||||
virtual ~TReport();
|
virtual ~TReport();
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user