Corretta rewrite. Distruggeva il contenuto del record da riscrivere

Corretta write. Nel caso di record esterno non testava correttamente il risultato della cisread.


git-svn-id: svn://10.65.10.50/trunk@1565 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1995-07-05 16:58:15 +00:00
parent 5cf8928b91
commit 909efea50d

View File

@ -754,7 +754,7 @@ int TBaseisamfile::write(const TRectype& rec, TDate& atdate)
TRectype r(rec);
setkey(1);
if (cisread(_isamfile, r, _isequal + _nolock) == _iskeynotfound)
if (cisread(_isamfile, r, _isequal + _nolock) != NOERR)
{
memcpy(DB_getrecord(_isamfile->fhnd),rec.string(),DB_reclen(_isamfile->fhnd));
_lasterr = DB_add(_isamfile->fhnd);
@ -774,10 +774,10 @@ int TBaseisamfile::rewrite(TDate& atdate)
NOT_OPEN();
TRectype save_rec(curr());
_lasterr = cisread(_isamfile, curr(), _isequal + _nolock); // Si Posiziona per sicurezza...
memcpy(DB_getrecord(_isamfile->fhnd),save_rec.string(),DB_reclen(_isamfile->fhnd));
_lasterr = cisread(_isamfile, save_rec, _isequal + _nolock); // Si Posiziona per sicurezza...
if (_lasterr == NOERR)
{
memcpy(DB_getrecord(_isamfile->fhnd), curr().string(),DB_reclen(_isamfile->fhnd));
_lasterr = DB_rewrite(_isamfile->fhnd);
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
_recno = _isamfile->RecNo = DB_recno(_isamfile->fhnd);
@ -791,10 +791,10 @@ int TBaseisamfile::rewrite(const TRectype& rec, TDate& atdate)
{
NOT_OPEN();
TRectype save_rec(rec);
_lasterr = cisread(_isamfile,(TRectype&) rec, _isequal + _nolock); // Si Posiziona per sicurezza...
memcpy(DB_getrecord(_isamfile->fhnd),save_rec.string(),DB_reclen(_isamfile->fhnd));
_lasterr = cisread(_isamfile, save_rec, _isequal + _nolock); // Si Posiziona per sicurezza...
if (_lasterr == NOERR)
{
memcpy(DB_getrecord(_isamfile->fhnd), rec.string(),DB_reclen(_isamfile->fhnd));
_lasterr = DB_rewrite(_isamfile->fhnd);
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
_recno = _isamfile->RecNo = DB_recno(_isamfile->fhnd);