You are on page 1of 74

Desktop Intelligence Developer Guide

BusinessObjects XI 3.1

Copyright

© 2008 Business Objects, an SAP company. All rights reserved. Business Objects owns the following U.S. patents, which may cover products that are offered and licensed by Business Objects: 5,295,243; 5,339,390; 5,555,403; 5,590,250; 5,619,632; 5,632,009; 5,857,205; 5,880,742; 5,883,635; 6,085,202; 6,108,698; 6,247,008; 6,289,352; 6,300,957; 6,377,259; 6,490,593; 6,578,027; 6,581,068; 6,628,312; 6,654,761; 6,768,986; 6,772,409; 6,831,668; 6,882,998; 6,892,189; 6,901,555; 7,089,238; 7,107,266; 7,139,766; 7,178,099; 7,181,435; 7,181,440; 7,194,465; 7,222,130; 7,299,419; 7,320,122 and 7,356,779. Business Objects and its logos, BusinessObjects, Business Objects Crystal Vision, Business Process On Demand, BusinessQuery, Cartesis, Crystal Analysis, Crystal Applications, Crystal Decisions, Crystal Enterprise, Crystal Insider, Crystal Reports, Crystal Vision, Desktop Intelligence, Inxight and its logos , LinguistX, Star Tree, Table Lens, ThingFinder, Timewall, Let There Be Light, Metify, NSite, Rapid Marts, RapidMarts, the Spectrum Design, Web Intelligence, Workmail and Xcelsius are trademarks or registered trademarks in the United States and/or other countries of Business Objects and/or affiliated companies. SAP is the trademark or registered trademark of SAP AG in Germany and in several other countries. All other names mentioned herein may be trademarks of their respective owners. Business Objects products in this release may contain redistributions of software licensed from third-party contributors. Some of these individual components may also be available under alternative licenses. A partial listing of third-party contributors that have requested or permitted acknowledgments, as well as required notices, can be found at: http://www.businessobjects.com/thirdparty 2008-09-11

Third-party Contributors

Contents
Chapter 1 Introduction 7 About this guide...........................................................................................8 Who should use this guide ....................................................................8 Business Objects information resources................................................8 Chapter 2 Getting started with VBA 9

Accessing the development environment..................................................10 Language summary...................................................................................10 Variables...............................................................................................11 Procedures...........................................................................................11 Event implementation...........................................................................11 Flow control .........................................................................................12 Arrays...................................................................................................13 With statement.....................................................................................14 Error handling.......................................................................................14 The VBA Object Browser.....................................................................15 Including external object libraries.........................................................15 Some useful VBA functions and subroutines............................................16 Chapter 3 VBA macros: migration overview 19

Migration of VBA macros to XI...................................................................20 VBA macros.........................................................................................21 VBA add-ins.........................................................................................21 Updating platform-related calls.............................................................21 Using the Import Wizard tool................................................................22 Server-side execution...........................................................................22

Desktop Intelligence Developer Guide

3

...43 Desktop Intelligence events...............38 Creating a macro..............41 Creating an add-in.............50 Command Bars............................ and methods..............................................................51 Controls.....46 Chapter 5 Customizing the user interface 49 User interface classes......32 Other limitations.......................................................................45 Implementing application events..........................................................................................................................................................26 OLAP data access with universes.....................................................38 The Visual Basic tool bar....................................................................45 Implementing an event................................................................................26 Application-level variables............................................29 Document events..................................33 Chapter 4 Programming with Desktop Intelligence 37 Macros and subroutines...............................................................................................................................................................54 4 Desktop Intelligence Developer Guide ...........................................28 BCA custom macro migration...............27 Use cases............................................................................................53 Displaying pop-up menus........................................................51 Adding a command bar................23 New interoperability in XI...................................................................................................................................................Contents API changes.............................................................................................. properties...................30 Event-related restrictions ...........................28 Scheduling by using DocAgentOption class.........................................................................................................................................................................40 Add-ins.............................................................................................................................................................................................44 Event triggers...................................................................................................42 Installing an add-in by using the interface......................................23 Deprecated APIs and their replacements............................................................................

....................................55 Adding actions to buttons...............................60 Data provider types ...........................................62 Loading and unloading a data provider...............................................................................................................................................................................................Contents Adding controls to a command bar.....................................................................................57 Chapter 6 Data providers 59 Working with existing data providers.....54 Adding faces to buttons: the Clipboard object............64 Appendix A Get More Help 67 Index 71 Desktop Intelligence Developer Guide 5 ...................56 Creating your own forms....

Contents 6 Desktop Intelligence Developer Guide .

Introduction 1 .

Business Objects information resources For more information and assistance. This appendix describes the Business Objects documentation. with links to online resources. and consulting services. Who should use this guide This guide is intended for developers who want to use the Desktop Intelligence SDK to develop applications. customer support. training.1 Introduction About this guide • About this guide on page 8 About this guide This guide describes how to develop applications by using the Desktop Intelligence Software Development Kit (SDK). see Appendix A: Get More Help. 8 Desktop Intelligence Developer Guide .

Getting started with VBA 2 .

For more information. Language summary This section provides an overview of the VBA language. Using VBA. see VBA macros: migration overview on page 19. Accessing the development environment Desktop Intelligence contains a Visual Basic editor. as well as perform queries and analysis on data in documents through universes and data providers. you can integrate and customize applications that are already available on the system desktop. Online help for VBA is also available from the Visual Basic editor. The Visual Basic editor is the standard Microsoft VBA editor. which is included in the Microsoft Office 2000 suite.2 Getting started with VBA Accessing the development environment You can use Microsoft Visual Basic for Applications (VBA) to create custom macros and add-ins in Desktop Intelligence. For information about Visual Basic and VBA. 10 Desktop Intelligence Developer Guide . It also discusses some of the key features of VBA language. see the Microsoft documentation. You can also access the Visual Basic editor from the Macros submenu in the Tools menu. you can use tools such as Object Browser and Project Explorer. you may encounter some limitations while using VBA on the Desktop Intelligence server. right-click the tool bar or menu bar. and select Visual Basic.The VBA is used by Microsoft Office products and several other Windows software products. which you can use to develop macros and add-ins. Comprehensive on-line help about the VBA development environment and language is available from the VBA Help menu. You can also press F1 in the VBA development environment to access VBA Help menu. Hence. This chapter also describes how to develop macros and add-ins by using VBA. You can access the Visual Basic editor from the Visual Basic tool bar. However. This chapter describes how VBA enables you to extend the capabilities of Desktop Intelligence. If the editor is not displayed. to control the Desktop Intelligence and Designer environments.

the code is executed when certain events take place in the application. Examples of events include a user opening a document and a user clicking a button. whereas subroutines do not return values. as follows: Dim Name As String Procedures The VBA supports two different type of procedures: functions and sub-routines.Getting started with VBA Language summary 2 Variables The VBA supports the following data types: • Boolean • Byte • Integer • Long • Single • Double • Currency • Date • Object • String • Variant • user-defined You can declare variables by using the Dim keyword. that is. Event implementation The VBA is event-driven. The execution of the code when an event occurs is called event implementation. The Universe Designer SDK does not have any events to implement. Functions can return values. This implies that you cannot write a code to respond to events in the Designer Desktop Intelligence Developer Guide 11 .

