Udostępnij za pośrednictwem


Migrowanie Z ADO MD do ADOMD.NET

ADOMD.Biblioteka netto jest podobna do biblioteki ActiveX danych obiektów wielowymiarowych (ADO MD), rozszerzeniem biblioteki obiektów danych ActiveX (ADO), która służy do uzyskiwania dostępu do wielowymiarowych danych opartych na modelu COM (Component Object Model) klient aplikacji.ADO MD zapewnia łatwy dostęp do danych wielowymiarowych niezarządzanych języków takich jak C++ i Microsoft języka Visual Basic.ADOMD.NETzapewnia łatwy dostęp do analizy (zarówno wielowymiarowych oraz wyszukiwanie danych) dane z zarządzanych języków, takich jak Microsoft C# i Microsoft języka Visual Basic.NET.Ponadto ADOMD.NET udostępnia model obiektowy rozszerzone metadane.

Migrowanie istniejących aplikacji klient z ADO MD do ADOMD.NET jest łatwe, ale istnieje kilka istotnych różnic dotyczących migracji:

  • Aby zapewnić łączność i danych dostęp do klient aplikacji

    ADO MD

    ADOMD.NET

    Wymaga odwołania do Adodb.dll i Adomd.dll.

    Wymaga jednego odniesienie do Microsoft.AnalysisServices.AdomdClient.dll.

    AdomdConnection Klasy zapewnia obsługę połączeń, oprócz dostęp do metadane.

  • Pobieranie metadane dla obiektów wielowymiarowych

    ADO MD

    ADOMD.NET

    Użyj Catalog klasy

    Użyj Cubes Właściwość AdomdConnection.

  • Aby uruchomić kwerendę i powrócić zestaw komórek obiekty

    ADO MD

    ADOMD.NET

    Użyj CellSet klasy

    Użyj AdomdCommand klasy

  • Aby uzyskać dostęp do metadane, który jest używany do wyświetlaniazestaw komórek

    ADO MD

    ADOMD.NET

    Użyj Position klasy

    Użyj Set i Tuple obiektów.

    Ostrzeżenie

    Position Klasy jest obsługiwana dla zgodności ze starszymi wersjami.

  • Aby pobrać model wyszukiwania metadane

    ADO MD

    ADOMD.NET

    Nie dostępnych klasy.

    Użyj jednego z wyszukiwanie danych kolekcji:

Aby podświetlić te różnice w poniższym przykładzie migracji porównuje istniejącej aplikacji ADO MD, aby równoważne ADOMD.NET aplikacji.

Spojrzenie na przykład migracji

Zarówno istniejące MD ADO i równoważne ADOMD.NET przykłady kodu zamieszczone w tej sekcji wykonuje ten sam zestaw akcji: utworzenie połączenia z systemem instrukcja Multidimensional Expressions (MDX) i pobieranie danych i metadane.Jednak te dwa zestawy kodu nie należy używać tych samych obiektów do wykonywania tych zadań.

Istniejące ADO MD kodu

The following code example, drawn from ADO MD 2.8 documentation, is written in Microsoft Visual Basic® 6.0 and uses ADO MD to demonstrate how to connect to and query a Microsoft SQL Server data source.W tym przykładzie ADO MD używa następujących obiektów:

  • Tworzy połączenie z Catalog obiektu.

  • Jest wykonywane przy użyciu instrukcja Multidimensional Expressions (MDX) Cellset obiektu.

  • Pobiera metadane i danych z Position obiekt pobierane z Cellset obiektu.

Private Sub cmdCellSettoDebugWindow_Click()
Dim cat As New ADOMD.Catalog
Dim cst As New ADOMD.Cellset
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim strServer As String
Dim strSource As String
Dim strColumnHeader As String
Dim strRowText As String

On Error GoTo Error_cmdCellSettoDebugWindow_Click
Screen.MousePointer = vbHourglass
'*-----------------------------------------------------------------------
'* Set server to local host.
'*-----------------------------------------------------------------------
    strServer = "LOCALHOST"

'*-----------------------------------------------------------------------
'* Set MDX query string source.
'*-----------------------------------------------------------------------
    strSource = strSource & "SELECT "
    strSource = strSource & "{[Measures].members} ON COLUMNS,"
    strSource = strSource & _
        "NON EMPTY [Store].[Store City].members ON ROWS"
    strSource = strSource & " FROM Sales"

'*-----------------------------------------------------------------------
'* Set active connection.
'*-----------------------------------------------------------------------
        cat.ActiveConnection = "Data Source=" & strServer & _
            ";Provider=msolap;"

'*-----------------------------------------------------------------------
'* Set cellset source to MDX query string.
'*-----------------------------------------------------------------------
        cst.Source = strSource

'*-----------------------------------------------------------------------
'* Set cellset active connection to current connection
'*-----------------------------------------------------------------------
    Set cst.ActiveConnection = cat.ActiveConnection

'*-----------------------------------------------------------------------
'* Open cellset.
'*-----------------------------------------------------------------------
    cst.Open

