From 588282acc016a2ae6a541b9407f30835fc9e567d Mon Sep 17 00:00:00 2001 From: angelo Date: Wed, 28 Aug 1996 07:54:44 +0000 Subject: [PATCH] Corretto errore 5906. Aggiunta la possibilita' di stampare campi composti. git-svn-id: svn://10.65.10.50/trunk@3458 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/ba3200.cpp | 76 ++++++++++++++++++++++++++++++++++++++++---------- ba/batbban.rpt | 13 ++++----- 2 files changed, 67 insertions(+), 22 deletions(-) diff --git a/ba/ba3200.cpp b/ba/ba3200.cpp index 115675731..bffac6bec 100755 --- a/ba/ba3200.cpp +++ b/ba/ba3200.cpp @@ -24,8 +24,8 @@ class BA3200_application : public TPrintapp TMask* _msk; TString _maskname; int _logicnum; - TString_array _string_roman; - TString_array _field_roman; + TString_array _string_roman, _string_compound; + TString_array _field_roman, _field_compound; bool _stampa_registri; bool _stampa_ca7; //tabella causali 770 bool _tabella_comune; @@ -91,6 +91,8 @@ void BA3200_application::set_page (int , int ) { _string_roman.destroy(); _field_roman.destroy(); + _string_compound.destroy(); + _field_compound.destroy(); set_rows(); } @@ -110,6 +112,37 @@ bool BA3200_application::preprocess_page(int , int) s = itor(n); } } + + const int compound = _field_compound.items(); + if (compound > 0) + // Scorre le righe settate + for (int i = 0; i < compound; i++) + { + TToken_string f(_field_compound.row(i),'+'); // campo composto + TString& s = _string_compound.row(i); // riga da stampare + s.cut(0); // Reset the row... + bool compile_row = TRUE; + const int cmp_items = f.items(); + // Scorre gli elementi della riga + for (int j = 0; j < cmp_items; j++) + { + // compone la stringa totale + TString xx(f.get(j)); + if (xx[0] != '"') // se non e' una costante stringa legge il valore + { + TFieldref fld(xx,0); + xx = fld.read(*_rel); + if (xx.empty()) compile_row = FALSE; + else compile_row = TRUE; + } + else + { + xx.ltrim(1);xx.rtrim(1); + } + if (compile_row) + s << xx; // appende alla stringa il valore ricavato (se il campo e' vuoto non appende nemmeno la stringa fissa) + } + } // Stampa tabella registri. Calcolo: pagine residue = pagine - stampate if (_stampa_registri) { @@ -227,36 +260,42 @@ void BA3200_application::set_rows() { riga_record = line.get_int(); + TString s(line.get()); - - campo = s; - from = campo.from(); - to = campo.to(); - name = campo.name(); - int logicnum = campo.file() == 0 ? _logicnum : campo.file(); - + int logicnum = _logicnum; + const bool is_compound = s.find('+') >= 0; // Controlla se e' una stringa composta (usare #t nel formato) + if (!is_compound) + { + campo = s; + from = campo.from(); + to = campo.to(); + name = campo.name(); + if (campo.file != 0) + logicnum = campo.file(); + } + formato_campo = line.get(); formato_campo.trim(); formato_campo.lower(); const int p = formato_campo.find("@m"); - - if (p != -1) + + if (p != -1 && !is_compound) { formato_campo.cut(p); formato_campo << "#t"; _string_roman.add(""); _field_roman.add(s); const int last = _string_roman.items() - 1; - + set_row (riga_record, formato_campo, _string_roman.objptr(last)); } - else + else if (!is_compound) { if (formato_campo.find("@pn")) picture = line.get(); else picture = ""; - + if (to == -1) if (picture != "") set_row (riga_record, formato_campo, FLD(logicnum,name,picture) ); @@ -265,7 +304,14 @@ void BA3200_application::set_rows() else set_row (riga_record, formato_campo, FLD(logicnum,name,from,to) ); } - + else + { + _string_compound.add(""); + _field_compound.add(s); + const int last = _string_compound.items() - 1; + + set_row (riga_record, formato_campo, _string_compound.objptr(last)); + } line = (const char *) rpt.line(); } } diff --git a/ba/batbban.rpt b/ba/batbban.rpt index 2dd047697..62db5039c 100755 --- a/ba/batbban.rpt +++ b/ba/batbban.rpt @@ -9,16 +9,15 @@ Tabella Banche 1|@26g%s|Istituto 1|@78g%s|Dipendenza 2|@26g%s|Indirizzo -3|@26g%s|CAP -3|@32g%s|Comune +4|@26g%s|CAP +4|@32g%s|Comune [Rows] 1|CODTAB[1,5]|@7g@5s 1|CODTAB[6,10]|@19g@5s 1|S0|@26g@50,ls 1|I0|@78g@4n -2|S2|@26g@40,ls -2|S7|@68g@10,ls -3|S3|@26g@5,ls -3|S5|@32g@4,ls -3|LF_COMUNI->DENCOM|@38g@50,ls +2|S2+", "+S7|@26g#-40t +3|S3|@26g@10,ls +3|LF_COMUNI->DENCOM+" ("+LF_COMUNI->PROVCOM+")"|@32g#-55t +