alters the execution flow Repeats an action the specified number of times. Flow control The following table discusses the most commonly used VBA flow control structures: Control Description If-Then-Else Tests a condition. you can use the Designer object model while implementing events of other applications. or until it becomes true Branches to one of several possible code segments. However. For more information on implementing events. see Desktop Intelligence events on page 44 and Creating your own forms on page 57. Repeats an action while a condition is true Repeats an action either when a condition is true.2 Getting started with VBA Language summary application. and based on the result of the test. based on the value of a variable or the outcome of a test. Repeats an action on each object in a collection or on each item in an array For-Next While-Wend Do-Loop Select-Case For-Each-Next 12 Desktop Intelligence Developer Guide .

z are integers that represent the size of a dimension. In VBA. . Option Base statement The Option Base statement enables you to set the lower bound for all arrays to either 1 or 0. ….. Const MAX_CUSTOMERS As Integer = 500 Dim customers(MAX_CUSTOMERS. MAX_CUSTOMERS) As String Array indexes By default.. z) As DataType where: n.Getting started with VBA Language summary 2 Arrays An array is a variable that contains multiple values. Example: Declaring a two dimensional array The following VBA code fragment declares an array with two dimensions: Note: The size of each dimension is determined by the constant MAX_CUSTOMERS. The VBA supports multi-dimensional arrays. You can change the array elements by using Option Base statement. m. you can declare an array with up to 60 dimensions. m. Declaring an array To declare an array in VBA. use the following syntax: Dim ArrayName(n. For example: Option Base 1 Array(1) 'reference the first element Desktop Intelligence Developer Guide 13 .. Each value is indexed and all the elements in the array belong to the same data type. the first element of an array is element 0 and the last is n.

If you don't use an On Error statement. With statement The With statement tool enables you to abbreviate object references.DeleteTrailingBlanks = TRUE .Item(1).ScopeOfAnalysis = boThreeLevelsDown End With Error handling You can use the On Error statement to handle errors generated during the execution of a code.ActiveDocument. any run-time error that occurs can prove to be critical. The first is element number 10 and the last is element number 20.Queries . That is. you must specify the bounds in the array declaration.DuplicateRows = TRUE . 14 Desktop Intelligence Developer Guide . For example: Dim RawData(10 To 20) As Variant RawData has 11 elements.DataProviders. an error message is displayed and the execution stops. Example: Using a With statement in an object reference The following code fragment sets the properties of an object by using the With statement: With Application.2 Getting started with VBA Language summary is the same as: Option Base 0 Array(0) 'reference the first element Array indexing that starts at a number other than 1 or 0 If you want the index of an array to start at a number other than 1 or 0.

from the VBA program..Getting started with VBA Language summary 2 Example: Handling errors with the On Error statement Sub Convert(. Including external object libraries To access the object models of other products. One of the most useful tools is the Object Browser. and move the code around. methods... select References…. and properties provided in the object model.Description Sub End You can ignore errors by using the following statement: On Error Resume Next Note: This statement can hinder debugging. such as Designer or Microsoft Outlook. After creating the reference. select Object Browser from the View menu. debug. Referring to an external object library from VBA To refer to an external object library from VBA. and events. you can use the classes. In the Tools menu. The VBA Object Browser The VBA development environment includes a number of tools. to enable you to run. methods. complete the following steps: 1. You can also use the Object Browser to browse the procedures and module-level variables in your own VBA projects. Desktop Intelligence Developer Guide 15 . create a reference to the appropriate object library.Number & "-" & Err. 'if an error occurs here go to ErrorDisplay Exit Sub ErrorDisplay: MsgBox Err. The Object Browser displays all the programmable objects that are installed and registered on the system along with their associated properties..) On Error Goto ErrorDisplay . To open the Object Browser.

2. Select the object library from the list. the name of the object library you referenced appears in the Object Library drop-down list in the VBA Object Browser. Some useful VBA functions and subroutines The following table discusses some useful VBA functions and subroutines: Name Description Abs Returns the absolute value of a number Returns the current MS-DOS path Returns a character if its ASCII code is given Returns the current system date Causes execution to break out of a Do loop Causes execution to break out of a For loop Causes execution to break out of a function CurDir Chr Date Exit Do Exit For Exit Function 16 Desktop Intelligence Developer Guide .2 Getting started with VBA Some useful VBA functions and subroutines If the reference is successful. and click OK.

Getting started with VBA Some useful VBA functions and subroutines 2 Name Description Exit Sub Causes execution to break out of a sub-routine Returns the integer portion of a number. after rounding down positive numbers and negative numbers Returns the integer portion of a number. after rounding down positive numbers and negative numbers Returns TRUE if an expression is an array Returns TRUE if an expression is a date Returns TRUE if no value is assigned to a variable Returns TRUE if an expression is an error value Returns TRUE if an expression evaluates to NULL Returns TRUE if an expression evaluates to a number Fix Int IsArray IsDate IsEmpty IsError IsNull IsNumeric Desktop Intelligence Developer Guide 17 .

or the number of bytes required to store a value Returns the current date and time Runs an executable program Returns the square root of a number Performs a string comparison Returns the current system time Returns the data type of a variable Returns the upper bound of an array LBound Len Now Shell Sqr StrComp Time TypeName Ubound 18 Desktop Intelligence Developer Guide .2 Getting started with VBA Some useful VBA functions and subroutines Name Description IsObject Returns TRUE if an expression represents an object Returns the lower bound of an array Returns the length of a string.

VBA macros: migration overview 3 .

1/6. XI R2 and XI 3. The following table discusses support for VBA macros in XI: VBA macros Client side Server side Yes Yes with restrictions VBA add-ins Yes No 20 Desktop Intelligence Developer Guide . Migration of VBA macros to XI A number of BusinessObjects customers have developed VBA macros or VBA add-ins for the BusinessObjects Desktop Intelligence product.0") are new versions of BusinessObjects XI. • • The XI provides a direct migration path from BusinessObjects 5.0 enable majority of classic BusinessObjects customers to move to the XI platform. Web Intelligence: XI provides a much-enhanced version of Web Intelligence. The VBA macros or add-ins developed for 5. 6.x are collectively referred to as XI. Most VBA macros developed for 5. Desktop Intelligence: The BusinessObjects full client (which is renamed as Desktop Intelligence) is part of XI.1/6. 6. Support depends on the nature of the code and the location of the code execution.1 (or Web Intelligence 2. report instances.x. The migration protects customers' investment in the BusinessObjects technology by delivering the following key features: Note: Unless specifically mentioned.7).0 (referred to as "XI 3.1/6.x work with Desktop Intelligence supported in XI. which enables a large number of customers to move their entire business intelligence (BI) solution to the web. some macros are not supported on the server side. such as Unicode support.3 VBA macros: migration overview Migration of VBA macros to XI BusinessObjects XI Release 2 (referred to as "XI R2") and BusinessObjects XI 3.1. This section provides information about the migration of VBA macros to XI.5. • A direct migration path and a set of migration tools for customers who have deployed BusinessObjects 5. or 6.x work in XI. However. and discussions. Both XI R2 and XI 3. It benefits from the enhancements in the new platform.0.

ProgIDs and other technical names used in the code remain unchanged.VBA macros: migration overview Migration of VBA macros to XI 3 VBA macros The VBA macros are embedded in .rep documents to XI in one of the following ways: • Corporate documents (that is. Updating platform-related calls The macros that work at the document level (for example. and reference to repository universes require code update. . macros that execute queries. or re-format a report) continue to work in XI. the SDK is called the Desktop Intelligence SDK.rea (report add-in) extension. after migration. document send/retrieve. on the BusinessObjects Enterprise server) in XI. Send to Inbox or BCA is no longer available: To send to Inbox or BCA. Local documents (that is. . VBA add-ins Each VBA add-in is a separate file with a .rep documents located in the source repository) can be migrated to the XI repository by using the Import Wizard tool. The VBA add-ins do not run on the server side (that is. However. platform-related macros must be updated to reflect the new underlying BusinessObjects Enterprise SDK.rep documents located on the desktop of the systems) can be migrated to XI by opening and saving these documents with Desktop Intelligence. you must now use the Enterprise SDK. However.rep documents in XI. • • Desktop Intelligence Developer Guide 21 . for compatibility with previous versions.rep documents. You can migrate . Following are the key changes in XI: • SDK name: In XI. Repository interaction: Login. • In both cases. VBA macros remain embedded in . filter a report.

Some customers store VBA add-ins in the 5.The VBA add-ins cannot be executed on the server. Hence. On the server. the V5/V6 BOManager component is replaced by the RAS21 component. VBA macros must be checked and validated manually. Server-side execution The following is a brief description of the changes in the XI server-side execution: • Architecture . For example. Hence.3 VBA macros: migration overview Migration of VBA macros to XI Related Topics • Scheduling by using DocAgentOption class on page 28 Using the Import Wizard tool Import Wizard is a migration tool that enables you to move content from 5. This explains a number of restrictions on server side.CreateObject will fail using Desktop Intelligence report engine as it is not a COM automation server. • • • 22 Desktop Intelligence Developer Guide .rea files) are migrated by using the Import Wizard.rep documents and whether the VBA macros must be updated or not.On the XI platform. the Import Wizard does not check VBA code contained in .Application") . RAS21 is a mono-document component.x repository.x to an XI repository. the VBA add-ins (. However. However.1/6. these add-ins are copied to the XI repository.1/6. Like agnostic documents. not in VB. after migration. While BOManager was a multi-document component. see BCA custom macro migration on page 29. the Desktop Intelligence SDK runs only in VBA. BCA custom macros . you can install the Desktop Intelligence client component on the server and move the code to a VB program.The BOE scheduler does not support custom VBA macros. For more information. a document that includes a Web Connect data provider cannot be refreshed (DPVBAInterface code must be in the document itself to be executed). VBA add-ins . CreateObject ("BusinessObjects.

Password As String. ThreeTier As Boolean. This section discusses changes in the APIs. Hence.LogonDialog ()As Boolean Desktop Intelligence Developer Guide 23 . Deprecated APIs and their replacements The following tables discuss the APIs that are deprecated and the APIs that are introduced as replacements: Login 6. they must be replaced. [RepositoryName As Function String]) As Boolean Application. [Offline As Boolean].key file) Function Application.LogonWithToken (token CMS name supersedes repository As String) As Boolean name (.While ActiveDocument and ActiveReport still work on the client side.VBA macros: migration overview API changes 3 • Replace ActiveDocument with ThisDocument .x API.Removed Replacement in XI Function Application. Boolean [Pass As String].LoginAs ([User As String]. API changes Some APIs have been removed while others have been updated (with a new operability defined in XI). CMS As String. Offline As Boolean) As Application. Function Mode As String. Logon (User As String. they no longer work on the server side.

BoExchangeMode Enum BODocumentLocation = boEnterpriseFolder 24 Desktop Intelligence Developer Guide .SaveToEnterpriseDialog() Note: Send to inbox and scheduling are not available in Destkop Intelligence SDK.OpenFromEnterpriseDialog() As Document Retrieve from inbox and from sc are not available in Destkop Intelligence SDK. Folder.BoExchangeMode Function Documents. Application. [ExchangeDomain As String]) HtmlLayout obsolete with dhtml viewer Sub Document.3 VBA macros: migration overview API changes Document exchange 6. As String) As Document Function Sub Documents.Removed Replacement in XI Sub Document.Send([User As String]. [CategoryList As String]. Overwrite As Boolean) Sub Document.OpenFromEnterpris(Name As String. [DestDir As String]) Documents. [ExchangeMode As BoExchangeMode]. [HtmlLayout As BoHTMLLayout].Receive([Name As String]. You must use the BOESDK destination plug-in. [StoreGeneratedHTML As Boolean]. Application.x API. CategoryList As String. You must use the BOESDK destination plug-in.SaveToEnterprise(Folder As string.

x API .x API.AddQuery Function AddQueryTechnique(UniTechnique(UniverseName As String.x API .Removed Replacement in XI Function Sub Documents. [DestDir As String]) log(DocumentOrigin As BODocumentOrigin) As Document Application.BoExchangeModeDistinct method replace echange mode AppliNo replacement in XI cation.VBA macros: migration overview API changes 3 6.Receive([Name As Documents.ExchangeDomain Folders supersede domains Scheduling 6.OpenFromEnterpriseDiaString]. verseName As String. EnterpriseFold[UniverseDomainName]) As DataProerName As String) vide Desktop Intelligence Developer Guide 25 .Removed Replacement in XI Class DocAgentOption You must use the BI PLATFORM SDK while migrating Domains replaced by enterprise folders 6.Removed Replacement in XI Function DataProviders.

Hence. you can build universes on top of MS Analysis Services.3 VBA macros: migration overview API changes 6.x API . Note: Desktop Intelligence documents support only SAP BW universes.Removed Replacement in XI Property Universes.CUID (Read-only) • • Document.DomainName No replacement in XI New interoperability in XI The following objects are subject to new interoperability in XI: • Universe.x API New interoperability API in XI Class SecurtyPrompts No replacement in XI 26 Desktop Intelligence Developer Guide . Essbase.Item(Index As Variant. [RepositoryName As String]) No replacement in XI As Universe ®) Universe.CUID (Read-only) Application.LogonWithToken() OLAP data access with universes In XI. 6. the OLAP data provider is removed from Desktop Intelligence and the SecurityPrompts class is obsolete. and SAP BW cubes.

sDBName As String.5 variables available in XI BOUSER BUSER_UPPER Desktop Intelligence Developer Guide 27 . sDBPasswordVarName As String. sDBPassword As String) Function Document.x API New interoperability API in XI Sub Application.VBA macros: migration overview API changes 3 6. No replacement in XI sUserPassword As String. sUserPasswordVarName As String.Variables have changed.SetSecuri tyPrompt(sUserName As String.GetSecuri tyPrompts() As Security Prompts No replacement in XI Application-level variables The variables available through collection Application. The following table summarizes the changes: Availability of variables Variable name BOLANGUAGE BOSECURITYDOMAIN 6.

3 VBA macros: migration overview Use cases Availability of variables Variable name COMPUTERNAME CommonProgramFiles HOMEDRIVE HOMEPATH ProgramFiles 6. because scheduling is no longer supported in Desktop Intelligence SDK.5. Use cases This section briefly describes the use cases of Desktop Intelligence SDK. 28 Desktop Intelligence Developer Guide .5 variables not available in XI SystemDrive SystemRoot USERDNSDOMAIN USERDOMAIN USERNAME USERPROFILE New variable in XI DOCNAME Windows system variables such as TEMP and PROCESSOR_ARCHITECTURE are available in both XI and 6. Scheduling by using DocAgentOption class The DocAgentOption calls must be replaced by Enterprise SDK scheduling API.

How it was done in 6.Type=4 (Schedule is monthly.RightNow = 1 Schedule the document IStore.LogonTokenMgr.SchedulingInfo FCScheduleInfo.Documents( " DocumentToScedule " ). Login BusinessObjects Full Client Application.CreateLo gonEx) Dim strCUID As String Call to BusinessObjects FC SDK to get document's CUID strCUID = Application.Schedule Result BCA custom macro migration A use case for BCA Custom Macro is the Automatic distribution through email of BusinessObjects documents in PDF format.CUID Retrieve the InfoStore object Dim IStore As InfoStore Set IStore = EntSession("IStore") Retrieve the BI PLATFORM SDK InfoObject that corresponds to the document to be scheduled Set Result=IStore.VBA macros: migration overview Use cases 3 In the following use case for Application.IntervalMonths = 2 FCScheduleInfo.Query("SELECT SCHEDULEINFO FROM CI_INFOOBJECTS _ WHERE SI_CUID = ' "+strCUID + "'""") Dim FCDocumentObject As InfoObject Retrieve the first document Set FCDocumentObject =Result. Desktop Intelligence SDK and Enterprise SDK interoperate.LogonWithToken(EntSession.5: Desktop Intelligence Developer Guide 29 .) FCScheduleInfo.Item(1) Dim FCScheduleInfo As SchedulingInfo Use the scheduling object to set the scheduling options Set FCScheduleInfo = FCDocumentObject.CUID.LogonWithToken and Document.

see Scheduling by using DocAgentOption class on page 28. Use InfoView or BusinessObjects Enterprise SDK to schedule the VB program object. 2. The publisher. save them in PDFformat. properties.5 to XI: • Option 1: 1.rep document was scheduled through BCA.rep document contained the Sub ENotify() VBA macro to open documents. For more information. • Option 2: 1. and methods A publisher. How to migrate it to XI: The following are the two options to migrate from 6. Document events. and methods The following tables discuss the document events. Move the code from VBA to a VB Program. and send notification emails. Call VBA ENotify () in document event handler: Sub Document_AfterRefresh() 2. and methods used in Desktop Intelligence client and their support on server side: Doc Event Open BeforeRefresh AfterRefresh BeforeClose InfoView OK OK OK Doesn't work Desktop Intelligence OK OK OK OK 30 Desktop Intelligence Developer Guide . 3. Use InfoView or BusinessObjects Enterprise SDK to schedule publisher.3 VBA macros: migration overview Document events. properties. see Scheduling by using DocAgentOption class on page 28. properties. Install Desktop Intelligence on the same machine as the BusinessObjects XI Server. action specified the execution of VBA code embedded in the document. For more information.rep refresh.

properties.Save ThisDocument.SaveAs InfoView Doesn't work Doesn't work Desktop Intelligence OK OK OK ThisDocument.VBA macros: migration overview Document events. and methods 3 Doc Event Activate DeActivate Beforesave InfoView Not supported by procFC Not supported by procFC Doesn't work (Bug) Desktop Intelligence OK OK OK Property ThisDocument InfoView OK Desktop Intelligence OK ActiveDocument Doesn't work (normal because there is no Activate OK in ProcFC) Doesn't work (there is no OK Activate in procFC) ActiveReport Method ThisDocument.SaveToEn Doesn't work terprise ThisDocument.Expor tAsXML OK OK OK OK Desktop Intelligence Developer Guide 31 .Expor tAsPDF ThisDocument.

Hence. However. next time the same document is opened by the same user or a different user with similar rights. and methods Event-related restrictions Desktop Intelligence generates the following events: • OpenEvent • BeforeRefresh • AfterRefresh • BeforeClose However. these events are generated inconsistently. their functionality is limited. Note: If the document goes to Cache. this event is generated when the document is opened for the first time (from the browser). 32 Desktop Intelligence Developer Guide . • • BeforeRefresh AfterRefresh These events are generated all the time in Report Server and Job Server. this event is not generated. this child process is shared among the different user sessions. properties. Report Server spawns a new child process to handle the document. this event is not generated. Based on user rights and other security information. The following table discusses the events generated by Desktop Intelligence: Event Description • OpenEvent In Report Server.3 VBA macros: migration overview Document events.

VBA macros: migration overview Document events. the processing server does not trigger any event. Hence. • Architectural limitations in RAS21: • The documents are stateless. Hence. that is. For example. • The AfterRefresh event has the following limitation: Changes made by the user (on the document) may not work all the time. and methods 3 Event Description • BeforeClose This event is generated inconsistently in the Report Server. Desktop Intelligence Developer Guide 33 . this event is generated when the document closes (in the child process and not in the viewer). it may not be set to the value. properties. because of the RE SDK protocols. Other limitations The following are the limitations of Desktop Intelligence: • When a Desktop Intelligence document is in Cache. It is the responsibility of the plug-in to maintain the state (of the document it is handling). Hence. They forward the requests to the plug-in. some of the APIs related to OpenDocument may not work on the server side. Testing limitations This section describes how to test the limitations of Desktop Intelligence. it is designed to handle a single document at a time. if you set a prompt in the background. because the child processes are shared. • The Desktop Intelligence server plug-in is mono-document. no event is generated while a document is being opened or closed. • The Desktop Intelligence Server is more suitable for a single document rather than multiple documents. The document closes when the child process expires.

3

VBA macros: migration overview Document events, properties, and methods

State of the document
The following is the list of SDK APIs that change the state of the document. The Viewer/RAS 21 does not track these changes. • • Open Document - Fails on both BeforeRefresh and AfterRefresh events. Set Prompt - Fails on AfterRefresh event and partially passes on BeforeRefresh. For example, pass the value through SDK on both BeforeRefresh and AfterRefresh events. Consider, Country = US. 1. Click Refresh. 2. Select a value from LOV when prompted. 3. Set a different value (for example, Country = France) using SDK. 4. Run the report. The data relative to US is displayed even if you manually select France. Workaround for setting prompts: Use Application.Variables() instead of Document.Variable(). It is added to the list of Application variables. Regression Risk: If another document with the same prompt name is refreshed in the same process, it uses the previously set value and the prompt does not appear. • • • Refresh Data Provider - Fails on both BeforeRefresh and AfterRefresh events. Change Universe of a Data Provider - Fails on both BeforeRefresh and AfterRefresh events. Close Document - Fails on both BeforeRefresh and AfterRefresh events.

RE SDK protocol
When you perform any of the operations discussed in this section, the report in the viewer and the actual report in the server do not match. The following operations impact the RE SDK protocol: • Change the value of the prompt before/after refresh - Fails on AfterRefresh and partially passes on BeforeRefresh. For example, pass the value through SDK on BeforeRefresh event for the prompt. Consider, Country = US.

34

Desktop Intelligence Developer Guide

VBA macros: migration overview Document events, properties, and methods

3

1. 2. 3. 4.

Click Refresh. Select a value from LOV when prompted. Set a different value (for example, Country = France) using SDK. Run the report. The data relative to US is displayed even if you manually select France.

Any operation that changes the report map (use different prompt) Operations on the viewer, such as trying to open a report map entry that does not exist, give inconsistent results, or may fail.

Note:

The following functions may not work on both BeforeRefresh and AfterRefresh events: • Opening a new document • Performing operations such as refresh, edit, close, and so on, in a new document • Creating a new application from an existing application The Desktop Intelligence server does not support opening multiple documents in a process. Hence, these operations are not implemented.

Desktop Intelligence Developer Guide

35

3

VBA macros: migration overview Document events, properties, and methods

36

Desktop Intelligence Developer Guide

Programming with Desktop Intelligence 4 .

complete the following steps: 1.4 Programming with Desktop Intelligence Macros and subroutines This chapter describes how to program with Desktop Intelligence. From the Tools menu. This chapter discusses the following topics: • • • • Macros and subroutines Add-ins Desktop Intelligence events Implementing application events Macros and subroutines A macro is a series of commands and functions that automate tasks you need to perform regularly. On the submenu. just as you can send a regular Desktop Intelligence document. select Macros. 2. The "Macros" dialog box appears. Creating a macro To create a macro. select Macro. You can send a document containing a macro to other users. A macro is saved within a document and is enabled each time you open the document. as shown in the following figure: 38 Desktop Intelligence Developer Guide . You can create macros in Desktop Intelligence by using the integrated VBA environment.

3. as shown in the following figure: 4. When you finish writing and compiling the macro successfully. and click Create. or a combination of both is displayed. Begin writing the macro. and a module containing a skeleton sub-routine for the macro is created. the macros contained in the open document. select Close and Return to Desktop Intelligence from the File menu.Programming with Desktop Intelligence Macros and subroutines 4 In the "Macros" dialog box. the names of add-ins. Enter a name for the macro. The VBA environment is opened. You can now run Desktop Intelligence Developer Guide 39 .

you can associate up to five buttons with a macro. you can also associate the macro with a button on the tool bar. complete the following steps: 1. To associate a macro with a button. In the "Options" dialog box. Run Associated Macro . click the Macros tab.Click Visual Basic Editor to open the VBA environment for editing a procedure or a macro. see Customizing the user interface on page 49. as shown in the following figure: 40 Desktop Intelligence Developer Guide . For more information. If you want.Click Run Macro to browse and run a macro. 2. Adding macros to the Visual Basic tool bar On the Visual Basic tool bar. You can also select Toolbars from the View menu.4 Programming with Desktop Intelligence Macros and subroutines the macro from the "Macros" dialog box. as shown in the following figure: The Visual Basic tool bar contains the following buttons: • • • Run Macro . The Visual Basic tool bar You can hide or show the Visual Basic tool bar in Desktop Intelligence by right-clicking another tool bar or the menu bar.Click Run Associated Macro to run a macro associated with this button. The Macros panel is displayed. click Options. In the Tools menu. Visual Basic Editor . and selecting Visual Basic.

Type the name of the macro in the text box to the right. you can click Browse besides the text box to select a macro. Each add-in is saved with a . You can run the macro by clicking the respective button on the Visual Basic tool bar. 5.macro. it no longer appears grayed on the tool bar. The macro details are now hidden. Click the check box besides the number of the button with which you want to associate the macro.rea extension.Programming with Desktop Intelligence Add-ins 4 3. Click OK. Enter a tool tip for the macro (optional). Add-ins Add-ins are programs that provide optional commands and features to Desktop Intelligence. the edit box displays AddIn. When a macro is selected.macro or Document.rep!module. 6.rea!module. Alternatively. Desktop Intelligence Developer Guide 41 . If a button has an associated macro. 4.

Create a new document.. 4. select Save As. select Close and Return to Desktop Intelligence. complete the following steps: 1. In the File menu. 42 Desktop Intelligence Developer Guide . the add-ins are not supported when a Desktop Intelligence document is used on the server to perform any of the following tasks: • refreshing • scheduling • publishing Creating an add-in You can create add-ins in Desktop Intelligence. To conserve memory. it becomes available each time you launch Desktop Intelligence. select Desktop Intelligence Addins (*.4 Programming with Desktop Intelligence Add-ins Before you can use an add-in. 3. Open the VBA editor. and retrieve and use add-ins that others have created. an add-in functions just like any other feature of the Desktop Intelligence application.. In the File menu. Once you install an add-in. 2. Note: Starting with XI. add-ins are not associated with a single document—once installed.rea). 5. and distribute them among other users or save them to BusinessObjects Enterprise. Unlike macros. the add-in program remains on the computer so that you can easily install it again. However. Uninstalling an add-in removes its features and commands from Desktop Intelligence. you must load it on your computer and then install it in Desktop Intelligence. Write and compile the add-in. You can now distribute your add-in among other users. 6. To create an add-in. In the Save as type list box.. uninstall add-ins you do not use often. You can distribute add-ins you have created to other users.

you must use Save As rather than Save to update the saved add-in. If you make further changes. For more information. Click the check box of the add-in you want to install. click Browse to search. as shown in the following figure: 3. Click OK. rather than using multiple . a copy of the document is saved. Save the add-in on the computer. use one large .Programming with Desktop Intelligence Add-ins 4 When you save the document as an add-in. The "Add-Ins" dialog box opens. 4.rea files. see Customizing the user interface on page 49. You can run an installed add-in from the Macros dialog box. you must save it on the computer and then install it in Desktop Intelligence. If it is not displayed in the "Add-Ins" dialog box. Desktop Intelligence Developer Guide 43 . Installing an add-in by using the interface To install an add-in. select Add-Ins. In the Tools menu. Tip: To optimize the performance of the system. or you can associate it with a button on the Visual Basic tool bar. complete the following steps: 1.rea file containing many subroutines. 2. To install an add-in by using the interface.

4 Programming with Desktop Intelligence Desktop Intelligence events Desktop Intelligence events An event is a change in the state of Desktop Intelligence. belong to the Document class and are called document events.rep and *. you can program Desktop Intelligence to display a dialog box whenever a user opens a document. Programming a response to an event is called implementing the event. In Desktop Intelligence. For example. for which you can program a response. or only when it happens to a particular document. those that apply to specific documents. you can implement events concerning Desktop Intelligence documents (*. General document events. those that apply to any document. you can implement an event for any document.rea). belong to the Application class and are called application events. That is. Specific document events. These events are made available in general and specific senses. The following table lists the application events and document events that you can implement in Desktop Intelligence: Application events Document events DocumentActivate DocumentAfterRefresh DocumentBeforeClose DocumentBeforeRefresh DocumentBeforeSave DocumentDeactivate Activate AfterRefresh BeforeClose BeforeRefresh BeforeSave Deactivate 44 Desktop Intelligence Developer Guide .

the order of events is Doc1_Deactivate followed by Doc2_Activate. the Open event occurs followed by Activate. Triggering the events on the server side by using Desktop Intelligence document has certain limitations. Implementing an event Each event that you can implement appears in the VBA procedure list for its corresponding object. If the focus is moved from Doc1 to Doc2. Notes on the order in which the events occur Events in Desktop Intelligence occur in the following order: • • • • Document events are triggered before Application events. For example. When a document is opened. Desktop Intelligence Developer Guide 45 . a BeforeRefresh event (application and document) is triggered when the user clicks the Refresh button in the Desktop Intelligence user interface. BeforeClose occurs before BeforeSave.Programming with Desktop Intelligence Desktop Intelligence events 4 Application events Document events DocumentOpen NewDocument Open Event triggers Events can be triggered by user actions or by use of methods in the Desktop Intelligence SDK. or when the user calls the Document.Refresh method.

For more information.4 Programming with Desktop Intelligence Implementing application events To implement an event. so cancel the refresh Cancel = True Else 'user didn't cancel. vbOK Cancel) If Response = vbCancel Then 'user chose cancel. 46 Desktop Intelligence Developer Guide . so continue with refresh Cancel = False End If End Sub Implementing application events You cannot implement application events directly. To access the events of the Application object. This process is identical to implementing form events in the user interface. you need to create a reference to the object and implement the events of the reference. Example: Implementation of the DocumentBeforeRefresh event The following code may be useful for a document that takes a long time to refresh: Private Sub Document_BeforeRefresh(Cancel As Boolean) 'user's response to the message Dim Response As Variant Response = MsgBox("Are you sure you want to refresh?". insert the code that you want to execute in the procedure corresponding to the event when the event occurs. see Creating your own forms on page 57.

