Subject | Problem using Global DML Caching |
---|---|
Author | insho2002 |
Post date | 2003-07-15T08:30Z |
Hi,
I have a very strange problem using Global DML Caching.
I use a TIBOQuery which select data from a View (Select * from
VW_COUNTRY)
That view does a select with a join to another table.
This is the Select Statement for VW_COUNTRY:
SELECT C.COUNTRYID, C.CODE, C.NAME, C.ZIPCODE_MASKID, M.NAME
FROM COUNTRY C LEFT OUTER JOIN MASK M ON C.ZIPCODE_MASKID=M.MASKID
The DMLCacheFlags for the TIBOQuery's internal Dataset are set to all
ReceiveFlags.
So this is what happens:
User A has opened the Country VIEW.
User B has opened a Table with Mask Data.
User B Inserts a New Mask.
User A receives a DMLCacheItem of the Inserted MASK.
User A Checks to see if the Keys match (Foreign Key in this case).
User A Does a lookup on the VIEW's dataset to see if the key is
present of
the received DMLCacheItem (Could be an edited MASK).
User A just set a Flag in Code (MustRefresh) and doesn't refresh at
that
moment.
Things go really wrong on the Lookup. I debugged the Lookup
Procedure to see
what
happens, and I noticed the within the Lookup, the
OnDMLCacheReceivedItem is
called
again, which in turn does the Lookup again and ofcourse I get an AV.
This is
really strange,
since nothing else is edited by another User or the User himself.
Does anyone has some ideas what could be happening.
Thanks in Advance,
Marcel Brink.
Xploration.
I have a very strange problem using Global DML Caching.
I use a TIBOQuery which select data from a View (Select * from
VW_COUNTRY)
That view does a select with a join to another table.
This is the Select Statement for VW_COUNTRY:
SELECT C.COUNTRYID, C.CODE, C.NAME, C.ZIPCODE_MASKID, M.NAME
FROM COUNTRY C LEFT OUTER JOIN MASK M ON C.ZIPCODE_MASKID=M.MASKID
The DMLCacheFlags for the TIBOQuery's internal Dataset are set to all
ReceiveFlags.
So this is what happens:
User A has opened the Country VIEW.
User B has opened a Table with Mask Data.
User B Inserts a New Mask.
User A receives a DMLCacheItem of the Inserted MASK.
User A Checks to see if the Keys match (Foreign Key in this case).
User A Does a lookup on the VIEW's dataset to see if the key is
present of
the received DMLCacheItem (Could be an edited MASK).
User A just set a Flag in Code (MustRefresh) and doesn't refresh at
that
moment.
Things go really wrong on the Lookup. I debugged the Lookup
Procedure to see
what
happens, and I noticed the within the Lookup, the
OnDMLCacheReceivedItem is
called
again, which in turn does the Lookup again and ofcourse I get an AV.
This is
really strange,
since nothing else is edited by another User or the User himself.
Does anyone has some ideas what could be happening.
Thanks in Advance,
Marcel Brink.
Xploration.