Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 4 of 4 total
Thread Getting Current Data in Local Multi-User mode
Tue, May 15 2007 3:56 PMPermanent Link

Gordon Turner
In my application I use a combination of direct table access for adding
and deleting records, and SQL queries for retrieving data (working in
Local mode).  When I have two users accessing the same data, I've
noticed that when one user adds a new record (via direct table access),
the second user cannot see the new record with an SQL query until the
table component has been refreshed.

I would hate to have to refresh tables every time I execute an SQL query
just to make sure I am retrieving the most current data as I'm not sure
of the performance implications.  I perform a FlushBuffers in the
AfterPost event of every table, and I set the ForceBufferFlush property
in the Session to True as well.  What else do I need to do to or how
else can I make sure I'm seeing the most current data.  (Client/Server
mode is not an option at this time.)

(I guess I'm surprised that an SQL query goes against a buffered data
set and not the actual tables, or that a FlushBuffers does not force a
write to the actual tables to make the data available for an SQL query.)

--
Gordon Turner
Mycroft Computing
http://www.mycroftcomputing.com
Tue, May 15 2007 5:31 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Gordon,

<< In my application I use a combination of direct table access for adding
and deleting records, and SQL queries for retrieving data (working in Local
mode).  When I have two users accessing the same data, I've noticed that
when one user adds a new record (via direct table access), the second user
cannot see the new record with an SQL query until the table component has
been refreshed. >>

Is the query result set sensitive (live) ?  Are you closing and then
re-opening the query or just calling Refresh for the TEDBQuery component ?

--
Tim Young
Elevate Software
www.elevatesoft.com


Tue, May 15 2007 6:23 PMPermanent Link

Gordon Turner
Tim Young [Elevate Software] wrote:
>
> Is the query result set sensitive (live) ?  Are you closing and then
> re-opening the query or just calling Refresh for the TEDBQuery component ?

I'm using a single TEDBBQuery component as follows:

Active := False;
SQL.Clear;
SQL.Add(sQueryText);
Active := True;

I added a RequestSensitive := True before the Active := True but that
didn't seem to make any difference.  Is there a difference between
setting the Active property and the Open/Close methods for a query with
no parameters?

--
Gordon Turner
Mycroft Computing
http://www.mycroftcomputing.com
Thu, May 17 2007 2:08 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Gordon,

<< I'm using a single TEDBBQuery component as follows:

Active := False;
SQL.Clear;
SQL.Add(sQueryText);
Active := True;

I added a RequestSensitive := True before the Active := True but that
didn't seem to make any difference.  Is there a difference between setting
the Active property and the Open/Close methods for a query with no
parameters? >>

No, that won't make any difference.  Check the TEDBQuery.Sensitive property
after setting Active to True in order to verify that the result set is
actually sensitive.  The rules for sensitive queries is here:

http://www.elevatesoft.com/edb1sql_result_set_cursor_sensitivity.htm

--
Tim Young
Elevate Software
www.elevatesoft.com

Image