The subroutine must execute before the implementation of the application events is triggered. In a subroutine. Implement the events of the reference to the Application object. In a module. Desktop Intelligence Developer Guide 47 . include a property of type "Application". Create a class module in VBA. The following diagramatic representation illustrates this sequence: The events for the application reference property (boapp) appear in the procedure list of the application reference class (AppRefClass). set the variable's Application property to the Application object. create an object of the type you created in step 1. The events for the application reference property appear in the procedure drop-down list in the code window of the class module you created in step 1. complete the following steps: 1. In the definition of the class you created. 5. 4.Programming with Desktop Intelligence Implementing application events 4 To create a reference to the Application object. Declare the property as "Public" and "WithEvents". 3. The property (reference) you created appears in the object drop-down list in the code window of the class. 2.

boapp = Application . boapp. the events of the Application object can be implemented by using AppRef. In a VBA class module called AppRefClass. for example. see the Visual Basic documentation.. you can implement application events. as follows: Public WithEvents boapp As Application The Public part of the declaration makes the property globally available. In another module. set AppRef.boapp. as follows: Sub Initialize() Set AppRef. as follows: Dim AppRef As New AppRefClass Then. End Sub Now..boapp. create an instance of AppRefClass called. for example. in a sub-routine. The WithEvents part of the declaration enables you to access the events defined for the Application class. For more information on the Public and WithEvents keywords. AppRef. for example. 48 Desktop Intelligence Developer Guide . declare an Application property called. Once you have established this reference.4 Programming with Desktop Intelligence Implementing application events Example: Accessing events of the Application object The following code fragments show the VBA statements you need to establish a reference to the Application object.

