Riportato branch sulla modifica di TBaseisamfile e tabelle in modo
da renderli piu' coerenti con i TRectype. Si consiglia vivamente di controllare tutte le derivazioni da TBaseisamfile e TTable! git-svn-id: svn://10.65.10.50/trunk@5683 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
56de750d9f
commit
83487ad324
174
include/isam.cpp
174
include/isam.cpp
@ -151,7 +151,20 @@ void __getfieldbuff(byte l, byte t, const char * recin, char *s)
|
||||
{
|
||||
if (t == _datefld)
|
||||
{
|
||||
const TDate dt(s);
|
||||
TDate dt(s);
|
||||
#ifdef _DEMO_
|
||||
int y = dt.year();
|
||||
if (y & 0x0001) y--;
|
||||
y >>= 3;
|
||||
y++;
|
||||
y /= 10;
|
||||
if (y >= 25)
|
||||
{
|
||||
int m = dt.month();
|
||||
if (m > 3)
|
||||
dt.set_month(rand() % 3 + 1);
|
||||
}
|
||||
#endif
|
||||
strcpy(s, dt.string(full));
|
||||
}
|
||||
else
|
||||
@ -559,7 +572,7 @@ HIDDEN int cisstart(isfdptr isfd, int keynum, TRectype & record, unsigned int mo
|
||||
}
|
||||
|
||||
|
||||
HIDDEN int cisread(isfdptr isfd, TRectype & record, int mode)
|
||||
HIDDEN int cisread(isfdptr isfd, TRectype & record, int mode, TRecnotype curr_recno)
|
||||
{
|
||||
int rmode = (mode & READTYPES), lmode = (mode & RECLOCKTYPES);
|
||||
|
||||
@ -588,15 +601,53 @@ HIDDEN int cisread(isfdptr isfd, TRectype & record, int mode)
|
||||
else
|
||||
{
|
||||
if (rmode==_isfirst)
|
||||
err=DB_first(isfd->fhnd); else
|
||||
if (rmode==_islast)
|
||||
err=DB_last(isfd->fhnd); else
|
||||
if (rmode==_isnext)
|
||||
err=DB_next(isfd->fhnd); else
|
||||
if (rmode==_isprev)
|
||||
err=DB_prev(isfd->fhnd); else
|
||||
if (rmode==_iscurr)
|
||||
err=DB_go(isfd->fhnd,DB_recno(isfd->fhnd));
|
||||
err=DB_first(isfd->fhnd);
|
||||
else
|
||||
if (rmode==_islast)
|
||||
err=DB_last(isfd->fhnd);
|
||||
else
|
||||
if (rmode==_isnext)
|
||||
{
|
||||
if (curr_recno != DB_recno(isfd->fhnd))
|
||||
{
|
||||
err = __build_key(isfd->r, isfd->knum, record.string(),key,TRUE);
|
||||
if (err == NOERR)
|
||||
{
|
||||
err = DB_seek(isfd->fhnd,key);
|
||||
err = get_error(err);
|
||||
if (err != NOERR && err != _iskeynotfound)
|
||||
fatal_box("Errore nella next %d : non posso riposizionarmi", err);
|
||||
else
|
||||
if (err == NOERR)
|
||||
err=DB_next(isfd->fhnd);
|
||||
}
|
||||
}
|
||||
else
|
||||
err=DB_next(isfd->fhnd);
|
||||
}
|
||||
else
|
||||
if (rmode==_isprev)
|
||||
{
|
||||
if (curr_recno != DB_recno(isfd->fhnd))
|
||||
{
|
||||
err = __build_key(isfd->r, isfd->knum, record.string(),key,TRUE);
|
||||
if (err == NOERR)
|
||||
{
|
||||
err = DB_seek(isfd->fhnd,key);
|
||||
err = get_error(err);
|
||||
if (err != NOERR && err != _iseof)
|
||||
fatal_box("Errore nella next %d : non posso riposizionarmi", err);
|
||||
else
|
||||
if (err == NOERR)
|
||||
err=DB_prev(isfd->fhnd);
|
||||
}
|
||||
}
|
||||
else
|
||||
err=DB_prev(isfd->fhnd);
|
||||
}
|
||||
else
|
||||
if (rmode==_iscurr)
|
||||
err=DB_go(isfd->fhnd,DB_recno(isfd->fhnd));
|
||||
if (err != NOERR) err=get_error(err);
|
||||
}
|
||||
|
||||
@ -867,33 +918,17 @@ int TBaseisamfile::getkey() const
|
||||
int TBaseisamfile::first(word lockop)
|
||||
|
||||
{
|
||||
NOT_OPEN();
|
||||
/* curr().setdirty();
|
||||
_lasterr=cisread(_isamfile, curr(), _isfirst + lockop);
|
||||
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
||||
_recno = _isamfile->RecNo;
|
||||
if( curr().has_memo( ) )
|
||||
curr( ).init_memo(_recno); */
|
||||
_lasterr=curr().read(*this, _isfirst, lockop);
|
||||
return _lasterr;
|
||||
return TBaseisamfile::read(curr(), _isfirst, lockop);
|
||||
}
|
||||
|
||||
|
||||
int TBaseisamfile::last(word lockop)
|
||||
|
||||
{
|
||||
NOT_OPEN();
|
||||
/* curr().setdirty();
|
||||
_lasterr=cisread(_isamfile, curr(), _islast + lockop );
|
||||
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
||||
_recno = _isamfile->RecNo;
|
||||
if( curr().has_memo( ) )
|
||||
curr( ).init_memo(_recno); */
|
||||
_lasterr=curr().read(*this, _islast, lockop);
|
||||
return _lasterr;
|
||||
return TBaseisamfile::read(curr(), _islast, lockop);
|
||||
}
|
||||
|
||||
int TBaseisamfile::_next(word lockop)
|
||||
/*int TBaseisamfile::_next(word lockop)
|
||||
{
|
||||
NOT_OPEN();
|
||||
curr().setdirty();
|
||||
@ -915,19 +950,20 @@ int TBaseisamfile::_next(word lockop)
|
||||
_recno = _isamfile->RecNo;
|
||||
if( curr().has_memo( ) )
|
||||
curr( ).init_memo(_recno );
|
||||
return _lasterr;
|
||||
}
|
||||
return _lasterr;
|
||||
}
|
||||
*/
|
||||
|
||||
int TBaseisamfile::next(word lockop)
|
||||
{
|
||||
return curr().next(*this, lockop);
|
||||
return TBaseisamfile::read(curr(), _isnext, lockop);
|
||||
}
|
||||
|
||||
|
||||
int TBaseisamfile::prev(word lockop)
|
||||
|
||||
{
|
||||
NOT_OPEN();
|
||||
/* NOT_OPEN();
|
||||
curr().setdirty();
|
||||
if (_recno != DB_recno(_isamfile->fhnd))
|
||||
{
|
||||
@ -944,38 +980,22 @@ int TBaseisamfile::prev(word lockop)
|
||||
_recno = _isamfile->RecNo;
|
||||
if( curr().has_memo( ) )
|
||||
curr( ).init_memo(_recno);
|
||||
return _lasterr;
|
||||
return _lasterr;*/
|
||||
return TBaseisamfile::read(curr(), _isprev, lockop);
|
||||
}
|
||||
|
||||
|
||||
int TBaseisamfile::reread(word lockop)
|
||||
|
||||
{
|
||||
/* NOT_OPEN();
|
||||
|
||||
curr().setdirty();
|
||||
_lasterr=cisread(_isamfile, curr(), _iscurr + lockop);
|
||||
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
||||
_recno = _isamfile->RecNo;
|
||||
if( curr().has_memo( ) )
|
||||
curr( ).init_memo(_recno);*/
|
||||
_lasterr=curr().read(*this, _iscurr, lockop);
|
||||
return _lasterr;
|
||||
return TBaseisamfile::reread(curr(), lockop);
|
||||
}
|
||||
|
||||
|
||||
int TBaseisamfile::reread(TRectype& rec, word lockop)
|
||||
|
||||
{
|
||||
NOT_OPEN();
|
||||
/* rec.setdirty();
|
||||
_lasterr=cisread(_isamfile, rec, _iscurr + lockop);
|
||||
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
||||
_recno = _isamfile->RecNo;
|
||||
if( rec.has_memo( ) )
|
||||
rec.init_memo(_recno); */
|
||||
_lasterr=rec.read(*this, _iscurr, lockop);
|
||||
return _lasterr;
|
||||
return rec.read(*this, _iscurr, lockop);
|
||||
}
|
||||
|
||||
|
||||
@ -1005,7 +1025,7 @@ int TBaseisamfile::skip(TRecnotype nrec, word lockop)
|
||||
__build_key(_isamfile->r, DB_tagget(_isamfile->fhnd), curr().string(), key,TRUE);
|
||||
message_box("Codice %s in uso da parte\ndi un altro utente.", key);
|
||||
}
|
||||
_lasterr=cisread(_isamfile,curr(),_iscurr + lockop);
|
||||
_lasterr=cisread(_isamfile,curr(),_iscurr + lockop, _recno);
|
||||
} while (_lasterr ==_islocked);
|
||||
_recno = _isamfile->RecNo = DB_recno(_isamfile->fhnd);
|
||||
if( curr().has_memo( ) )
|
||||
@ -1019,7 +1039,7 @@ int TBaseisamfile::_read(TRectype& rec, word op, word lockop)
|
||||
{
|
||||
NOT_OPEN();
|
||||
rec.setdirty();
|
||||
_lasterr=cisread(_isamfile, rec, op + lockop);
|
||||
_lasterr=cisread(_isamfile, rec, op + lockop, _recno);
|
||||
if (_lasterr != NOERR) _lasterr=get_error(_lasterr);
|
||||
_recno = _isamfile->RecNo;
|
||||
if( rec.has_memo( ) )
|
||||
@ -1040,17 +1060,17 @@ int TBaseisamfile::read(word op, word lockop)
|
||||
|
||||
{
|
||||
// CHECKD(op >= _iscurr && op <= _isgteq, "Invalid read operation : ", op);
|
||||
return TBaseisamfile::read(curr(),op, lockop);
|
||||
return TBaseisamfile::read(curr(), op, lockop);
|
||||
}
|
||||
|
||||
int TBaseisamfile::readat(TRectype& rec, TRecnotype nrec, word lockop)
|
||||
{
|
||||
return rec.readat(*this,nrec,lockop);
|
||||
return rec.readat(*this, nrec, lockop);
|
||||
}
|
||||
|
||||
int TBaseisamfile::readat(TRecnotype nrec, word lockop)
|
||||
{
|
||||
return TBaseisamfile::readat(curr(),nrec,lockop);
|
||||
return TBaseisamfile::readat(curr(), nrec, lockop);
|
||||
}
|
||||
|
||||
|
||||
@ -1101,6 +1121,15 @@ int TBaseisamfile::_write(const TRectype& rec)
|
||||
return _lasterr;
|
||||
*/
|
||||
CHECK(!rec.empty(), "Can't write an empty record");
|
||||
#ifdef _DEMO_
|
||||
const int logicnum = num();
|
||||
|
||||
if ((logicnum > LF_COMUNI && logicnum < LF_ANALISI) || logicnum > LF_RELANA)
|
||||
{
|
||||
if (items() > 979L)
|
||||
return _isfilefull;
|
||||
}
|
||||
#endif
|
||||
|
||||
NOT_OPEN();
|
||||
int oldkey=getkey();
|
||||
@ -1139,7 +1168,7 @@ int TBaseisamfile::_rewrite(const TRectype& rec)
|
||||
TRectype save_rec(rec);
|
||||
const int cur_key = getkey();
|
||||
setkey(1);
|
||||
_lasterr = cisread(_isamfile, save_rec, _isequal + _nolock); // Si Posiziona per sicurezza...
|
||||
_lasterr = cisread(_isamfile, save_rec, _isequal + _nolock, _recno); // Si Posiziona per sicurezza...
|
||||
setkey(cur_key);
|
||||
if (_lasterr == NOERR)
|
||||
{
|
||||
@ -1207,7 +1236,7 @@ int TBaseisamfile::_remove(const TRectype& rec)
|
||||
|
||||
NOT_OPEN();
|
||||
memcpy(DB_getrecord(_isamfile->fhnd),rec.string(),DB_reclen(_isamfile->fhnd));
|
||||
if ((_lasterr=cisread(_isamfile, (TRectype&) rec, _isequal + _nolock))==NOERR)
|
||||
if ((_lasterr=cisread(_isamfile, (TRectype&) rec, _isequal + _nolock, _recno))==NOERR)
|
||||
{
|
||||
_lasterr = DB_delete(_isamfile->fhnd); // Put only deletion flag on record, must remove keys too!
|
||||
if (_lasterr != NOERR)
|
||||
@ -1452,7 +1481,7 @@ TLocalisamfile::TLocalisamfile(
|
||||
const char* name) // @parm Nome del file esterno da aprire
|
||||
: TBaseisamfile(name)
|
||||
{
|
||||
_was_open = FALSE;
|
||||
_was_open = FALSE;
|
||||
}
|
||||
|
||||
TLocalisamfile::~TLocalisamfile()
|
||||
@ -3272,9 +3301,26 @@ int TRectype::readat(TBaseisamfile& f, TRecnotype nrec, word lockop)
|
||||
// Certified 100%
|
||||
int TRectype::next(TBaseisamfile& f,word lockop)
|
||||
{
|
||||
const int err = f._next(lockop);
|
||||
/* const int err = f._read(*this, _isnext, lockop);
|
||||
*this = f.curr();
|
||||
return err;
|
||||
return err; */
|
||||
return read(f, _isnext, lockop);
|
||||
}
|
||||
|
||||
// Certified 100%
|
||||
int TRectype::prev(TBaseisamfile& f,word lockop)
|
||||
{
|
||||
return read(f, _isprev, lockop);
|
||||
}
|
||||
|
||||
int TRectype::first(TBaseisamfile& f,word lockop)
|
||||
{
|
||||
return read(f, _isfirst, lockop);
|
||||
}
|
||||
|
||||
int TRectype::last(TBaseisamfile& f,word lockop)
|
||||
{
|
||||
return read(f, _islast, lockop);
|
||||
}
|
||||
|
||||
// Certified ??%
|
||||
|
@ -115,7 +115,10 @@ public:
|
||||
// @cmember Legge il file <p f> con il tipo di record alla posizione desiderata
|
||||
virtual int readat(TBaseisamfile& f, TRecnotype nrec, word lockop = _nolock);
|
||||
// @cmember Legge il prossimo record
|
||||
virtual int next(TBaseisamfile& f, word lockop = _nolock);
|
||||
/* virtual*/ int next(TBaseisamfile& f, word lockop = _nolock);
|
||||
int prev(TBaseisamfile& f, word lockop = _nolock);
|
||||
int first(TBaseisamfile& f, word lockop = _nolock);
|
||||
int last(TBaseisamfile& f, word lockop = _nolock);
|
||||
// @cmember Aggiunge il record al file
|
||||
virtual int write(TBaseisamfile& f) const;
|
||||
// @cmember Riscrive il record sul file
|
||||
@ -321,15 +324,15 @@ class TBaseisamfile : public TObject
|
||||
// @cmember:(INTERNAL) Indica se il file possiede dei campi memo
|
||||
bool _has_memo;
|
||||
|
||||
// @cmember:(INTERNAL) IO su file:
|
||||
int _next(word lockop = _nolock);
|
||||
int _read(TRectype& rec, word op = _isequal, word lockop = _nolock);
|
||||
int _readat(TRectype& rec, TRecnotype nrec, word lockop = _nolock);
|
||||
int _write(const TRectype& rec);
|
||||
int _rewrite(const TRectype& rec);
|
||||
int _remove(const TRectype& rec);
|
||||
// @access Protected Member
|
||||
protected:
|
||||
// @cmember:(INTERNAL) IO su file:
|
||||
// int _next(word lockop = _nolock);
|
||||
virtual int _read(TRectype& rec, word op = _isequal, word lockop = _nolock);
|
||||
virtual int _readat(TRectype& rec, TRecnotype nrec, word lockop = _nolock);
|
||||
virtual int _write(const TRectype& rec);
|
||||
virtual int _rewrite(const TRectype& rec);
|
||||
virtual int _remove(const TRectype& rec);
|
||||
// @cmember Ritorna il descrittore del file isam
|
||||
isdef** ptrfilehnd() const
|
||||
{ return (isdef**) &_isamfile;}
|
||||
|
@ -25,91 +25,6 @@ TTable::TTable(const char* tabname, bool linkrecinst)
|
||||
TTable::~TTable()
|
||||
{}
|
||||
|
||||
int TTable::first(word lockop)
|
||||
|
||||
{
|
||||
|
||||
zero();
|
||||
TBaseisamfile::read(_isgteq, lockop);
|
||||
if (good())
|
||||
if (_tabname != (const char *)_cod) setstatus(_isemptyfile);
|
||||
if (bad()) zero();
|
||||
return status();
|
||||
}
|
||||
|
||||
|
||||
int TTable::last(word lockop)
|
||||
|
||||
{
|
||||
zero();
|
||||
put("CODTAB", "\xFF");
|
||||
TBaseisamfile::read(_isgteq);
|
||||
if (!eof()) TBaseisamfile::prev(lockop);
|
||||
else setstatus(NOERR);
|
||||
if (bof()) setstatus(NOERR);
|
||||
if (good())
|
||||
if (_tabname != (const char *)_cod) setstatus(_isemptyfile);
|
||||
if (bad()) zero();
|
||||
return status();
|
||||
}
|
||||
|
||||
|
||||
int TTable::next(word lockop)
|
||||
{
|
||||
|
||||
const TRecnotype nrec = recno();
|
||||
/*
|
||||
if (nrec != filehnd()->RecNo)
|
||||
{
|
||||
read();
|
||||
if (bad())
|
||||
{
|
||||
if (status() == _iskeynotfound)
|
||||
setstatus(NOERR);
|
||||
return status();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
TBaseisamfile::next(lockop);
|
||||
if (_tabname != (const char *)_cod)
|
||||
{
|
||||
if (lockop == _lock) TBaseisamfile::reread(_unlock);
|
||||
TBaseisamfile::readat(nrec, lockop);
|
||||
setstatus(_iseof);
|
||||
}
|
||||
return status();
|
||||
}
|
||||
|
||||
|
||||
int TTable::prev(word lockop)
|
||||
{
|
||||
|
||||
const TRecnotype nrec = recno();
|
||||
/*
|
||||
if (nrec != filehnd()->RecNo)
|
||||
{
|
||||
read();
|
||||
if (bad())
|
||||
{
|
||||
if (status() == _iskeynotfound)
|
||||
setstatus(NOERR);
|
||||
return status();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
TBaseisamfile::prev(lockop);
|
||||
if (_tabname != (const char *)_cod)
|
||||
{
|
||||
if (lockop == _lock) TBaseisamfile::reread(_unlock);
|
||||
TBaseisamfile::readat(nrec, lockop);
|
||||
setstatus(_isbof);
|
||||
}
|
||||
return status();
|
||||
}
|
||||
|
||||
|
||||
int TTable::skip(TRecnotype nrec, word lockop)
|
||||
|
||||
{
|
||||
@ -134,50 +49,78 @@ int TTable::skip(TRecnotype nrec, word lockop)
|
||||
}
|
||||
|
||||
|
||||
int TTable::read(word op, word lockop, TDate&)
|
||||
int TTable::_read(TRectype& rec, word op, word lockop)
|
||||
|
||||
{
|
||||
CHECKD(op >= _iscurr && op <= _isgteq, "Invalid read operation : ", op);
|
||||
TBaseisamfile::read(op, lockop);
|
||||
if (_tabname != (const char *)_cod)
|
||||
if (op == _isfirst)
|
||||
{
|
||||
if (lockop == _lock) TBaseisamfile::reread(_unlock);
|
||||
last(lockop);
|
||||
setstatus(_iseof);
|
||||
zero();
|
||||
TBaseisamfile::_read(rec, _isgteq, lockop);
|
||||
if (_tabname != (const char *)_cod)
|
||||
setstatus(_isemptyfile);
|
||||
if (bad())
|
||||
zero();
|
||||
}
|
||||
else
|
||||
if (op == _islast)
|
||||
{
|
||||
zero();
|
||||
put("CODTAB", "\xFF");
|
||||
TBaseisamfile::_read(rec, _isgteq);
|
||||
if (!eof())
|
||||
TBaseisamfile::_read(rec, _isprev, lockop);
|
||||
else
|
||||
setstatus(NOERR);
|
||||
if (bof())
|
||||
setstatus(NOERR);
|
||||
if (_tabname != (const char *)_cod)
|
||||
setstatus(_isemptyfile);
|
||||
if (bad())
|
||||
zero();
|
||||
}
|
||||
else
|
||||
if (op == _isprev)
|
||||
{
|
||||
const TRecnotype nrec = recno();
|
||||
|
||||
TBaseisamfile::_read(rec, _isprev, lockop);
|
||||
if (_tabname != (const char *)_cod)
|
||||
{
|
||||
if (lockop == _lock) reread(_unlock);
|
||||
readat(rec, nrec, lockop);
|
||||
setstatus(_isbof);
|
||||
}
|
||||
}
|
||||
else
|
||||
if (op == _isnext)
|
||||
{
|
||||
const TRecnotype nrec = recno();
|
||||
|
||||
TBaseisamfile::_read(rec, _isnext, lockop);
|
||||
if (_tabname != (const char *)_cod)
|
||||
{
|
||||
if (lockop == _lock) reread(_unlock);
|
||||
readat(rec, nrec, lockop);
|
||||
setstatus(_iseof);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TBaseisamfile::_read(rec, op, lockop);
|
||||
if (_tabname != (const char *)_cod)
|
||||
{
|
||||
if (lockop == _lock) reread(_unlock);
|
||||
last(lockop);
|
||||
setstatus(_iseof);
|
||||
}
|
||||
}
|
||||
return status();
|
||||
}
|
||||
|
||||
|
||||
int TTable::read(TRectype& rec, word op, word lockop, TDate&)
|
||||
int TTable::_readat(TRectype& rec ,TRecnotype nrec, word lockop)
|
||||
|
||||
{
|
||||
CHECKD(op >= _iscurr && op <= _isgteq, "Invalid read operation : ", op);
|
||||
TBaseisamfile::read(rec, op, lockop);
|
||||
if (_tabname != (const char *)_cod)
|
||||
{
|
||||
setstatus(_iseof);
|
||||
if (lockop == _lock) TBaseisamfile::reread(_unlock);
|
||||
last(lockop);
|
||||
}
|
||||
return status();
|
||||
}
|
||||
|
||||
|
||||
int TTable::readat(TRecnotype nrec, word lockop)
|
||||
|
||||
{
|
||||
TBaseisamfile::readat(nrec, lockop);
|
||||
|
||||
CHECKS(_tabname == (const char * )_cod, "Invalid position : Table ", (const char *)_tabname);
|
||||
return status();
|
||||
}
|
||||
|
||||
|
||||
int TTable::readat(TRectype& rec ,TRecnotype nrec, word lockop)
|
||||
|
||||
{
|
||||
TBaseisamfile::readat(rec, nrec, lockop);
|
||||
TBaseisamfile::_readat(rec, nrec, lockop);
|
||||
|
||||
CHECKS(_tabname == (const char *)_cod, "Invalid position : Table ", (const char *)_tabname);
|
||||
return status();
|
||||
|
@ -30,26 +30,15 @@ class TTable : public TLocalisamfile
|
||||
// @access Protected Member
|
||||
protected:
|
||||
void load_module_description();
|
||||
// @cmember Legge il record e lo copia in <p rec> (vedi <t TReclock> e <t TIsamop>)
|
||||
virtual int _read(TRectype& rec, word op = _isequal, word lockop = _nolock);
|
||||
// @cmember Legge il record alla posizione <p nrec> e lo copia in <p rec> (vedi <t TReclock>)
|
||||
virtual int _readat(TRectype& rec, TRecnotype nrec, word lockop = _nolock);
|
||||
// @cmember Ritorna il descrittore del file isam
|
||||
// @access Public Member
|
||||
public:
|
||||
// @cmember Si posiziona sul primo record della tabella
|
||||
virtual int first(word lockop = _nolock);
|
||||
// @cmember Si posiziona sull'ultimo record della tabella
|
||||
virtual int last(word lockop = _nolock);
|
||||
// @cmember Si posiziona sul successivo record della tabella
|
||||
virtual int next(word lockop = _nolock);
|
||||
// @cmember Si posiziona sul precedente record della tabella
|
||||
virtual int prev(word lockop = _nolock);
|
||||
// @cmember Salta <p nrec> record dalla posizione corrente
|
||||
virtual int skip(TRecnotype nrec, word lockop = _nolock);
|
||||
// @cmember Legge il record (vedi <t TReclock> e <t TIsamop>)
|
||||
virtual int read(word op = _isequal, word lockop = _nolock, TDate& = (TDate&)botime);
|
||||
// @cmember Legge il record e lo copia in <p rec> (vedi <t TReclock> e <t TIsamop>)
|
||||
virtual int read(TRectype& rec, word op = _isequal, word lockop = _nolock, TDate& = (TDate&)botime);
|
||||
// @cmember Legge il record alla posizione <p nrec> (vedi <t TReclock>)
|
||||
virtual int readat(TRecnotype nrec, word lockop = _nolock);
|
||||
// @cmember Legge il record alla posizione <p nrec> e lo copia in <p rec> (vedi <t TReclock>)
|
||||
virtual int readat(TRectype& rec, TRecnotype nrec, word lockop = _nolock);
|
||||
// @cmember Controlla se si tratta di una tabella (ritorna sempre TRUE)
|
||||
virtual bool tab() const
|
||||
{ return TRUE; }
|
||||
|
Loading…
x
Reference in New Issue
Block a user