Subject Re: [IBO] Newbie: "Comuted By" and other questions
Author Helen Borrie
At 12:03 AM 22-10-01 -0400, John Antoniewicz wrote:
>Hello IB Object Support,
>I am new to both IB Object and Interbase and am still trying to understand all of the components. I just bought the grand bundle several weeks ago. I am using it with Delphi Professional version 6.0, Interbase (Firebird version WI-T1.0.0.338 beta 2).
>I have set up a simple test program using a MASTER/DETAIL table setup. I am using the following components (TIB_Connection, TIBOQuery, TIBOTable, TIB_Transaction and TDataSource and TwwGrids).

If you are using Tww controls and TIBO data access components, then you should use TIBODatabase, not TIB_Connection and TIB_Transaction. Those two components belong to the non-TDataset-compatible architecture, known as "native IBO".

>1) I created a "Computed By" field in my PERSONAL table called "FULL_NAME" which is based on the "LAST_NAME", "MIDDLE_NAME" and the "LAST_NAME". I see the changes take place when I CLOSE then OPEN the table. My question is how can I make the changes take place to the "FULL_NAME" field when the record is saved and with out closing and then reopen the table, itself?

This is a database matter - COMPUTED BY columns never store actual data, they store the algorithm for extracting the output value to queries. If you insert a new row into your PERSONAL table, the value of that row's FULL_NAME column won't be available until the row is actually stored in the database, i.e. committed. So a Refresh (i.e. close and open of the table) is the only way you are going to see it.

>2) My other question is about TRIGGERS. I understand the TRIGGERS are fired when the table mode changes, i.e.... during INSERTS and UPDATES. When I defined the trigger in the table I don't see it working when I call a Delphi function like PERSONAL.Insert. What am I missing?

Triggers don't fire until the COMMIT process begins. The Insert function is a client method that sets up a new row on the client side, ready to accept input parameters into the columns. It's impact on the database is nil until Post is called - but even then, the new row is created only as a row version in the current transaction's cache. At that point it must be committed or rolled back to complete and actually store the row permanently. If Commit is called and the row is valid, the triggers will then fire. If it fails, everything fails (including any work the triggers might have done so far).

>3) My last question is about my components. Why is it that some of the "ibo" tabs disappears when I started creating an application? The tabs are (iboSearch, iboBars and iboMisc). Do I get any advantage using these components over InfoPower 3000 components?

This sounds like a faulty installation. Under what exact conditions do the tabs disappear?

However, the Search, Bars and other IBO controls don't work with the TIBO* components. The TIBO components connect to the Delphi TDatasource, the TIB_* ("native IBO) components connect to the TIB_Datasource, through which the TIB_ controls are driven.

These compatibility issues may become clearer if you study the Getting Started Guide, which I believe you would have received with the Grand Bundle. If not, please contact me privately and I will send you a link.


All for Open and Open for All
InterBase Developer Initiative ยท