diff --git a/include/recarray.cpp b/include/recarray.cpp index 2ec2e0266..ca0dcee7f 100755 --- a/include/recarray.cpp +++ b/include/recarray.cpp @@ -795,27 +795,29 @@ TRecord_cache& TDB_cache::rec_cache(int file) int TDB_cache::build_table_key(const char* table, const char* key, TToken_string& k) const { CHECK(table && *table, "Invalid Table code"); + TString16 tablename = table; // Attenzione posso avere tabelle di modulo come &PC000883BAR int file = LF_TAB; k.cut(0); if (!isalnum(*table)) // gestisco i casi come %IVA e &AUT { + tablename.ltrim(1); // toglie carattere speciale switch (*table) { - case '%': file = LF_TABCOM; table++; break; - case '^': file = LF_TABGEN; table++; break; + case '%': file = LF_TABCOM; break; + case '^': file = LF_TABGEN; break; case '&': file = LF_TABMOD; { const TModule_table mt(table); k = mt.module(); k.add(mt.customer()); - table = mt.name(); + tablename = mt.name(); } break; case '$': - default : file = LF_TAB; table++; break; + default : file = LF_TAB; break; } } - k.add(table); + k.add(tablename); k.add(key); return file; }