Customizing the user interface 5 .

5 Customizing the user interface User interface classes This chapter describes how to customize the user interface by using the Desktop Intelligence SDK. so that they appear as part of the normal interface. With the Desktop Intelligence SDK. you can also access elements of the Desktop Intelligence user interface and extend the interface to accommodate the requirements of your program. Using this part of the object model you can: • • • • • access the properties of the existing Desktop Intelligence interface specify the menus Desktop Intelligence must display create user-initiated add-ins and macros add buttons to existing tool bars create your own tool bars and pop-up menus 50 Desktop Intelligence Developer Guide . you can include a userinteraction element to add-ins and macros. you can integrate the user interface elements of your add-ins and macros with the Desktop Intelligence interface. and pop-ups in the Desktop Intelligence interface. Using the Desktop Intelligence SDK. tool bars. The CmdBars collection is the access point for all menus. Each Desktop Intelligence Application object includes a collection called CmdBars. This chapter discusses the following topics: • • • • User interface classes Adding a command bar Adding controls to a command bar Creating forms User interface classes Some programs require input from a user or require the user to initiate a process. Using this collection.

a menu bar. as shown following figure: Desktop Intelligence Developer Guide 51 . or a pop-up menu. For information about adding tool bars and pop-up menus to the Desktop Intelligence user interface. see Adding a command bar on page 53. Controls Following are the types of controls: pop-up menus and buttons.Customizing the user interface User interface classes 5 Command Bars A command bar can be a tool bar. Pop-up menus present the list of buttons that can be used to perform actions. Command bars include controls that can be either a pop-up menus or buttons.

