Subject Help! TDataset in IBO 5.0.2 misbehaving
Author Chuck Belanger
Hello:

I have been using D2007 with FB 2.5 with IBO 4.8.7 with a Woll2Woll
RecordViewPanel which requires TDataset to add patients to the local DB.
The patient data is encrypted. Everything has been working fine for over
a year. Now with IBO 5.0.2 (_b52a update) in XE2, the entered data is
not posted. Below is the salient code and what I am observing:

WITH qryPatientSession DO
BEGIN
//decrypting all encrypted patient fields
SQL.Add('Select f_str2str(Name_First,' + inttoStr(TV.HPW)+') as
Name_First,');
SQL.Add('F_Str2Str(Name_Last,' +InttoStr(TV.HPW)+') as Name_Last,');
SQL.Add('F_Str2Str(Upper_Name_Last,' +InttoStr(TV.HPW)+') as
Upper_Name_Last,');
SQL.Add('F_Str2Str(Address1,'+InttoStr(TV.HPW)+') as Address1,');
SQL.Add('F_Str2Str(Address2,'+InttoStr(TV.HPW)+') as Address2,');
SQL.Add('F_Str2Str(City,'+InttoStr(TV.HPW)+') as City, ');
SQL.Add('F_Str2Str(State,'+InttoStr(TV.HPW)+') as State, ');
SQL.Add('F_Str2Str(Country,'+InttoStr(TV.HPW)+') as Country, ');
SQL.Add('F_Str2Str(Postal_Code,'+InttoStr(TV.HPW)+') as Postal_Code, ');
SQL.Add('F_Str2Str(Phone,'+InttoStr(TV.HPW)+') as Phone, ');
SQL.Add('F_Str2Str(Email,'+InttoStr(TV.HPW)+') as Email, ');
SQL.Add('F_Str2Str(Cell_Phone,'+InttoStr(TV.HPW)+') as Cell_Phone,');
SQL.Add('F_Str2Str(Work_Phone,'+InttoStr(TV.HPW)+') as Work_Phone,');

SQL.Add('PT_ID,');
SQL.Add('PR_ID,');
SQL.Add('FIRST_VISIT, ');
SQL.Add('BIRTHDATE, ');
SQL.Add('GENDER, ');
SQL.Add('PT_IMAGE, ');
SQL.Add('EMAIL_1,');
SQL.Add('EMAIL_2,');
SQL.Add('EMAIL_3,');
SQL.Add('E0_USED,');
SQL.Add('E1_USED,');
SQL.Add('E2_USED,');
SQL.Add('E3_USED,');
SQL.Add('OTC_RATE,');
SQL.Add('OTC_VOLUME,');
SQL.Add('Title');
SQL.Add('FROM Patients');
SQL.Add('where (PR_ID = :PractitionerID ');
SQL.Add('or PT_ID = 1)');

On Add Patient, I INSERT a record and by default the DB (Firebird 2.5)
adds Name_last = 'Last Name' to avoid possible errors from a blank last
name field. Fields are replaced during Post and AfterPost event

In ww Record View Panel adding new client, "John Smith"
Save Patient:

at code:

IF dsPatientSession.State IN [dsInsert, dsEdit] THEN
BEGIN
edit;
FieldByName('pr_id').AsInteger := PractitionerID;
{when traced up to this point:
qryPatientSession.FieldByName('Name_Last').asString = 'Smith' before and
after Post, before AfterPost event for IBO 4.8.7, but for 5.0.2 just
before the Post, it = 'Smith' but after the POST and before the
AfterPost event
it = 'Last Name' the default INSERT value, but not the RecordViewPanel
value. It appears that all the Dataset values obtained from the RVP are
lost during the POST.

Nothing gets added to the new table, except the "Last Name" default for
the Name_Last field.
}
Post; //transaction is autocommit
END;

This appears to be a bug, but if not can someone point out what I am
doing wrong?
This is a critical feature in a distributed application, so need fixing
ASAP.

Thank you,

Chuck Belanger