Page 1 of 1

Help

Posted: Sun Feb 18, 2018 12:44 pm
by zorpavns
Help
How to index positive and negative numbers. So put them in a rising order.

When the number is converted to a string, it disappears like this:

-10000.00
20000.00
-5000.00
5000.00
Does anyone have an idea of ​​how to fit properly.

Thanks in advance

Re: Help

Posted: Sun Feb 18, 2018 12:56 pm
by Marin
Hi zorpavns,

Try using:
INDEX ON VAL(char_field) to File_NTX.

Regards,
Marin

Re: Help

Posted: Sun Feb 18, 2018 12:58 pm
by zorpavns
What to do when a combined index is composed of letters and numbers

Re: Help

Posted: Sun Feb 18, 2018 1:20 pm
by Marin
zorpavns wrote:
Sun Feb 18, 2018 12:58 pm
What to do when a combined index is composed of letters and numbers
Please kindly give an example of your index key resulting data. Up to now we were talking about numbers only, i guess...

Re: Help

Posted: Sun Feb 18, 2018 1:32 pm
by zorpavns
Example index

vrs=Ch2
Sal=Numeric 19,2

vrs+str(sal,19,2)

Re: Help

Posted: Sun Feb 18, 2018 1:34 pm
by trmpluym
Zorpavns,

There is a simple solution for this problem. You can simply add a large number to compensate the largest possible negative number.

For example when the field has got 4 positions add 99999 (five times 9).

STR(NumField+99999)

The index would be always positive and the sort order is correct.

Theo

Re: Help

Posted: Sun Feb 18, 2018 1:43 pm
by ROBROS
Hi Zorpavns,

"Mixed" index: persnr is a "C", character field, date is "D", date field.

My index: index on persnr+dtos(date) to indexfile.

Regards
Robert

Re: Help

Posted: Sun Feb 18, 2018 2:56 pm
by edk
Try instead of str () to use a strzero ()

Re: Help

Posted: Sun Feb 18, 2018 3:14 pm
by BeGeS
I would create this function:

Code: Select all

FUNCTION NEGATEX(NUMERO)
LOCAL RESUL
 IF NUMERO<0
    RESUL:= "-" + STR(ABS(NUMERO),18,2)
 ELSE
    RESUL:= STR(NUMERO,19,2)
 ENDIF
RETURN RESUL
Your index:

vrs+NEGATEX(sal)