[AccessD] Data from Informix to Access - dirty reads?

Jim Lawrence accessd at shaw.ca
Mon Jan 24 23:36:02 CST 2005


Hi Roz:

I worked with Informix about ten to fifteen years ago. It seemed like a good
product but that is maybe because I was also using their DOS product,
SmartWare to connect to their Unix DB... and they were the only show in
town. The problems you are talking about were issues then.

At a risk of sounding ignorant, I would recommend an ADO-OLE, recordset, MDE
combination. Had over sixty users building reports in this method and the
bloat was there but very manageable... only compressed the MDB once a month
whether it needed it or not. I placed a simple copy of the method used on
the DBA web site. See:
http://www.databaseadvisors.com/newletters/newsletter112003/0311UnboundRepor
ts.htm

The trick is to have an original report temp table used it to clone all the
user's tables. Each user & base table name is used to create a new source
for the report which is then substituted for the report's source. It is also
very fast... 50 thousand records in a few seconds. This process worked so
well for me, in a pinch that I never bothered upgrading. 

If you decide to go this method, drop a request on the list and I can supply
all the info you need. 

HTH
Jim

-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Roz Clarke
Sent: Monday, January 24, 2005 7:23 AM
To: 'Access Developers discussion and problem solving'
Subject: [AccessD] Data from Informix to Access - dirty reads?

Hi all 


We have a bit of a problem with getting data out of our Informix server
since we recently turned on transaction logging for replication. When
extracting data with an Access XP MDE using pass-through queries, Access
locks entire tables in the Informix database, which causes transaction
errors and makes the Informix database scarily unstable.

Our Informix suppliers told us that the way to avoid these locking issues
was to set the connection to 'dirty read' before running the SQL. However,
Access cannot execute 2 statements in a pass-through query and it does not
hold the connection open between the execution of 1 statement and the next.
Thus when the query is processed the 'dirty read' setting is no longer in
effect.

We have been racking our brains trying to come up with a workaround. Some
further options that we have considered are:

*	Stick the data in a temp table in Informix. This is no good because
the temp table is destroyed automatically when the connection is closed and
there's no way to make it persist long enough to bind it to a report.
*	Use a view in Informix. This is no good because views in Informix
cannot be set read-only.
*	Create a permanent table in Informix and destroy it when finished
with it. This is far from ideal because Informix does not support SELECT
INTO and therefore a table would have to be explicitly constructed with
names columns etc. We really need the system to be flexible so that the
queries can be easily changed.
*	Use an ADO recordset. This is a PITA because you cannot bind a
report to a recordset in an MDE and we cannot build the report on the fly -
we are a Terminal Services site so we will have up to 20 users in one FE.
*	Create a table in Access and destroy it when finished with it. Can't
think of a better way to induce bloating...

Has anyone faced this kind of problem before? Any bright ideas? Our
foreheads are starting to bleed...

TIA

Roz (and Tom)




More information about the AccessD mailing list