Patch level : 12.0 no-patch
Files correlati : Commento : Aggiunta DATACOMPCR Aggiunta funzione find per trovare un record in un record array usando la chiave nkey.
This commit is contained in:
parent
7b398f878d
commit
4d7d204fee
@ -1644,6 +1644,7 @@ void TMask::set(
|
|||||||
// @syntax set(short fld_id, long n, bool hit);
|
// @syntax set(short fld_id, long n, bool hit);
|
||||||
{
|
{
|
||||||
TMask_field& f = field(fld_id);
|
TMask_field& f = field(fld_id);
|
||||||
|
|
||||||
f.set(s);
|
f.set(s);
|
||||||
if ((f.active() || f.ghost()))
|
if ((f.active() || f.ghost()))
|
||||||
{
|
{
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#define MOV_CORRLIRE "CORRLIRE"
|
#define MOV_CORRLIRE "CORRLIRE"
|
||||||
#define MOV_CORRVALUTA "CORRVALUTA"
|
#define MOV_CORRVALUTA "CORRVALUTA"
|
||||||
#define MOV_DATACOMP "DATACOMP"
|
#define MOV_DATACOMP "DATACOMP"
|
||||||
|
#define MOV_DATACOMPCR "DATACOMPCR"
|
||||||
#define MOV_DATACOMPI "DATACOMPI"
|
#define MOV_DATACOMPI "DATACOMPI"
|
||||||
#define MOV_CODVALI "CODVALI"
|
#define MOV_CODVALI "CODVALI"
|
||||||
#define MOV_CAMBIOI "CAMBIOI"
|
#define MOV_CAMBIOI "CAMBIOI"
|
||||||
|
@ -205,6 +205,21 @@ void TRecord_array::sort(COMPARE_FUNCTION sort_func)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int TRecord_array::find(const TRectype & rec, int nkey) const
|
||||||
|
{
|
||||||
|
const int last = last_row();
|
||||||
|
const TString80 key2find = rec.key(nkey);
|
||||||
|
TString80 key;
|
||||||
|
|
||||||
|
for (int nrow = first_row(); nrow <= last; nrow = succ_row(nrow))
|
||||||
|
{
|
||||||
|
key = row(nrow).key(nkey);
|
||||||
|
if (key2find == key)
|
||||||
|
return nrow;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
int TRecord_array::rec2row(const TRectype& r) const
|
int TRecord_array::rec2row(const TRectype& r) const
|
||||||
{
|
{
|
||||||
CHECK(r.num() == _file, "Incompatible record");
|
CHECK(r.num() == _file, "Incompatible record");
|
||||||
@ -447,34 +462,36 @@ int TRecord_array::write(bool re) const
|
|||||||
|
|
||||||
const int u = _data.last();
|
const int u = _data.last();
|
||||||
|
|
||||||
CHECK(u<1 || !key().empty(), "Can't write rows using an empty key");
|
CHECK(u < 1 || !key().empty(), "Can't write rows using an empty key");
|
||||||
int i;
|
int i;
|
||||||
for (i = 1; i <= u; i++)
|
for (i = 1; i <= u; i++)
|
||||||
{
|
{
|
||||||
const TRectype* r = (TRectype*)_data.objptr(i);
|
TRectype* r = (TRectype*)_data.objptr(i);
|
||||||
|
|
||||||
if (r != NULL)
|
if (r != NULL)
|
||||||
{
|
{
|
||||||
if (re)
|
if (re)
|
||||||
{
|
{
|
||||||
err = r->rewrite(f);
|
if (db_log() && _file != LF_DBLOG)
|
||||||
if (err == _iskeynotfound || err == _iseof || err == _isemptyfile)
|
r->set_preserve_values(false);
|
||||||
err = r->write(f);
|
err = r->rewrite(f);
|
||||||
if (err != NOERR)
|
if (err == _iskeynotfound || err == _iseof || err == _isemptyfile)
|
||||||
break;
|
err = r->write(f);
|
||||||
}
|
if (err != NOERR)
|
||||||
else
|
break;
|
||||||
{
|
}
|
||||||
err = r->write(f);
|
else
|
||||||
if (err == _isreinsert)
|
{
|
||||||
{
|
err = r->write(f);
|
||||||
err = r->rewrite(f);
|
if (err == _isreinsert)
|
||||||
re = true;
|
{
|
||||||
}
|
err = r->rewrite(f);
|
||||||
if (err != NOERR)
|
re = true;
|
||||||
break;
|
}
|
||||||
}
|
if (err != NOERR)
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const int pos = i+_offset;
|
const int pos = i+_offset;
|
||||||
@ -507,7 +524,7 @@ int TRecord_array::write(bool re) const
|
|||||||
last_on_file = EOR; // Sul file non ci sono piu' righe da cancellare
|
last_on_file = EOR; // Sul file non ci sono piu' righe da cancellare
|
||||||
delete rec;
|
delete rec;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cancella eventuali residui successivi
|
// Cancella eventuali residui successivi
|
||||||
|
@ -123,6 +123,8 @@ public:
|
|||||||
bool renum_key(const char* field, long num);
|
bool renum_key(const char* field, long num);
|
||||||
// @cmember Ordina il Record Array secondo il criterio definito in <t COMPARE_FUNCTION>
|
// @cmember Ordina il Record Array secondo il criterio definito in <t COMPARE_FUNCTION>
|
||||||
void sort(COMPARE_FUNCTION sort_func);
|
void sort(COMPARE_FUNCTION sort_func);
|
||||||
|
// @cmember Cerca un record nel Record Array secondo la chiave nkey
|
||||||
|
int find(const TRectype & rec, int nkey = 1) const ;
|
||||||
|
|
||||||
// @cmember Legge tutto l'array dal file
|
// @cmember Legge tutto l'array dal file
|
||||||
virtual int read(const TRectype& r);
|
virtual int read(const TRectype& r);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user