Icon View Incident Report

Serious Serious
Reported By: Bob Knox
Reported On: 10/4/2012
For: Version 4.34 Build 1
# 3634 Delphi XE3 Builds Not Working Correctly

Yesterday, I installed the DBISam updates from 4.33b4 to 4.34b1 (win 32) for both Delphi XE2 and XE3. I recompiled an existing Delphi XE2 (win 32) project and data access via both table and query components worked as before. I can also view existing tables and create new tables with the 4.34 version of Database System Utilities. However, compiling and running the same code under XE3 produced unexpected results:

1. Table.locate fails. For example, using a table with an autoinc ID field, locate(‘ID’,1,[]) returns false although there is a record with ID = 1.

2. Looping through the records of the same table to test for ID = 1 does not succeed:

Table.Active := True;
While not Table.EOF do
if Table.FieldByname(‘ID’).AsInteger = 1 then
ShowMessage(‘Found’); {never displayed}
Table.Active := False;

Stepping through the loop (it loops for the correct number of records) shows that the value returned by Table.FieldByName(‘Id’).AsInteger is always 0.

Comments Comments
Both of these issues were related to a mismatch in the field get/set code for Delphi XE3 only. These methods in the base TDataSet class were changed slightly in XE3, but the changes were not completely documented and our interpretation of the changes was incorrect.

Resolution Resolution
Fixed Problem on 10/4/2012 in version 4.34 build 2

Products Affected Products Affected
DBISAM VCL Client-Server
DBISAM VCL Client-Server with Source
DBISAM VCL Standard with Source