'*-----------------------------------------------------------------------
'* Allow space for row header text.
'*-----------------------------------------------------------------------
strColumnHeader = vbTab & vbTab & vbTab & vbTab & vbTab & vbTab

'*-----------------------------------------------------------------------
'* Loop through column headers.
'*-----------------------------------------------------------------------
       For i = 0 To cst.Axes(0).Positions.Count - 1
            strColumnHeader = strColumnHeader & _
                cst.Axes(0).Positions(i).Members(0).Caption & vbTab & _
                    vbTab & vbTab & vbTab
       Next
       Debug.Print vbTab & strColumnHeader & vbCrLf

'*-----------------------------------------------------------------------
'* Loop through row headers and provide data for each row.
'*-----------------------------------------------------------------------
        strRowText = ""
        For j = 0 To cst.Axes(1).Positions.Count - 1
            strRowText = strRowText & _
                cst.Axes(1).Positions(j).Members(0).Caption & vbTab & _
                    vbTab & vbTab & vbTab
            For k = 0 To cst.Axes(0).Positions.Count - 1
                strRowText = strRowText & cst(k, j).FormattedValue & _
                    vbTab & vbTab & vbTab & vbTab
            Next
            Debug.Print strRowText & vbCrLf
            strRowText = ""
        Next

    Screen.MousePointer = vbDefault
Exit Sub

Error_cmdCellSettoDebugWindow_Click:
   Beep
   Screen.MousePointer = vbDefault
   MsgBox "The following error has occurred:" & vbCrLf & _
      Err.Description, vbCritical, " Error!"
   Exit Sub
End Sub

Równoważne ADOMD.NET kodu

Poniższy przykład, napisane w języku Visual Basic.NET i przy użyciu ADOMD.NET, pokazano, jak wykonywać te same czynności, jak w poprzednim przykładzie Visual Basic 6.0.Główna różnica pomiędzy poniższy przykład i przykład ADO MD, przedstawiona jest obiekty, które są używane do wykonywania akcji.ADOMD.NET Przykładzie użyto następujących obiektów:

  • Tworzy połączenie z AdomdConnection obiektu.

  • Jest wykonywane przy użyciu instrukcja MDX AdomdCommand obiektu.

  • Pobiera metadane i danych z Set obiekt pobierane z Cellset obiektu.

Private Sub DisplayCellSetInOutputWindow()
    Dim conn As AdomdConnection
    Dim cmd As AdomdCommand
    Dim cst As CellSet
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim strServer As String = "LOCALHOST"
    Dim strSource As String = "SELECT [Measures].members ON COLUMNS, " & _
        "NON EMPTY [Store].[Store City].members ON ROWS FROM SALES"
    Dim strOutput As New System.IO.StringWriter

    '*-----------------------------------------------------------------------
    '* Open connection.
    '*-----------------------------------------------------------------------
    Try
        ' Create a new AdomdConnection object, providing the connection
        ' string.
        conn = New AdomdConnection("Data Source=" & strServer & _
        ";Provider=msolap;")
        ' Open the connection.
        conn.Open()
    Catch ex As Exception
        Throw New ApplicationException( _
            "An error occurred while connecting.")
    End Try

    Try
    '*-----------------------------------------------------------------------
    '* Open cellset.
    '*-----------------------------------------------------------------------
        ' Create a new AdomdCommand object, providing the MDX query string.
        cmd = New AdomdCommand(strSource, conn)
        ' Run the command and return a CellSet object.
        cst = cmd.ExecuteCellSet()

    '*-----------------------------------------------------------------------
    '* Concatenate output.
    '*-----------------------------------------------------------------------

    ' Include spacing to account for row headers.
    strOutput.Write(vbTab, 6)

    ' Iterate through the first axis of the CellSet object and
    ' retrieve column headers.
    For i = 0 To cst.Axes(0).Set.Tuples.Count - 1
        strOutput.Write(cst.Axes(0).Set.Tuples(i).Members(0).Caption)
        strOutput.Write(vbTab, 4)
    Next
    strOutput.WriteLine()

    ' Iterate through the second axis of the CellSet object and
    ' retrieve row headers and cell data.
    For j = 0 To cst.Axes(1).Set.Tuples.Count - 1
        ' Append the row header.
        strOutput.Write(cst.Axes(1).Set.Tuples(j).Members(0).Caption)
        strOutput.Write(vbTab, 4)

        ' Append the cell data for that row.
        For k = 0 To cst.Axes(0).Set.Tuples.Count - 1
            strOutput.Write(cst.Cells(k, j).FormattedValue)
            strOutput.Write(vbTab, 4)
        Next
        strOutput.WriteLine()
    Next

    ' Display the output.
    Debug.WriteLine(strOutput.ToString)

    '*-----------------------------------------------------------------------
    '* Release resources.
    '*-----------------------------------------------------------------------
        conn.Close()
    Catch ex As Exception
        ' Ignore or handle errors.
    Finally
        cst = Nothing
        cmd = Nothing
        conn = Nothing
    End Try
End Sub