Corrette cisread, write e rewrite
git-svn-id: svn://10.65.10.50/trunk@1551 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
23cdfca841
commit
d96d30d323
@ -1,5 +1,5 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#define __ISAM_CPP
|
#define __ISAM_CPP
|
||||||
|
|
||||||
@ -298,7 +298,7 @@ HIDDEN int cisread(isfdptr isfd, TRectype & record, int mode)
|
|||||||
}
|
}
|
||||||
if (rmode != _isequal && err == _iskeynotfound) err = NOERR;
|
if (rmode != _isequal && err == _iskeynotfound) err = NOERR;
|
||||||
}
|
}
|
||||||
if (rmode != _isequal && err == _iseof)
|
if (err == _iseof)
|
||||||
DB_last(isfd->fhnd);
|
DB_last(isfd->fhnd);
|
||||||
if (err == NOERR && (lmode == _lock || lmode == _testandlock)) // _lock e _testandlock
|
if (err == NOERR && (lmode == _lock || lmode == _testandlock)) // _lock e _testandlock
|
||||||
{
|
{
|
||||||
@ -740,11 +740,13 @@ int TBaseisamfile::write(TDate& atdate)
|
|||||||
{
|
{
|
||||||
NOT_OPEN();
|
NOT_OPEN();
|
||||||
int oldkey=getkey();
|
int oldkey=getkey();
|
||||||
browse_null(curr().string(),DB_reclen(_isamfile->fhnd));
|
browse_null(curr().string(),DB_reclen(_isamfile->fhnd));
|
||||||
memcpy(DB_getrecord(_isamfile->fhnd),curr().string(),DB_reclen(_isamfile->fhnd));
|
TRectype r(curr());
|
||||||
|
|
||||||
setkey(1);
|
setkey(1);
|
||||||
if (cisread(_isamfile, curr(), _isequal + _nolock) == _iskeynotfound)
|
if (cisread(_isamfile, r, _isequal + _nolock) != NOERR)
|
||||||
{
|
{
|
||||||
|
memcpy(DB_getrecord(_isamfile->fhnd),curr().string(),DB_reclen(_isamfile->fhnd));
|
||||||
_lasterr = DB_add(_isamfile->fhnd);
|
_lasterr = DB_add(_isamfile->fhnd);
|
||||||
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
||||||
}
|
}
|
||||||
@ -762,10 +764,12 @@ int TBaseisamfile::write(const TRectype& rec, TDate& atdate)
|
|||||||
NOT_OPEN();
|
NOT_OPEN();
|
||||||
int oldkey=getkey();
|
int oldkey=getkey();
|
||||||
browse_null(rec.string(),DB_reclen(_isamfile->fhnd));
|
browse_null(rec.string(),DB_reclen(_isamfile->fhnd));
|
||||||
memcpy(DB_getrecord(_isamfile->fhnd),rec.string(),DB_reclen(_isamfile->fhnd));
|
TRectype r(rec);
|
||||||
|
|
||||||
setkey(1);
|
setkey(1);
|
||||||
if (cisread(_isamfile, (TRectype&)rec, _isequal + _nolock) == _iskeynotfound)
|
if (cisread(_isamfile, r, _isequal + _nolock) == _iskeynotfound)
|
||||||
{
|
{
|
||||||
|
memcpy(DB_getrecord(_isamfile->fhnd),rec.string(),DB_reclen(_isamfile->fhnd));
|
||||||
_lasterr = DB_add(_isamfile->fhnd);
|
_lasterr = DB_add(_isamfile->fhnd);
|
||||||
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
||||||
}
|
}
|
||||||
@ -786,9 +790,11 @@ int TBaseisamfile::rewrite(TDate& atdate)
|
|||||||
_lasterr = cisread(_isamfile, curr(), _isequal + _nolock); // Si Posiziona per sicurezza...
|
_lasterr = cisread(_isamfile, curr(), _isequal + _nolock); // Si Posiziona per sicurezza...
|
||||||
memcpy(DB_getrecord(_isamfile->fhnd),save_rec.string(),DB_reclen(_isamfile->fhnd));
|
memcpy(DB_getrecord(_isamfile->fhnd),save_rec.string(),DB_reclen(_isamfile->fhnd));
|
||||||
if (_lasterr == NOERR)
|
if (_lasterr == NOERR)
|
||||||
|
{
|
||||||
_lasterr = DB_rewrite(_isamfile->fhnd);
|
_lasterr = DB_rewrite(_isamfile->fhnd);
|
||||||
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
||||||
_recno = _isamfile->RecNo = DB_recno(_isamfile->fhnd);
|
_recno = _isamfile->RecNo = DB_recno(_isamfile->fhnd);
|
||||||
|
}
|
||||||
return _lasterr;
|
return _lasterr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -801,9 +807,11 @@ int TBaseisamfile::rewrite(const TRectype& rec, TDate& atdate)
|
|||||||
_lasterr = cisread(_isamfile,(TRectype&) rec, _isequal + _nolock); // Si Posiziona per sicurezza...
|
_lasterr = cisread(_isamfile,(TRectype&) rec, _isequal + _nolock); // Si Posiziona per sicurezza...
|
||||||
memcpy(DB_getrecord(_isamfile->fhnd),save_rec.string(),DB_reclen(_isamfile->fhnd));
|
memcpy(DB_getrecord(_isamfile->fhnd),save_rec.string(),DB_reclen(_isamfile->fhnd));
|
||||||
if (_lasterr == NOERR)
|
if (_lasterr == NOERR)
|
||||||
|
{
|
||||||
_lasterr = DB_rewrite(_isamfile->fhnd);
|
_lasterr = DB_rewrite(_isamfile->fhnd);
|
||||||
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
|
||||||
_recno = _isamfile->RecNo = DB_recno(_isamfile->fhnd);
|
_recno = _isamfile->RecNo = DB_recno(_isamfile->fhnd);
|
||||||
|
}
|
||||||
return _lasterr;
|
return _lasterr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user