close all >set defa to \temp >=rand(-1) >create cursor xtest (Category c(10), Subcategory c(10), Amount i) >for ix = 1 to 5000 > lnCategory = int(rand()*10) > lnSubCategory = int(rand()*252) > insert into xtest ; > values ("Cat"+padl(lnCategory,2,"0"),; > "SubCat"+padl(lnSubCategory,3,"0"),; > int(rand()*1000)) >endfor > >SELECT Category , Subcategory , SUM(amount); > FROM xtest ; > GROUP BY Category, SubCategory ; > ORDER BY Category, SubCategory ; > INTO CURSOR SYS(2015) > >* Parameters: >* >* Parm1 - output file/cursor name (default "xtab.dbf") >* Parm2 - cursor only (default .F.) >* Parm3 - close input table after (default .T.) >* Parm4 - show thermometer (default .T.) >* Parm5 - row field (default 1) >* Parm6 - column field (default 2) >* Parm7 - data field (default 3) >* Parm8 - total rows (default .F.) >* Parm9 - totaling options (0-sum, 1-count, 2-% of total) >* Parm10 - display Null values > >DO (_GENXTAB) WITH 'XTAB',.t.,.t.,.t.,,,,.t.,0,.f. >browse > SELECT xtab > GO BOTTOM > APPEND BLANK IN xtab > REPLACE (field(1,"xtab")) WITH 'TOTAL' > FOR lnCnt = 2 TO FCOUNT() > lcFieldName = 'xtab.'+FIELD(lnCnt) > CALCULATE SUM(&lcFieldName) TO lnSum > GO BOTTOM > REPLACE &lcFieldName WITH lnSum > ENDFOR > CREATE DBF ATA_Report (ata c(5) , project1 c(5), project2 c(5), ; > project3 c(5), project4 c(5), project5 c(5), project6 c(5), ; > project7 c(5), project8 c(5), project9 c(5), project10 c(5), ; > project11 c(5), project12 c(5), project13 c(5), project14 c(5), ; > project15 c(5)) > select 0 > CREATE DBF ATA_Report1 (ata c(5) , project1 i, project2 i, ; > project3 i, project4 i, project5 i, project6 i, ; > project7 i, project8 i, project9 i, project10 i, ; > project11 i, project12 i, project13 i, project14 i, ; > project15 i) > GO TOP > SELECT xtab > GO TOP > llEnd = .f. > DO WHILE !EOF() > lnFieldTot = 2 > FOR lnFCnt = 1 TO 15 > SELECT xtab > lcFName = FIELD(lnFieldTot) > lcFCnt = ltrim(STR(lnFCnt)) > IF lnFCnt < 10 > lcATAFName = "project"+RIGHT(lcFCnt,1) > ELSE > lcATAFName = "project"+RIGHT(lcFCnt,2) > ENDIF > IF lnFCnt = 1 > SELECT ATA_Report > GO BOTTOM > APPEND BLANK > REPLACE ata WITH (eval("xtab."+field(1,"xtab"))) > > insert into ATA_Report1 (ata) ; > values ( eval("xtab."+field(1,"xtab")) ) > ENDIF > IF !EMPTY(lcFName) > lnATAFValue = nvl(EVAL('xtab.'+lcFName),0) > lcATAFValue = ltrim(STR(lnATAFValue)) > SELECT ATA_Report > GO BOTTOM > REPLACE (lcATAFName) WITH lcATAFValue > if type("lnATAFValue") = "N" > replace (lcATAFName) with lnATAFValue in "ATA_report1" > endif > ELSE > llEmpty = .T. > EXIT > ENDIF > lnFieldTot = lnFieldTot + 1 > IF lnFCnt = 15 > lnFCnt = 0 > ENDIF > SELECT xtab > IF lnFieldTot > FCOUNT() > llEnd = .T. > EXIT > ENDIF > ENDFOR > SELECT xtab > Skip > IF EOF() > IF!llEnd > GO TOP > ELSE > EXIT > ENDIF > ENDIF > ENDDO >select ata_report >browse >select ata_report1 >browseCetin