EducationSoftwareStrategy.com
StrategyCommunity

Knowledge Base

Product

Community

Knowledge Base

TopicsBrowse ArticlesDeveloper Zone

Product

Download SoftwareProduct DocumentationSecurity Hub

Education

Tutorial VideosSolution GalleryEducation courses

Community

GuidelinesGrandmastersEvents
x_social-icon_white.svglinkedin_social-icon_white.svg
Strategy logoCommunity

© Strategy Inc. All Rights Reserved.

LegalTerms of UsePrivacy Policy
  1. Home
  2. Topics

VB.NET Sample: How to Execute a Prompted Report and Create a History List Message Using MicroStrategy Intelligence Server SDK 10.x


Rebecca Lam

Senior Customer Success Manager, Enterprise • MicroStrategy


The following is a VB.NET sample of KB12475: How to Execute a Prompted Report and Create a Cache and History List Message Using MicroStrategy Intelligence Server SDK 9.x and 10.x

Using the Intelligence Server SDK provided in Strategy 10.x, it is possible to programmatically execute a report, answer any prompts, and create/update a report history list message.
In this example, a report with an element prompt will be executed and create a history list message for the current user. 
 


        Dim MyDataSource As New DSSDataSource
        Dim MyProject As DSSDataSource
        Dim MyProjectList As DSSDataSourceEnumerator
        Dim MySession As IDSSSession
        Dim MySource As DSSObjectServer
        Dim oRepSource As IDSSReportSource2

        'Define Intelligence Server Connection Information
        MyDataSource.Type = EnumDSSDataSourceType.DssDataSourceTypeServer
        MyDataSource.Location = "INTELLIGENCE SERVER NAME OR IP"
        MyDataSource.Mode = EnumDSSConnectionMode.DssConnectionModeServerAccess
        MyDataSource.AuthMode = EnumDSSAuthModes.DssAuthStandard
        MyDataSource.login = "USERNAME"
        MyDataSource.Passwd = "PASSWORD"
        MyDataSource.Init()

        'Find the project 
        MyProjectList = MyDataSource.Enumerator
        MyProject = MyProjectList.ItemByProjectName("PROJECT NAME")
        MyProject.Init()

        'Create the session 
        MySession = MyProject.CreateSession
        MySource = MySession.Component(EnumDSSComponentRole.DssRoleObjectSource)
        oRepSource = MySession.Component(EnumDSSComponentRole.DssRoleReportSource)
        
        'Retrieve an existing Filter object created in either Developer or Web 10.x
        Dim strFilterID As String
        Dim oFilter As IDSSFilter
        strFilterID = "FILTER GUID HERE"
        oFilter = MySource.Source.FindObject(strFilterID, EnumDSSObjectType.DssTypeFilter)
        
        'Retrieve an existing Attribute object tied to the elements defined in the filter object
        Dim strAttrID As String
        Dim oattribute As IDSSAttribute5
        strAttrID = "ATTRIBUTE GUID HERE"
        oattribute = MySource.Source.FindObject(strAttrID, EnumDSSObjectType.DssTypeAttribute)
        
        'Filter the elemnts of the attribute based on the filter object
        Dim oElements As IDSSElements2
        Dim oElement As IDSSElement
        oElements = oattribute.GetFilteredElements(oFilter)
        
        'Retrieve an existing report object
        Dim reportDef As IDSSReportDefinition
        Dim oRepInst As IDSSReportInstance16
        Dim strReportID As String
        Dim oRes As IDSSResolution
        Dim oPrompt As IDSSPrompt
        Dim answerList As IDSSElements2

        'Retrieve the report definition, report instance, then the resolution 
        strReportID = "REPORT GUID HERE"
        reportDef = MySource.Source.FindObject(strReportID, EnumDSSObjectType.DssTypeReportDefinition)
        oRepInst = oRepSource.NewInstance(reportDef)
        oRes = oRepInst.Resolution
		
        'The resolution object contains the collection of prompts in the report instance. After creating the resolution object, it will still need to be populated, then after that, instantiate the IDSSPrompt object:
        'The following example assumes there is only 1 prompt. This prompt can have or not have default prompt answers.
        Call oRes.Resolve(oRepInst.Definition)
        oPrompt = oRes.Item(1)

        'Create the prompt answer list object and populate it with the elements from the filtered list of elements, oElements
        answerList = oPrompt.Answer
        
        For Each oElement In oElements
            answerList.Add(oElement)
        Next oElement

        oPrompt.Closed = True

        'Create a new report instance, passing in the resolution object and original report definition again
        Dim objReportInstance As IDSSReportInstance
        objReportInstance = oRepSource.NewInstance(reportDef, oRes)
		
        'Then execute the report using the new report instance (that contains the modified resolution object) and setting all the appropriate flags:
        oRepSource.Execute(objReportInstance, EnumDSSReportActions.DssActionExecuteAll, EnumDSSReportFlags.DssReportCreateInBoxMsg)

ADDITIONAL INFORMATION:
The Strategy SDK allows you to customize several Strategy products and extend and integrate the Strategy business intelligence functionality into other applications. However, before changing the way Strategy products look or behave, it is helpful to understand how the application is built. For more information regarding the Strategy products or the process of customizing Strategy products, please refer to Strategy Developer Zone (https://developer.microstrategy.com).
To access the Strategy Developer Zone, you must have access to the Strategy Knowledge Base, you must have purchased the Strategy SDK, and you must be current on your Strategy maintenance agreement. If you are a US-based business and believe that you satisfy all three of these conditions but you do not have access to the Strategy Developer Zone, please contact Strategy Technical Support at support@microstrategy.com or at (703) 848-8700. If you are an international business, please contact Strategy Technical Support at the appropriate email address or phone number found at https://www.microstrategy.com/us/services/support/contact.
CUSTOMIZATION WARNING:
This customization is provided as a convenience to Strategy users and is only directly applicable to the version stated. While this code may apply to other releases directly, Strategy Technical Support makes no guarantees that the code provided will apply to any future or previous builds. In the event of a code change in future builds, Strategy Technical Support makes no guarantee that an updated version of this particular customization will be provided. In the event of a code change in future builds, Strategy may not be able to provide additional code on this matter even though this customization is provided at this time for this specific build. For enhancements to this customization or to incorporate similar functionality into other versions, contact your Account Executive to inquire about Strategy Consulting assistance.


Comment

0 comments

Details

Knowledge Article

Published:

October 19, 2017

Last Updated:

October 19, 2017