Page 1 of 1

Macro in SORT code block

Posted: Tue Oct 16, 2012 3:28 pm
by Janko
Roger,

I have troubles with macros in code blocks again. I'm trying to automate

Code: Select all


 FOR i:= 1 to len(aNazivi)
                DCBROWSECOL ELEMENT i HEADER aNazivi[i]  WIDTH aSir[i] ;
	SORT {||ASort(arr,,,{|a,b|a[i]<b[i]})} 	PARENT oBrowse
NEXT i
which is sorting of coures wrong. If correcting SORT code block with

Code: Select all

FOR i := 1 TO len(aNazivi)
	bSort:=("{|a,b|a["+str(i,2)+"]<b["+str(i,2)+"]}")
                DCBROWSECOL ELEMENT i HEADER aNazivi[i]  WIDTH aSir[i] ;
	SORT  {||Asort(arr,,,&(bsort) )};
	PARENT oBrowse
NEXT
sorting is performed by last column.
How should codeblock look like?

Best rgards
JAnko

Re: Macro in SORT code block

Posted: Tue Oct 16, 2012 8:55 pm
by rdonnay
You need to anchor each value of i with a detached codeblock:

Code: Select all

FOR i:= 1 to len(aNazivi)
                DCBROWSECOL ELEMENT i HEADER aNazivi[i]  WIDTH aSir[i] ;
   SORT SortBlock(arr,i)     PARENT oBrowse
NEXT i


STATIC FUNCTION SortBlock( arr, i )

RETURN {||ASort(arr,,,{|a,b|a[i]<b[i]})}

Re: Macro in SORT code block

Posted: Wed Oct 17, 2012 8:52 am
by Janko
Roger,

of course your solution works. Many thanks.

JAnko