Close Databases All Create Cursor retvalues (retvalue C(20)) nMaxLevels=5 =genpermuts(1,'') SELECT retvalues browse Return FUNCTION genpermuts LPARAMETERS nLevel,cPrevvalue LOCAL nloop,cAddvalue FOR nLoop=1 TO nMaxLevels cAddvalue=Transform(nLoop) IF AT(cAddvalue,cPrevvalue)>0 loop endif cRetvalue=cPrevvalue+cAddvalue If nLevel=nMaxLevels Insert Into retvalues values(cRetvalue) else =genpermuts(nLevel+1,cRetvalue) Endif ENDFORMost likely, you will enumerate your orders, firstly, i.e. 1,2,3... and then use this code.