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