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:
alex 2005-04-01 11:34:06 +00:00
parent 063e4effb5
commit 276227182d
2 changed files with 94 additions and 81 deletions

View File

@ -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;
}

View File

@ -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();
};