>>>>>>>In my grid class I allow users to sort on up to 3 columns by clicking in the headers. I convert all the fields to characters in order to string them together. For example, the code might look something like:
>>>>>>>INDEX ON CharField1+STR(NumField2) TAG temp
>>>>>>>The problem is that if the numeric field contains negative numbers, they don't sort properly by value. How can I get the numbers to sort correctly and yet index on multiple fields?
>>>>>>>
>>>>>>>Thanks,
>>>>>>
>>>>>>Elyse,
>>>>>>
>>>>>>Try this:
INDEX ON CharField1 + BINTOC(NumField2) TAG temp
This will work, however, only if the numeric field has no decimal places.
>>>>>
>>>>>Thanks, but the numeric fields do have decimals.
>>>>
>>>>OK, I think we got it this time. Use BINTOC() and multiply the field value by 10 ^
n, where
n equals the number of decimal places. The upper limit would be 9 decimal places (1 billion). Will this work?
>>>
>>>Bingo! This seems to work beautifully, and quite cleanly, too. Thanks to everyone who offered their suggestions.
>>
>>Terrific! This was one of those problems that was so interesting, I had to find a solution. However, as a side note, probably the upper limit to it is probably a numeric field that has a total length, excluding the decimal point of 10.
>>
>>Thanks for sticking with me.< s >
>
>George,
>
>Is upper(CharField)+padl(NumericField,Len(NumericField)) simpler? :)
As always there are a multitude of ways to accomplish the same goal with the Fox.
index on upper(CharField)+trans(abs(NumericField),'@L 99999999.99')