diff --git a/include/files.cpp b/include/files.cpp index 2e739f2eb..5b270ed90 100755 --- a/include/files.cpp +++ b/include/files.cpp @@ -251,6 +251,11 @@ void TDir::set_eox (const RecNoType eox) _dir->EOX = eox; } +void TDir::set_eod (const RecNoType eod) +{ + _dir->EOD = eod; +} + void TDir::set (const char *name, const RecNoType eod, const RecNoType flag, const char *des, const char *calc) { strncpy (_dir->SysName, name, sizeof (_dir->SysName)); diff --git a/include/files.h b/include/files.h index fe92d2d06..2daeee376 100755 --- a/include/files.h +++ b/include/files.h @@ -109,6 +109,8 @@ public: void set_name (const char * name); // @cmember Setta l'EOX del file void set_eox(const RecNoType eox); + // @cmember Setta l'EOD del file + void set_eod(const RecNoType eod); // @cmember Setta la lunghezza del file void set_len(const UINT16 len); // @cmember Setta il file con i parametri passati diff --git a/include/isam.cpp b/include/isam.cpp index 4ea577ad2..7c38018a7 100755 --- a/include/isam.cpp +++ b/include/isam.cpp @@ -2293,6 +2293,24 @@ int TSystemisamfile::packindex( return err; } +void TSystemisamfile::update_file() +{ + TFilename fname; + int logicnum = _logicnum; + int isam_handle = prefix().open_isamfile(logicnum, fname, FALSE, 1); + if (isam_handle > 0) + { + TCodeb_handle cb_handle = prefix().get_handle(isam_handle, 1); + const TRecnotype n = DB_reccount(cb_handle); //numero di elementi del file + + TDir dir; + dir.get(_logicnum, _lock, _nordir, _sysdirop); + dir.set_eox(n); + dir.set_eod(n); + dir.put(_logicnum, _nordir, _sysdirop); + } +} + int TSystemisamfile::pack(bool vis, bool ask) { int err = packfile(vis); @@ -2508,6 +2526,11 @@ int TSystemisamfile::load( close(); setstatus(err); + +//aggiorna lo sheet con i nuovi valori di EOX EOD caricati + if (err == NOERR) + update_file(); + return err; } diff --git a/include/isam.h b/include/isam.h index d278f8ddf..df369e1b8 100755 --- a/include/isam.h +++ b/include/isam.h @@ -584,6 +584,8 @@ class TSystemisamfile : public TIsamfile // @cmember:(INTERNAL) Esegue la conversione sui record del file (utilizzando le espressione definite // in fconv.ini) void makelc(TRectype& rec); + // @cmember aggiorna l'eod e l'eox del file + void update_file(); // @access Public Member public: