Показать сообщение отдельно
Старый 17.03.2008, 12:55
Захаров вне форума Посмотреть профиль Отправить личное сообщение для Захаров Найти все сообщения от Захаров
  № 3  
Ответить с цитированием
Захаров

Регистрация: Oct 2007
Сообщений: 66
Код создания олапа программным способом
Код:
package My
{
	import mx.collections.ArrayCollection;
	import mx.collections.IList;
	import mx.controls.Alert;
	import mx.controls.OLAPDataGrid;
	import mx.olap.IOLAPCube;
	import mx.olap.IOLAPDimension;
	import mx.olap.IOLAPQuery;
	import mx.olap.IOLAPQueryAxis;
	import mx.olap.OLAPAttribute;
	import mx.olap.OLAPCube;
	import mx.olap.OLAPDimension;
	import mx.olap.OLAPHierarchy;
	import mx.olap.OLAPLevel;
	import mx.olap.OLAPMeasure;
	import mx.olap.OLAPQuery;
	import mx.olap.OLAPResult;
	import mx.olap.OLAPSet;
	import mx.rpc.AsyncResponder;
	import mx.rpc.AsyncToken;
        
	public class OlapDGCreator
	{
		 [Bindable]
        private var flatData:ArrayCollection = new ArrayCollection(
        [
        {otd:"Отдел 1",pos:"Программист",year:2007,quarter:"Кв1",zp:20000},
        {otd:"Отдел 1",pos:"Стажер",year:2007,quarter:"Кв1",zp:15000},
        {otd:"Отдел 2",pos:"Программист",year:2007,quarter:"Кв1",zp:25000},
        {otd:"Отдел 2",pos:"Стажер",year:2007,quarter:"Кв1",zp:23000},
        {otd:"Отдел 1",pos:"Программист",year:2007,quarter:"Кв2",zp:21000},
        {otd:"Отдел 1",pos:"Стажер",year:2007,quarter:"Кв2",zp:16000},
        {otd:"Отдел 2",pos:"Программист",year:2007,quarter:"Кв2",zp:27000},
        {otd:"Отдел 2",pos:"Стажер",year:2007,quarter:"Кв2",zp:24000},
                 ]);
              		         
        public var str:String = "";
        
        public var ODG:OLAPDataGrid = new OLAPDataGrid();
        public var MyCube:OLAPCube = new OLAPCube("otchet");
        public function OlapDGCreator()
        {
        	
       		MyCube.dataProvider=flatData;
        	
       		
       
        	var m:OLAPMeasure = new OLAPMeasure("ZP");
        	m.aggregator="SUM";
        	m.dataField="zp";
        	
        	
        	
        	var a:IList = new ArrayCollection();
        	a.addItem(m);
        	
        
        	
        	var dimDateTime:OLAPDimension = new OLAPDimension("DateTime","DateTime");
        	dimDateTime.cube=MyCube;
        	dimDateTime.name="DateTime";
        	var hierDataTime:OLAPHierarchy = new OLAPHierarchy("hierDataTime","displayHierDataTime");
        	var l1:OLAPLevel = new OLAPLevel("Year","Year")
        	var l2:OLAPLevel = new OLAPLevel("Quarter","Quarter")
        	
        	hierDataTime.levels.addItem(l1);
        	hierDataTime.levels.addItem(l2);
        	
        	var att1:OLAPAttribute = new OLAPAttribute("Year","Year")
        	att1.dataField="year";
			att1.name="Year";
			var att2:OLAPAttribute = new OLAPAttribute("Quarter","quarter")
        	att2.dataField="quarter";
        	att2.name="Quarter";
        	
        	dimDateTime.attributes.addItem(att1)
        	dimDateTime.attributes.addItem(att2)
        	dimDateTime.hierarchies.addItem(hierDataTime);
        	//-----------------------------///
        	var dimDivDim:OLAPDimension = new OLAPDimension("DivDim","DivDim");
        	dimDivDim.cube=MyCube;
        	dimDivDim.name="DivDim";
        	var hierDivDim:OLAPHierarchy = new OLAPHierarchy("hierDivDim","displayHierDivDim");
        	var dd_l1:OLAPLevel = new OLAPLevel("Otd","Otd")
        	var dd_l2:OLAPLevel = new OLAPLevel("Pos","Pos")
        	
        	hierDivDim.levels.addItem(dd_l1);
        	hierDivDim.levels.addItem(dd_l2);
        	
        	var dd_att1:OLAPAttribute = new OLAPAttribute("Otd","Otd")
        	dd_att1.dataField="otd";
			dd_att1.dimension=dimDivDim;
			var dd_att2:OLAPAttribute = new OLAPAttribute("Pos","Pos")
        	dd_att2.dataField="pos";
        	dd_att2.dimension=dimDivDim;
        	
        	dimDivDim.attributes.addItem(dd_att1);
        	dimDivDim.attributes.addItem(dd_att2);
        	dimDivDim.hierarchies.addItem(hierDivDim);
        	
        	
        	MyCube.dimensions.addItem(dimDateTime);
        	MyCube.dimensions.addItem(dimDivDim);
        	MyCube.measures =  a
        	MyCube.refresh();
        	
        	//MyCube.measures.addEventListener("www",test);
        	//MyCube.addEventListener(CubeEvent.CUBE_COMPLETE,runQuery)
        	
        	runQuery();
        	
        	//запустили выражение
        	
        	
        	
        	       
        }
         // Create the OLAP query.
        private function getQuery(cube:IOLAPCube):IOLAPQuery {
            // Create an instance of OLAPQuery to represent the query. 
            var query:OLAPQuery = new OLAPQuery;
            
            // Get the row axis from the query instance.
            var rowQueryAxis:IOLAPQueryAxis = query.getAxis(OLAPQuery.ROW_AXIS);
            // Create an OLAPSet instance to configure the axis.
            var otdSet:OLAPSet = new OLAPSet;
            // Add the Product to the row to aggregate data 
            // by the Product dimension.
            var tmp:IOLAPDimension = cube.findDimension("DivDim");
              var tmp2:OLAPDimension = cube.dimensions[0];
              otdSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[1]).attributes[0]).children);//zah
           // otdSet.addElements(cube.findDimension("DivDim").findAttribute("Otd").children);
            // Add the OLAPSet instance to the axis.
            var posSet:OLAPSet = new OLAPSet;
            // Add the Product to the row to aggregate data 
            // by the Product dimension.
             posSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[1]).attributes[1]).children);//zah
           // posSet.addElements(cube.findDimension("DivDim").findAttribute("Pos").children);
            // Add the OLAPSet instance to the axis.
            rowQueryAxis.addSet(otdSet.crossJoin(posSet));
            
            // Get the column axis from the query instance, and configure it
            // to aggregate the columns by the Quarter dimension. 
            var colQueryAxis:IOLAPQueryAxis = query.getAxis(OLAPQuery.COLUMN_AXIS);         
            
            var yearSet:OLAPSet= new OLAPSet;
           yearSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[0]).attributes[0]).children);//zah
			// yearSet.addElements(cube.findDimension("DateTime").findAttribute("Year").children);
            
            var quarterSet:OLAPSet= new OLAPSet;
            quarterSet.addElements(OLAPAttribute(OLAPDimension(cube.dimensions[0]).attributes[1]).children);//zah
            //quarterSet.addElements(cube.findDimension("DateTime").findAttribute("Quarter").children);
            
            colQueryAxis.addSet(yearSet.crossJoin(quarterSet));
           
            return query;       
        }

        // Event handler to execute the OLAP query 
        // after the cube completes initialization.
       // private function runQuery(event:CubeEvent):void {
           private function runQuery():void {
            // Get cube.
            //var cube:IOLAPCube = IOLAPCube(event.currentTarget);
            var cube:IOLAPCube = IOLAPCube(this.MyCube);
            // Create a query instance.
            var query:IOLAPQuery = getQuery(cube);
            // Execute the query.
            var token:AsyncToken = cube.execute(query);
            // Setup handlers for the query results.
            token.addResponder(new AsyncResponder(showResult, showFault));
            
        }

        // Handle a query fault.
        private function showFault(result:Object, token:Object):void {
            Alert.show("Error in query.");
        }

        // Handle a successful query by passing the query results to 
        // the OLAPDataGrid control..
        private function showResult(result:Object, token:Object):void {
            if (!result) {
                Alert.show("No results from query.");
                return;
            }
            
            ODG.dataProvider= result as OLAPResult;            
        }
        
	}
}
ГУРУ ПРОШУ ВАШЕГО УЧАСТИЯ!


Последний раз редактировалось Захаров; 17.03.2008 в 15:58.