you need to use this collection for nesting controls. as shown in the following figure: 52 Desktop Intelligence Developer Guide . Nested controls Pop-up controls can contain other controls. Both support properties and methods of CmdBarControl. CmdBarButton and CmdBarPopup are special cases of CmdBarControl. if you know what type of control you are accessing. CmdBarControl is a generic class that represents a control. The items in the CmdBarControls collection are of the type CmdBarControl. However.5 Customizing the user interface User interface classes The CmdBarControls collection The CmdBarControls collection contains all the controls for a command bar. Normally. you can use the specialized properties and methods.

Desktop Intelligence Developer Guide 53 . Adding a command bar You can add tool bars and pop-up menus to the Desktop Intelligence user interface.Controls. The pop-up controls have their own collection of controls that you can access by using CmdBarPopup. see Adding controls to a command bar on page 54. they act as command bars.Customizing the user interface Adding a command bar 5 When pop-up controls contain other controls. For information on adding controls to the existing command bars.

Example: Adding a tool bar Sub AddCommandBar() Dim toolbar As CmdBar Set toolbar = Application. 54 Desktop Intelligence Developer Guide .Add • • To add a tool bar. for example. set the type to a position. you must add controls that enable users to access the functions you provide. Use CmdBarControls. boBarTop. you cannot add pop-up controls to tool bars. For more information about adding controls. To add a pop-up menu.Add 'add command bar ("Analysis Utilities".Enabled = True .Add to add controls to a command bar.ShowPopup to display the pop-up menu. set the type to boBarPopup.ShowPopup Adding controls to a command bar In general..5 Customizing the user interface Adding controls to a command bar To add a command bar to the collection of command bars: • Call CmdBars.Visible = True 'turn it on toolbar. 'delete it when finished toolbar. Displaying pop-up menus After you have defined the controls for a pop-up menu. boBarFloating) 'make the tool bar visible toolbar. use CmdBar. see Command Bars on page 51. as follows: popup.Delete End Sub After you have added a command bar. However.CmdBars.. you can add any control to any of the command bars in the CmdBars collection. see Adding controls to a command bar on page 54. For information about command bars.

