Subject Re: [IBO] Lookup Refresh (was Lookup problem)
Author Helen Borrie
At 02:17 PM 04-09-02 +1000, you wrote:
>I still can't get this to work. If I make the changes suggested last by
>Helen I can't even add a record. So to start clean I've started a new
>thread and have detailed my CURRENT relevant settings below. I say CURRENT
>because I have tried so many different combinations.....
>
>To recap: The problem is my new records in the lookup table are not
>available to the detail table that uses it. I've cross referenced with the
>demos in the GSG and I can't see any differences.
>
>I've copied the important datamodule properties here from the DFM.

[snip]

More questions...

I'm puzzled as to why you have two datasets for the IPLOOKUP table.
Are both of them in the same transaction context? (Can't tell from your
DFM - you must be using a TIB_Database, right?).

What are you actually doing to provide editing and update capability for
the second dataset over the IPLookup table? (this isn't newbie stuff,
btw...).

Are you using a TIB_LookupCombo or TIB_ComboBox for the lookup? If the
latter, how are you getting the data from the dataset into the Items and/or
Values property of the control?

This looks wrong:

KeyDescLinks.Strings = (
'IPLOOKUP.IPL_IPADDRESS=IP_IPADDRESS')

There is no reference here to SPRITEDETAIL. You'll need that...

As you are using KeyDescLinks, you *will* need to commit your changes to
the iplookup table in order for the polling table to "see" them for the
subselect that is populating the computed column...

You will need to tell the SPRITEDETAIL dataset that the computed column is
a computed column - set its COMPUTED attribute in the ColumnAttributes editor.

And you will need to perform a full Refresh the SPRITEDETAIL set (not just
RefreshKeys) if you are using KeyDescLinks, since no value can exist for it
until the sub-select is recomputed using the latest committed version of
the lookup record.

Your SQL for the SPRITEDETAIL set is a bit suspect, too:

'SELECT ID'
' , SD_DESCRIPTION'
' , SD_CAMERA'
' , SD_USERNAME'
' , SD_PASSWORD'
' , SD_GROUPID'
' , SD_IPLOOKUPID'
' , (SELECT IPL_IPADDRESS'
' FROM IPLOOKUP'
' WHERE IPLOOKUP.ID = SPRITEDETAIL.SD_IPLOOKUPID)'
'AS IP_IPADDRESS'
'FROM SPRITEDETAIL')

It is a correlated subquery so you probably need all columns either fully
qualified or fully aliased. Neither Firebird nor IBO is very happy with
partial qualification in joins and subselects...

Helen