InStock is an unstored calculation. Is there a way you can update the value via a script tied to a script trigger? This way the field can be indexed and perhaps used for a value list.
But InStock only measures quantity. What you need is a binary field indicating whether the stock of an item is 0 or > 0. If the stock is 0, then the binary field value is 0, if it is > 0, then it is 1. You can use a constant field ( = 1 ) from Table A to create a relationship to Table B to the new binary field. You can then create a value list to show all the items in stock.
Itried a field with values 1 nad 0. It is calculated nad can't be indexed. Nad we are at begining.
I used another field in TableA calculated with ExecuteSQL command. It can be indexed and serve as source of value list. But this list refreshes at only few steps (after opening DB and adding new record in TableA or TableB).