From 276227182d5ee468fb1b5973731d54e1d80aa876 Mon Sep 17 00:00:00 2001 From: alex <alex@c028cbd2-c16b-5b4b-a496-9718f37d4682> Date: Fri, 1 Apr 2005 11:34:06 +0000 Subject: [PATCH] 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 --- include/report.cpp | 168 ++++++++++++++++++++++++--------------------- include/report.h | 7 +- 2 files changed, 94 insertions(+), 81 deletions(-) diff --git a/include/report.cpp b/include/report.cpp index 040e01318..409505c2f 100755 --- a/include/report.cpp +++ b/include/report.cpp @@ -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; } diff --git a/include/report.h b/include/report.h index cefcb4c88..ef0c017c7 100755 --- a/include/report.h +++ b/include/report.h @@ -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(); };