Lparameters lnManufacter As Integer, lnBrand As Integer lcOrder="012345" && but it can be in any permutation of the characters 720 in total *Remember 0=Weight, 1 Characteristic 1,2 Characteristic 2, etc Select Acts Scan If Left(lcOrder,1,1)="0" Select Distinct Weight From Acts Where idManufact=lnManufacter And idBrand=lnBrand Into Cursor Weights ReadWrite Scan lnWeight=Acts.idWeight Insert Into Parameters (Text) Values (">Manufacter") Insert Into Parameters (Text) Values (">>Brand") Insert Into Parameters (Text) Values (">>>Weight") If Len(lcOrder)>1 Do Case Case Left(lcOrder,2,1)="1" Select Distinct Charac1 From Acts Where idManufact=lnManufacter And idBrand=lnBrand ; and idWeight=lnWeight Into Cursor Characts1 ReadWrite Scan lnChar1=Acts.idChar1 Insert Into Parameters (Text) Values (">Manufacter") Insert Into Parameters (Text) Values (">>Brand") Insert Into Parameters (Text) Values (">>>Weight") Insert Into Parameters (Text) Values (">>>>Char 1") If Len(lcOrder)>2 Do Case Case Left(lcOrder,3,1)="2" Select Distinct Charac2 From Acts Where idManufact=lnManufacter And idBrand=lnBrand ; and idWeight=lnWeight And idChar1=lnChar1 Into Cursor Characts2 ReadWrite Scan lnChar2=Acts.idChar2 Insert Into Parameters (Text) Values (">Manufacter") Insert Into Parameters (Text) Values (">>Brand") Insert Into Parameters (Text) Values (">>>Weight") Insert Into Parameters (Text) Values (">>>>Char 1") Insert Into Parameters (Text) Values (">>>>>Char 2") If Len(lcOrder)>3 && ..... EndIf EndScan Case Left(lcOrder,3,1)="3" *More Cases.... EndCase EndIf EndScan Case Left(lcOrder,2,1)="1" *More Cases.... EndCase EndIf EndScan EndIf EndScanThat is the algorithm in a hard way, imagine I will have to write it for 720 different permutations, what I want is a way to do it for N permutations, is more clear now?
zap in gridCursor >insert into gridCursor ; > select * from crsTemp ; > order by &lcOrder>assuming VFP8 or 9 (not sure insert into works in 7 or earlier, but then you can append from dbf("crsTemp") instead).