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
					
				@ -298,7 +298,7 @@ HIDDEN int cisread(isfdptr isfd, TRectype & record, int mode)
 | 
			
		||||
      }
 | 
			
		||||
      if (rmode != _isequal && err == _iskeynotfound) err = NOERR;
 | 
			
		||||
    }
 | 
			
		||||
    if (rmode != _isequal && err == _iseof)
 | 
			
		||||
    if (err == _iseof)
 | 
			
		||||
      DB_last(isfd->fhnd);
 | 
			
		||||
    if (err == NOERR && (lmode == _lock || lmode == _testandlock))   // _lock e _testandlock
 | 
			
		||||
    {
 | 
			
		||||
@ -741,10 +741,12 @@ int TBaseisamfile::write(TDate& atdate)
 | 
			
		||||
  NOT_OPEN();                       
 | 
			
		||||
  int oldkey=getkey();
 | 
			
		||||
  browse_null(curr().string(),DB_reclen(_isamfile->fhnd)); 
 | 
			
		||||
  memcpy(DB_getrecord(_isamfile->fhnd),curr().string(),DB_reclen(_isamfile->fhnd));
 | 
			
		||||
  TRectype r(curr());
 | 
			
		||||
  
 | 
			
		||||
  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);
 | 
			
		||||
    if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
 | 
			
		||||
  } 
 | 
			
		||||
@ -762,10 +764,12 @@ int TBaseisamfile::write(const TRectype& rec, TDate& atdate)
 | 
			
		||||
  NOT_OPEN();
 | 
			
		||||
  int oldkey=getkey();
 | 
			
		||||
  browse_null(rec.string(),DB_reclen(_isamfile->fhnd));
 | 
			
		||||
  memcpy(DB_getrecord(_isamfile->fhnd),rec.string(),DB_reclen(_isamfile->fhnd));                             
 | 
			
		||||
  TRectype r(rec);
 | 
			
		||||
 | 
			
		||||
  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);
 | 
			
		||||
    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...
 | 
			
		||||
  memcpy(DB_getrecord(_isamfile->fhnd),save_rec.string(),DB_reclen(_isamfile->fhnd));
 | 
			
		||||
  if (_lasterr == NOERR)
 | 
			
		||||
  {
 | 
			
		||||
    _lasterr = DB_rewrite(_isamfile->fhnd);
 | 
			
		||||
    if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
 | 
			
		||||
    _recno = _isamfile->RecNo = DB_recno(_isamfile->fhnd);
 | 
			
		||||
  }  
 | 
			
		||||
  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...
 | 
			
		||||
  memcpy(DB_getrecord(_isamfile->fhnd),save_rec.string(),DB_reclen(_isamfile->fhnd)); 
 | 
			
		||||
  if (_lasterr == NOERR)
 | 
			
		||||
  {
 | 
			
		||||
    _lasterr = DB_rewrite(_isamfile->fhnd);
 | 
			
		||||
    if (_lasterr != NOERR) _lasterr = get_error(_lasterr);
 | 
			
		||||
    _recno = _isamfile->RecNo = DB_recno(_isamfile->fhnd);
 | 
			
		||||
  }    
 | 
			
		||||
  return _lasterr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user