> # > ^ > | > | -- > | | | > |-- -- |A |__ > |A | | |--|A | > |--|A | |B |--| > |B |--| | |B | > | |B | | | | > -------|--------|--------------------> tv programme > Sport Entertainment > > >Legend >A - Male >B - Female >>
*** set the LOCALEID to English nlLocaleId=sys(3004) && Save local id =sys(3006,1033) && We will be sending instructions in English #Define xl3DColumnStacked 55 #Define xlColumnStacked 52 #Define TABULATE CHR(9) #Define CRLF CHR(13)+CHR(10) Dimension Groups[5] Groups[1] = 'Sports' Groups[2] = 'News' Groups[3] = 'Magazine' Groups[4] = 'Music' Groups[5] = 'Discovery' Rand(-1) Create cursor test (GroupName c(10), Gender c(6), Counted i) For ix = 1 to 300 Insert into test ; values ; (Groups[int(rand()*100)%5+1], iif(int(rand()*100)%2=1,'Male','Female'),int(rand()*100)) Endfor Select GroupName, Gender, sum(Counted) as Total ; from test ; group by 1,2 ; into cursor crsGraph nofilter Select GroupName, sum(Total) as SumTot ; from crsGraph ; group by 1 ; into cursor crsGrpSum nofilter Select max(SumTot) from crsGrpSum into array arrP100 && 100% Create cursor crsXTab (GroupName c(10),Female b(2), Male b(2)) Select distinct GroupName from crsGraph into array arrGroups For ix=1 to alen(arrGroups,1) Select * from crsGraph where GroupName = arrGroups[ix,1] into cursor crsTemp m.GroupName = arrGroups[ix,1] Scan Store Total to ('m.'+Gender) Endscan Insert into crsXTab from memvar * Insert % representation m.Multiplier = arrP100/(m.Female+m.Male) m.Female = m.Multiplier*m.Female m.Male = m.Multiplier*m.Male Insert into crsXTab from memvar Endfor Select crsXTab lcTempFile = sys(2015)+'.tmp' Copy to (lcTempFile) type CSV lcData = chrtran(FileToStr(lcTempFile),',',TABULATE) Erase (lcTempFile) Create cursor testgen (graphtest g) Append blank Append general graphtest class MSGraph.Chart.5 data lcData oForm = createobject("myForm") With oForm .height = 400 .width = 600 .addobject("myGraph","OleBoundControl") With .myGraph .height = oForm.height - 50 .width = oForm.width .left = 0 .top = 0 .ControlSource = "testgen.graphtest" Wait window nowait "Plotting..." .haslegend = .t. .ChartType=xlColumnStacked .object.application.plotby = 2 Wait clear .visible=.T. Endwith .Show Endwith **** Set the LocaleId to the previous value =sys(3006,val(nlLocaleId)) Read events Define class myForm as Form Procedure Destroy Clear events Endproc EnddefineCetin