You should have two tables here, I'll call them MainTable and ValuesTable for this example:
In MainTable, define a field,ZeroKey and put 0 in it. You can do this with a calculation or a number field set to auto-enter this value.
Define a relationship:
MainTable::ZeroKey < ValuesTable::Volume
Now, for a layout based on MainTable, you can use a value list specifying ValuesTable::Volume with related values starting from MainTable.
Sorry, I simply don't get it! - (I have tried it, but can't get it working)
Why do you need two tables?
Can you explain the logic behind what you suggested?
Why does the 'related values starting from MainTable' bit filter out all non-zero entries in the drop down list? To me, that makes no sense.
I feel a little bit dumb here; it just seems overly complicated for such a simple thing to do.......
(A calculation box here would go a very long way FMP Devs.)
You don't absolutely need two tables, it's just an easier starting point. You DO need two table occurrences so that you can specify a relationship for the value list. The two Table Occurrences could refer to the same table. Since you didn't describe your table structure, I had to make my own and the two table approach is easier to describe without pictures.
"Why does the 'related values starting from MainTable' bit filter out all non-zero entries in the drop down list?"
That's a very good question. Filemaker doesn't make this part of the process obvious. In order to tell filemaker which relationship we want it to use, we really need to tell it three things:
(1 & 2 ) What tables are used? Filemaker knows that RelatedTable is the first Table Occurrence used because we specified it as the value source at the top of the dialog. The "starting from" designation tells it that MainTable is the second TO. Since every TO points to only one physical table for each TO, it can find the data it needs for the conditional value list.
(3) What's the rule for matching the values? That's the information we enter into the Edit Relationship Dialog to describe the relationship linking these two table occurrences. In this case we are specifying that all values match IF the number stored in Volume is greater than zero which is what you wanted.
There is a calculation based method for doing what you want. If you want your values to always be filtered the same way, you can do it this way:
Define a calculation field: If ( Volume > 0 ; FieldID ; "" )
Now specify this field in Manage Value lists and no relationship is needed.