Icon View Incident Report

Serious Serious
Reported By: Andreas Jaeke
Reported On: 5/23/2002
For: Version 3.10 Build 1
# 1106 Deleting a Record in Edit Mode after Editing BLOB Field Causes #8963 Blob Buffers Corrupt Error

The Database System Utility opened a table in a database on a remote server. In this table there is a memo-field. When you open a non-empty memo, mark the text in it, delete it, close the memo and then directly delete the record that contains this memo (not moving the data-cursor i.e. not posting the record) you'll always get an exception that the index is corrupt. (DBISAM exception #8965) You even have to end the Database System Utility using the Task-Manager.(You'll be asked if you want to post changes but get a DBISAM exception #8963 then) This also happens if you're working on a local table.

Put a DBISAMSession, a DBISAMDatabase and a DBISAMQuery on a formular 

and configure it properly to be connected to a remote DBISAM-server.
Set DBISAMQuery.RequestLive to TRUE.

Then the code :

  DBISAMQuery1.SQL.Clear;
  DBISAMQuery1.SQL.Add
  (
    'SELECT' + #13#10 +
    '  *' + #13#10 +
    'FROM' + #13#10 +
    '  exampletable';
  );
  DBISAMQuery1.ExecSQL;
  DBISAMQuery1.Open;
  DBISAMQuery1.First;
  DBISAMQuery1.Edit;
  DBISAMQuery1.FieldByName('examplememo').AsString := '';
  try
    DBISAMQuery1.Delete;
  except
    on E: Exception do
    begin
      Memo1.Lines.Add('Exception deleting record after setting ' +
                      'memo (as string) to '''': ' + #13#10 + E.Message);
      Exit;
    end;
  end;

should write the exeption to the memo (I forgot to mention before ;-)
If you do a DBISAMQuery1.Post before the try-except-block all will go 
well.
In the end it's an easy to avoid behaviour, but it's a little 
irritating I think.



Resolution Resolution
Fixed Problem on 6/2/2002 in version 3.11 build 1
Image