Aggiunta specifica not deleted per eliminare i problemi di FoxPro con gli indic\

i unique


git-svn-id: svn://10.65.10.50/trunk@2163 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1995-11-16 11:38:08 +00:00
parent b1f7a1ddf2
commit 0245a5243a

View File

@ -20,7 +20,7 @@
#include <rmov.h>
#define usage "Errore - uso : bacnv [1|2|3|4|5|6|7] ditta"
#define usage "Errore - uso : bacnv [1|2|3|4|5|6|7|8] ditta"
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Applicazione di conversione archivi XBase, valida per tutti e 4 i tipi di DLL
@ -163,6 +163,8 @@ public:
void convert_codconc(void);
void convert_profili(void);
void convert_caus_attiv(void);
void rebuild_indexes(void);
void rebuild_dir_indexes(void);
TConversione_archivi() : _oldditta(0), _codditta(0), _error(0) {}
};
@ -257,6 +259,12 @@ bool TConversione_archivi::menu(MENU_TAG)
convert_caus_attiv();
break;
}
case 8:
{
if (_codditta == 0)
rebuild_indexes();
break;
}
}
default:
break;
@ -768,6 +776,73 @@ void TConversione_archivi::convert_codconc()
#endif
}
void TConversione_archivi::rebuild_indexes()
{
do_events();
begin_wait();
prefix().set("com");
rebuild_dir_indexes();
TSystemisamfile ditte(LF_NDITTE);
ditte.open();
for (ditte.first(); !ditte.eof(); ditte.next())
{
const long codditta = ditte.get_long("CODDITTA");
const TRecnotype rec = ditte.recno();
if (prefix().exist(codditta))
{
ditte.close();
set_firm(codditta);
rebuild_dir_indexes();
ditte.open();
}
ditte.readat(rec);
}
ditte.close();
end_wait();
}
void TConversione_archivi::rebuild_dir_indexes()
{
const TString pref(prefix().name());
const bool is_com = prefix().is_com();
TDir d;
d.get(LF_DIR);
const int items = (int)d.eod();
TString80 s("Ricostruzione indici ");
if (is_com) s << "comuni";
else s << " della ditta " << atol (pref);
TProgind p(items ? items : 1, s, TRUE, TRUE, 70);
p.setstatus(1);
for (int i = 2; i <= items; i++)
{
p.addstatus(1);
if (d.len() > 0)
{
d.get(i, _nolock, _nordir, _sysdirop);
bool to_create = (is_com ? d.is_com() : d.is_firm());
if (to_create)
{
d.get(i);
TFilename s(d.name());
s.ext("dbf");
if (fexist(s))
{
TSystemisamfile f(i);
f.packindex();
}
}
}
}
}
///////////////////////////////////////////////////////////
// Programma di conversione archivi speciale
///////////////////////////////////////////////////////////
@ -776,7 +851,7 @@ int main(int argc,char** argv)
{
const int r = (argc > 1) ? atoi(argv[1]) : 0;
if (r < 0 || r > 7)
if (r < 0 || r > 8)
{
error_box(usage);
return 100;