Adding a face to a button To add a face to a button. For more information about adding faces to buttons. see the Visual Basic documentation. complete the following steps: 1.OnAction = "Extras. Without a face.. it is a good programming practice to ensure that the clipboard is empty before and after you use it. a button appears blank and is indistinguishable from the surface of its command bar (and similarly. 3. create the button and use the Clipboard object to hold the file containing the face. The clipboard is shared by other applications. which can contain one image and one block of text.Controls. a command bar appears as a thin line). toolCmdBut. To add the face to the clipboard. Paste the image on the face of the button. Once the face is in the clipboard. Place the image on the clipboard.. which returns an object of the type StdPicture.Delete End Sub Adding faces to buttons: the Clipboard object A face is the image that appears on the button. Clear the clipboard.NewToolRoutine" toolCmdBut. Therefore.Caption = "New Tool" toolCmdBut.CmdBars(2).Customizing the user interface Adding controls to a command bar 5 Example: Adding an extra item to the Desktop Intelligence Tools menu Sub AddTool() Dim menuCmdPop As CmdBarControl Dim toolCmdBut As CmdBarControl Set menuCmdPop = Application. Faces are also called icons. 2. you can add (paste) it to the button. use the standard VBA function LoadPicture(). Desktop Intelligence Developer Guide 55 .Controls(6) Set toolCmdBut = menuCmdPop. without any buttons. The Clipboard object enables you to access the system clipboard.DescriptionText = "Useful reporting tool" . To add a face to a button.Add(boControlButton) toolCmdBut.rea!ToolModule.

