Показать сообщение отдельно
Старый 08.07.2004, 13:13   #8  
TravellerInTime is offline
TravellerInTime
Участник
Аватар для TravellerInTime
 
130 / 36 (2) +++
Регистрация: 14.07.2003
Адрес: Россия, Тула
Написал Job, который использует демобазу в OLAPе.
Соответственно в connectionString имя сервера замениь надо.

<div class='XPPtop'>X++</div><div class='XPP'>
#define.ADOMDCellset([color=:red]"ADOMD.Cellset"[/color])
#define.ADODBConnection([color=:red]"ADODB.Connection"[/color])
[color=:blue]static[/color] [color=:blue]void[/color] Job1(Args _args)
{
   COM connection = [color=:blue]new[/color] COM(#ADODBConnection);
   COM cellSet = [color=:blue]new[/color] COM(#ADOMDCellset);
   COM axes, axis0, axis1;
   COM positions0, positions1, position0, position1;
   COM members, member;
   COM cell;
   COMVariant a = [color=:blue]new[/color] ComVariant(COMVariantInOut::IN, COMVariantType::VT_SAFEARRAY);
   Array arr;
   [color=:blue]str[/color] connectionString = [color=:red]"Provider=msolap; Datasource=SQLTEST; Initial Catalog=FoodMart 2000"[/color];
   [color=:blue]str[/color] selectString =
[color=:red]"select\r\n"[/color]+
[color=:red]"    {[Measures].[Unit Sales]} on columns,\r\n"[/color]+
[color=:red]"    order(except([Promotion Media].[Media Type].members,{[Promotion Media].[Media Type].[No Media]}),[Measures].[Unit Sales],DESC) on rows\r\n"[/color]+
[color=:red]"from Sales"[/color];
   [color=:blue]int[/color] i0, i1;
   [color=:blue]str[/color] printStr;
  ;

   connection.Open(connectionString);
   cellSet.Open(selectString, connection);
   axes = cellSet.Axes();
   axis0 = axes.Item(0);
   axis1 = axes.Item(1);
   positions0 = axis0.Positions();
   positions1 = axis1.Positions();

   [color=:blue]for[/color] (i1 = 0; i1 < positions1.[color=:blue]Count[/color](); i1++)
   {
       position1 = positions1.Item(i1);
       members = position1.Members();
       member = members.Item(0);
       printStr = member.Caption();

       [color=:blue]for[/color] (i0 = 0; i0 < positions0.[color=:blue]Count[/color](); i0++)
       {
           arr = [color=:blue]new[/color] Array(Types::Integer);
           arr.value(1, i0);
           arr.value(2, i1);
           a.safeArray(arr, COMVariantType::VT_VARIANT);
           cell = cellSet.Item(a);
           printStr += [color=:red]" "[/color]+cell.FormattedValue();
       }
       [color=:blue]print[/color] printStr;
   }
   cellSet.Close();
   connection.Close();
   [color=:blue]pause[/color];
}</div>