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
This commit is contained in:
angelo 1996-08-28 07:54:44 +00:00
parent b5fa5a44c0
commit 588282acc0
2 changed files with 67 additions and 22 deletions

View File

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

View File

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