Clear the clipboard. You can add an action only to the controls of type boControlButton. However. an action is a VBA subroutine.bmp".Clipboard. 56 Desktop Intelligence Developer Guide .PasteFace 'paste the bitmap onto the button Application. 2 '2 means it's a bitmap ToolBut. you can add faces to these buttons that appear in the menus. . . ensure that the faces have the following specifications: 16x16 pixels or 32x32 pixels. Default) 'put the bitmap in the clipboard Application. To add a functionality to a button.Clipboard.Clipboard.SetData Bitmap. in the Desktop Intelligence Tools menu. Desktop Intelligence uses the caption instead. In programming terms. The following code fragment illustrates this procedure: Example: Adding a face to a button Dim ToolBut As CmdBarControl Dim Bitmap As New StdPicture button 'the button 'the bitmap for the Bitmap = LoadPicture("c:\Temp\images\Tool. For best results. the Visual Basic icon appears next to the Visual Basic Editor item in the Macros submenu.Clear 'clean up for other applications Set Bitmap = Nothing 'free the space Useful tips for adding buttons • Buttons attached to pop-up command bars do not need faces.Clear 'clean up the clipboard first Application.OnAction. For example. • Adding actions to buttons Adding an action to a button means instructing Desktop Intelligence as to what needs to be done when a user selects the button.5 Customizing the user interface Adding controls to a command bar 4. use CmdBarControl.

.DisplayMPa ste" . End Sub Creating your own forms A form is a base to which you attach user interface controls. Create a form module in a Visual Basic project. Creating a form To create a form. list boxes. You can use VBA to create your own forms. Add controls to the form. double-click. and moving the mouse..Customizing the user interface Creating your own forms 5 Example: Adding functionality to a button Dim MultiPasteBut As CommandBarControl . Desktop Intelligence Developer Guide 57 . labels. MultiPasteBut. pressing a key. 3. Visual Basic includes a rich set of programming tools for creating forms visually and defining the behavior of the form and its controls by using events—for example..rea!MPasteModule. and command buttons. complete the following steps: 1. Implement the event procedures for the control.. 2. Sub DisplayMPaste() . for example... radio buttons.OnAction = "MPaste.

5 Customizing the user interface Creating your own forms Example: Implementing a form event 58 Desktop Intelligence Developer Guide .

Data providers 6 .

see Query technique on page 62. It discusses the different types of data providers and describes how to access these sources of data. This chapter discusses the following topics: • • Working with existing data providers Creating a query technique data provider Working with existing data providers In Desktop Intelligence. Some of the properties of the DataProvider class relate directly to the information available from the Definitions tab of the "Data Manager" dialog box. the term "data provider" refers to the source of data that end users make use of to create reports. For more information about the Queries class. For example. you can read the state of the Editable and Refreshable check boxes.6 Data providers Working with existing data providers This chapter discusses the concepts associated with creating data providers by using the Desktop Intelligence SDK. 60 Desktop Intelligence Developer Guide . You can access the data providers for a document by using the DataProviders collection. Only data providers that are created from universes have a Queries object. by using the object model.

Dat aProviders.Name Next MsgBox message 'display the names End Sub Desktop Intelligence Developer Guide 61 .ActiveDocument.Data providers Working with existing data providers 6 The columns in the Results tab of the "Data Manager" dialog box are the same columns that you can access by using the Columns class. Example: Accessing properties of a data provider Sub Show_DP_Names() Dim I As Integer Dim message As String For I = 1 To Application.ActiveDocument.Item(I).Count message = message & Chr(10) & Application.DataProviders.

The query part defines which parts of the universe you are interested in. You can use the Desktop Intelligence Query Panel to create a query technique data provider. If editing is enabled for the data provider. You can select and configure the data provider by using the New Data wizard or the New Report wizard. For information on creating data providers with the Desktop Intelligence SDK. where Year is equal to 2000. the eFashion universe is stored in the General repository. you can edit the data provider by using the Desktop Intelligence interface.GetType. This corresponds to choosing the universe in the New Report wizard. For example. the Year object of the Time period class. 62 Desktop Intelligence Developer Guide . and the Sales revenue object of the Measures class. see Creating a query technique on page 65. The query technique data provider consists of the following: • • universe query The universe part defines where the information comes from. For example. Query technique A query technique is a data provider that queries a universe.6 Data providers Working with existing data providers Data provider types Data providers are categorized into four main types: • • • • query technique freehand SQL personal text file stored procedure You can access the data provider types by using DataProvider.

SQL. Microsoft Excel. Desktop Intelligence Developer Guide 63 . and dBASE files. A freehand SQL file data provider has no Queries object. You can use the personal text file option to configure the information in the file. Stored procedure A stored procedure data provider is an SQL script that is saved and executed in a database. A stored procedure data provider has no Queries object. such as what is a value. what is a column name and so on. You can retrieve the SQL statement by using DataProvider. Personal text file A personal text file data provider retrieves data from plain text. A personal text file data provider has no Queries object.Data providers Working with existing data providers 6 Freehand SQL A freehand SQL data provider is one in which the data is retrieved by using an SQL statement and the database connection is defined by the end user.

