⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmapis.cs

📁 < SQL Server2005程序设计>
💻 CS
📖 第 1 页 / 共 3 页
字号:
#region Using directives

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.AnalysisServices.AdomdClient;
using System.Xml;
using System.Xml.Xsl;
using System.IO;

#endregion

namespace Chapter19
{
    partial class ADOMDNET : Form
    {

#region Initialization
        private string ConnectionString;
        private AdomdConnection conn = new AdomdConnection();
        private CellSet cs;

        public ADOMDNET()
        {
            InitializeComponent();
        }
#endregion

#region Connection Config

        private void btnConnect_Click(object sender, EventArgs e)
        {
            
            // Prep DataLink/ADO classic objects
            MSDASC.DataLinks objDataSourceDlg = new MSDASC.DataLinks();
            ADODB.Connection adoConnection = new ADODB.Connection();
            adoConnection.ConnectionString = "Provider=MSOLAP;Integrated Security=SSPI;Data Source=localhost";
            object objTempConn = (object)adoConnection;

            // Show DataLink dialog
            if (objDataSourceDlg.PromptEdit(ref objTempConn))
            {
                //*******************************************************
                // Crack open and extract Data Source, Initial Catalog
                //*******************************************************
                string[] connstuff = adoConnection.ConnectionString.Split(new char[] { ';' });
                foreach (string s in connstuff)
                {
                    // Display server name and update ConnectionString
                    if (s.StartsWith("Data Source"))
                    {
                        ConnectionString += s + ";";
                        string[] serverstuff = s.Split(new char[] { '=' });
                        txtServer.Text = serverstuff[1];
                    }

                    // Display database name and update ConnectionString
                    if (s.StartsWith("Initial Catalog"))
                    {
                        ConnectionString += s + ";";
                        string[] dbstuff = s.Split(new char[] { '=' });
                        txtDatabase.Text = dbstuff[1];
                    }
                }
                //*******************************************************


                //*******************************************************
                // Populate cboCubes with all cubes in selected database
                //*******************************************************
                AdomdConnection conn = new AdomdConnection();
                conn.ConnectionString = ConnectionString;
                conn.Open();

                cboCubes.Items.Clear();
                foreach (CubeDef c in conn.Cubes)
                {
                    if (c.Type == CubeType.Cube)
                    {
                        cboCubes.Items.Add(c.Name);
                    }
                }
                conn.Close();
                if (cboCubes.Items.Count > 0)
                    cboCubes.SelectedIndex = 0;
                //*******************************************************

                // UI
                cboCubes.Enabled = true;
                cboQueryOptions.Enabled = true;
                btnMetaData.Enabled = true;
                rdoData.Enabled = true;
                grpOther.Enabled = true;
            }
        }

#endregion

#region Metadata via ADO MD.NET
        private void btnMetaData_Click(object sender, EventArgs e)
        {
            #region Initialization
            dgvResults.BringToFront();

            // Special constant needed to retrieve Action content from cube:
            const int MDACTION_COORDINATE_CUBE = 1;
            const int MDACTION_COORDINATE_DIMENSION = 2;
            const int MDACTION_COORDINATE_LEVEL = 3;
            const int MDACTION_COORDINATE_MEMBER = 4;
            const int MDACTION_COORDINATE_SET = 5;
            const int MDACTION_COORDINATE_CELL = 6;

            //Initialize connection
            conn.ConnectionString = ConnectionString;
            conn.Open();

            // Initialize Cube reference
            CubeDef cube;
            cube = conn.Cubes[cboCubes.Text];

            // Initialize general purpose DataTable
            DataTable dt;
            #endregion

            try
            {

                // Fetch selected metadata
                switch (cboQueryOptions.Text)
                {

                    #region Measure Groups
                    case "Measure Groups*":
                        {
                            DataSet ds = conn.GetSchemaDataSet(AdomdSchemaGuid.MeasureGroups, null);
                            dgvResults.DataSource = ds.Tables[0];
                            break;
                        }
                    #endregion

                    #region Measures
                    case "Measures":
                        {
                            dt = new DataTable();
                            dt.Columns.Add("Name");
                            dt.Columns.Add("Description");
                            dt.Columns.Add("Caption");
                            dt.Columns.Add("UniqueName");
                            dt.Columns.Add("Expression");
                            dt.Columns.Add("Units");
                            dt.Columns.Add("NumericPrecision");
                            dt.Columns.Add("NumericScale");
                            dt.Columns.Add("ParentCube");
                            foreach (Measure m in cube.Measures)
                            {
                                DataRow newrow = dt.Rows.Add();
                                newrow[0] = m.Name;
                                newrow[1] = m.Description;
                                newrow[2] = m.Caption;
                                newrow[3] = m.UniqueName;
                                newrow[4] = m.Expression;
                                newrow[5] = m.Units;
                                newrow[6] = m.NumericPrecision;
                                newrow[7] = m.NumericScale;
                                newrow[8] = m.ParentCube;
                            }
                            dgvResults.DataSource = dt;
                            break;
                        }
                    #endregion

                    #region Dimensions
                    case "Dimensions":
                        {
                            dt = new DataTable();
                            dt.Columns.Add("Name");
                            dt.Columns.Add("Description");
                            dt.Columns.Add("Caption");
                            dt.Columns.Add("UniqueName");
                            dt.Columns.Add("AttributeHierarchies");
                            dt.Columns.Add("Hierarchies");
                            dt.Columns.Add("WriteEnabled");
                            dt.Columns.Add("ParentCube");
                            foreach (Dimension d in cube.Dimensions)
                            {
                                DataRow newrow = dt.Rows.Add();
                                newrow[0] = d.Name;
                                newrow[1] = d.Description;
                                newrow[2] = d.Caption;
                                newrow[3] = d.UniqueName;
                                newrow[4] = d.AttributeHierarchies.Count;
                                newrow[5] = d.Hierarchies.Count;
                                newrow[6] = d.WriteEnabled;
                                newrow[7] = d.ParentCube;
                            }
                            dgvResults.DataSource = dt;
                            break;
                        }
                    #endregion

                    #region Hierarchies
                    case "Hierarchies":
                        {
                            Dimension dim = cube.Dimensions["Geography"];
                            dt = new DataTable();
                            dt.Columns.Add("Name");
                            dt.Columns.Add("Description");
                            dt.Columns.Add("Caption");
                            dt.Columns.Add("UniqueName");
                            dt.Columns.Add("HierarchyOrigin");
                            dt.Columns.Add("ParentDimension");
                            dt.Columns.Add("DisplayFolder");
                            dt.Columns.Add("Levels");
                            dt.Columns.Add("DefaultMember");
                            foreach (Hierarchy h in cube.Dimensions["Geography"].Hierarchies)
                            {
                                DataRow newrow = dt.Rows.Add();
                                newrow[0] = h.Name;
                                newrow[1] = h.Description;
                                newrow[2] = h.Caption;
                                newrow[3] = h.UniqueName;
                                newrow[4] = h.HierarchyOrigin;
                                newrow[5] = h.ParentDimension;
                                newrow[6] = h.DisplayFolder;
                                newrow[7] = h.Levels.Count.ToString();
                                newrow[8] = h.DefaultMember;
                            }
                            dgvResults.DataSource = dt;
                            break;
                        }
                    #endregion

                    #region Attributes Hierarchies
                    case "Attributes":
                        {
                            dt = new DataTable();
                            dt.Columns.Add("Name");
                            dt.Columns.Add("Description");
                            dt.Columns.Add("Caption");
                            dt.Columns.Add("UniqueName");
                            dt.Columns.Add("HierarchyOrigin");
                            dt.Columns.Add("ParentDimension");
                            dt.Columns.Add("DisplayFolder");
                            dt.Columns.Add("Levels");
                            dt.Columns.Add("DefaultMember");
                            foreach (Hierarchy h in cube.Dimensions["Geography"].AttributeHierarchies)
                            {
                                DataRow newrow = dt.Rows.Add();
                                newrow[0] = h.Name;
                                newrow[1] = h.Description;
                                newrow[2] = h.Caption;
                                newrow[3] = h.UniqueName;
                                newrow[4] = h.HierarchyOrigin;
                                newrow[5] = h.ParentDimension;
                                newrow[6] = h.DisplayFolder;
                                newrow[7] = h.Levels.Count.ToString();
                                newrow[8] = h.DefaultMember;
                            }
                            dgvResults.DataSource = dt;
                            break;
                        }
                    #endregion

                    #region Levels
                    case "Levels":
                        {
                            Hierarchy hier = cube.Dimensions["Geography"].Hierarchies["Geography"];
                            dt = new DataTable();
                            dt.Columns.Add("Name");
                            dt.Columns.Add("Description");
                            dt.Columns.Add("Caption");
                            dt.Columns.Add("UniqueName");
                            dt.Columns.Add("ParentHierarchy");
                            dt.Columns.Add("LevelNumber");
                            dt.Columns.Add("MemberCount");
                            dt.Columns.Add("LevelType");
                            foreach (Level l in hier.Levels)
                            {
                                DataRow newrow = dt.Rows.Add();
                                newrow[0] = l.Name;
                                newrow[1] = l.Description;
                                newrow[2] = l.Caption;
                                newrow[3] = l.UniqueName;
                                newrow[4] = l.ParentHierarchy.Name;
                                newrow[5] = l.LevelNumber.ToString();
                                newrow[6] = l.MemberCount.ToString();
                                newrow[7] = l.LevelType;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -