diff --git a/include/recarray.cpp b/include/recarray.cpp index 4412acbb0..07c7208e4 100755 --- a/include/recarray.cpp +++ b/include/recarray.cpp @@ -688,6 +688,9 @@ const TObject& TFile_cache::query(const char* code) { TLocalisamfile& f = file(); TRectype& curr = f.curr(); + const int logicnum = f.num(); + const bool is_tab = (logicnum >= LF_TABGEN && logicnum <= LF_TAB) || (logicnum == LF_TABMOD); + if (_code.full()) { const RecDes& recd = curr.rec_des(); // Descrizione del record della testata @@ -697,8 +700,13 @@ const TObject& TFile_cache::query(const char* code) const int nf = kd.FieldSeq[i] % MaxFields; const RecFieldDes& rf = recd.Fd[nf]; const char* val = _code.get(); + if (val && *val) - curr.put(rf.Name, val); + { + if (is_tab && strcmp(rf.Name, "COD") == 0) + curr.settab(val); + curr.put(rf.Name, val); + } else curr.zero(rf.Name); }