ActiveDocument. it will slow down the system and the program may terminate unexpectedly. Unload a data provider in an error-handling mechanism.Dat aProviders. Business Objects recommends that you include a call to DataProvider when you load or unload a data provider..Item(1) boDP. Exit Sub DPError: boDP. You need not use them for macros and "one-off" add-ins.Load 'load the data provider into memory . 'do some processing with the data provider boDP.Unload 'make sure that the data provider is not in memory 64 Desktop Intelligence Developer Guide . Error handling If you do not unload a data provider from memory after using it.. use DataProvider.Unload 'unload the data provider from memory .Load • To unload a DataProvider object from memory... then system errors can occur.6 Data providers Working with existing data providers Loading and unloading a data provider You can load and unload a DataProvider object to and from memory as follows: • To load a DataProvider object into memory. Example: Unloading a data provider in an error handler The following code fragments show how to ensure that a data provider is removed from memory if an error occurs after it is loaded: Sub Modify_DataProvider() Dim boDP As DataProvider On Error Goto DPError 'if there's an error handle it Set boDP = Application. If an error occurs while the data provider is loaded to memory. use DataProvider.Unload These methods are used to optimize "product-level" programs.

Add "Time period". Ensure that the query you built is runnable. The object model includes a number of classes for this. For more information on rules for a valid query. apply sorts. Build the query." error message End Sub 'display an Creating a query technique To create a query technique.Item(1).. Desktop Intelligence Developer Guide 65 . This is the programmatic equivalent of the Query Panel stage in creating or editing a report. Run or refresh the query (execute the SQL) by using DataProvider. "Year" QT.AddQueryTechnique("eFashion". that the query follows the rules for a valid query. complete the following steps: 1. Call DataProviders. and run the query.Data providers Creating a query technique 6 MsgBox "An error occurred. just as in the user interface. you can choose objects for the results and conditions.Queries. From this point.AddQueryTechnique returns a DataProvider object that has an empty query object.ActiveDocument. all of which can be accessed through the Queries object. 2. see Desktop Intelligence User's Guide: Accessing Data and Data Analysis.Refresh. DataProviders. that is. 3.Refresh Building the query DataProviders.AddQueryTechnique. Example: Creating a query technique data provider Dim QT As DataProvider Set QT = Application. "") QT.Results..

Conditions. and populates a microcube with the results of the SQL statement. 66 Desktop Intelligence Developer Guide .Refresh. use DataProvider. This method executes the SQL instruction you built with the Query.6 Data providers Creating a query technique Running and refreshing the query (filling the microcube) To run and refresh the query. and Results objects. Desktop Intelligence then builds a report based on the microcube and any sort orders that you have specified.

Get More Help A .

and support forums. or contact us at: http://www. The library is updated regularly with new content as it becomes available.com/services/training 68 Desktop Intelligence Developer Guide . Expertise is available in relational and multidimensional databases.com/services/consulting/ Looking for training options? From traditional classroom learning to targeted e-learning seminars. database design tools.com/support/ Looking for the best deployment solution for your company? Business Objects consultants can accompany you from the initial analysis stage to the delivery of your deployment project. For more information. and more. visit http://help. http://www.businessobjects. To access the online documentation library. downloads.com/ and click Business Objects at the top of the page.A Get More Help Online documentation library Business Objects offers a full documentation set covering all products and their deployment. Find more information on the Business Objects Education web site: http://www. contact your local sales office. in connectivities. It also has links to a wide range of technical information including knowledgebase articles.sap. The online documentation library has the most up-to-date version of the Business Objects product documentation.businessobjects. and download PDF versions.sap. we can offer a training package to suit your learning needs and preferred learning style.sdn. You can browse the library contents.businessobjects. Additional developer resources https://boc. do full-text searches. customized embedding technology.com/developer/library/ Online customer support The Business Objects Customer Support web site contains information about Customer Support programs and services. read guides on line.

businessobjects.com. please contact our Customer Support experts. For information about Customer Support visit: http://www. visit: http://www.com Note: If your issue concerns a Business Objects product and not the documentation.com/support/.businessobjects.Get More Help A Send us your feedback Do you have a suggestion on how we can improve our documentation? Is there something you particularly like or have found useful? Drop us a line. Desktop Intelligence Developer Guide 69 . Business Objects product information For information about the full range of Business Objects products. and we will do our best to ensure that your suggestion is included in the next release of our documentation: mailto:documentation@businessobjects.

A Get More Help 70 Desktop Intelligence Developer Guide .

Index . 65 user interface 50 Clipboard object pasting faces 55 collections command bars 52 command bar controls actions 56 adding 54 collection 52 definition 51 nested 52 command bars adding 53 adding controls 54 collection 52 definition 51 controls see command bar controls 51 creating add-ins 41 macros 38 query technique data provider 65 customizing Desktop Intelligence interface 50 B bitmaps adding to buttons 55 building query technique data provider 65 buttons adding 54 adding actions 56 adding faces 55 Desktop Intelligence Developer Guide 71 . 50 arrays indexes 13 VBA 13 C Chr function 16 classes command bars 52 queries 62.rea 41 buttons (continued) definition 51 A accessing application events 46 Desktop Intelligence user interface 50 actions adding to buttons 56 add-ins 10 creating 41 distributing 42 adding actions to buttons 56 buttons 54 command bars 53 controls 54 macros 40 application events 44 implementing 46 Application object 46.

45 including external object libraries in VBA 15 indexing arrays in VBA 13 E errors data providers 64 handling 64 handling in VBA 14 events application 44 document 44. 45 executing macros 40 external object libraries 15 F faces adding 55 recommended size 56 filling a microcube 66 flow control in VBA 12 forms creating 57 freehand SQL data provider definition 63 functions 11. 45 order 45 triggers 45 Excel querying 63 L loading data providers 64 M macros 10 adding 40 72 Desktop Intelligence Developer Guide .Index D data providers 60 freehand SQL 63 handling errors 64 loading and unloading 64 optimizing 64 personal text file 63 query technique 62 stored procedure 63 types 62 dBASE querying 63 declaring arrays in VBA 13 variables in VBA 11 Desktop Intelligence customizing the interface 50 development environment VBA 10. 15 disabling macros 38 displaying pop-up menus 54 distributing add-ins 42 document events 44. 45 form 57 implementing 11. 16 H handling errors in VBA 14 I implementing form events 57 implementing events 11.

Index macros (continued) creating 38 running 40 tool tips 40 memory management data providers 64 menu bar definition 51 menus nesting 52 microcube filling 66 Q Queries object 65 Query Panel 65 query technique data provider creating 62. 38 P personal text file data provider definition 63 pop-up menus adding 53 definition 51 displaying 54 nesting 52 procedures 11 browsing in VBA 15 T tool bars adding 53 definition 51 tool tips macros 40 Desktop Intelligence Developer Guide 73 . 65 definition 62 running and refreshing 66 R referencing external object libraries in VBA 15 refreshing query technique data provider 66 reports 66 repository 62 running macros 40 query technique data provider 66 N nesting controls 52 O Object Browser 10 opening 15 object models user interface 50 objects browsing in VBA 15 external 15 On Error statement 14 optimizing data providers 64 S showing pop-up menus 54 SQL 66 data provider 63 stored procedure data provider definition 63 sub-routines 11.

Index U universes querying 62. 65 unloading data providers 64 user input 50 user interface customizing 50 V VBA 10 arrays 13 creating forms 57 data types 11 events 11 flow control 12 VBA (continued) functions 16 implementing an event 45 language summary 10 On Error statement 14 variables 11 With statement 14 writing macros 38 VBA procedure data provider creating 62 Visual Basic editor 10. 40 tool bar 40 W With statement 14 74 Desktop Intelligence Developer Guide .