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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
TFilename fname = maskname; fname.ext("msk");
|
||||
@ -2409,87 +2495,11 @@ KEY TReport::run_form(const TString& maskname)
|
||||
if (fname.custom_path())
|
||||
{
|
||||
TMask m(maskname);
|
||||
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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
report2mask(m);
|
||||
key = m.run();
|
||||
if (key != K_QUIT && key != K_ESC)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
mask2report(m); // Rendi visibili tutte le variabili utente al report
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
@ -533,8 +533,11 @@ public:
|
||||
|
||||
int parse_field(const char* code, char& type, int& level, int& id) const;
|
||||
TReport_field* field(const char* code);
|
||||
|
||||
void destroy();
|
||||
|
||||
void report2mask(TMask & m) const;
|
||||
void mask2report(const TMask & m);
|
||||
|
||||
void destroy();
|
||||
TReport();
|
||||
virtual ~TReport();
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user