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

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

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

Contents 6 Desktop Intelligence Developer Guide .

Introduction 1 .

This appendix describes the Business Objects documentation. training. and consulting services. with links to online resources. see Appendix A: Get More Help. 8 Desktop Intelligence Developer Guide . Business Objects information resources For more information and assistance. Who should use this guide This guide is intended for developers who want to use the Desktop Intelligence SDK to develop applications.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). customer support.

Getting started with VBA 2 .

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

The execution of the code when an event occurs is called event implementation. that is. Functions can return values. 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.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. as follows: Dim Name As String Procedures The VBA supports two different type of procedures: functions and sub-routines. Event implementation The VBA is event-driven. whereas subroutines do not return values. The Universe Designer SDK does not have any events to implement. This implies that you cannot write a code to respond to events in the Designer Desktop Intelligence Developer Guide 11 .

or until it becomes true Branches to one of several possible code segments. 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.2 Getting started with VBA Language summary application. Repeats an action while a condition is true Repeats an action either when a condition is true. see Desktop Intelligence events on page 44 and Creating your own forms on page 57. based on the value of a variable or the outcome of a test. alters the execution flow Repeats an action the specified number of times. For more information on implementing events. and based on the result of the 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 . However.

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

DataProviders. 14 Desktop Intelligence Developer Guide . you must specify the bounds in the array declaration. an error message is displayed and the execution stops. For example: Dim RawData(10 To 20) As Variant RawData has 11 elements.ActiveDocument.ScopeOfAnalysis = boThreeLevelsDown End With Error handling You can use the On Error statement to handle errors generated during the execution of a code.Queries .Item(1). any run-time error that occurs can prove to be critical. With statement The With statement tool enables you to abbreviate object references.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. If you don't use an On Error statement.DuplicateRows = TRUE . The first is element number 10 and the last is element number 20. 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. That is.DeleteTrailingBlanks = TRUE .

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

Select the object library from the list.2 Getting started with VBA Some useful VBA functions and subroutines If the reference is successful. and click OK. the name of the object library you referenced appears in the Object Library drop-down list in the VBA Object Browser. 2. 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 .

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 . after rounding down positive numbers and negative numbers Returns the integer portion of a number.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.

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. 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 .

VBA macros: migration overview 3 .

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

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

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

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

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

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

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

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

because scheduling is no longer supported in Desktop Intelligence SDK. Use cases This section briefly describes the use cases of Desktop Intelligence SDK.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.3 VBA macros: migration overview Use cases Availability of variables Variable name COMPUTERNAME CommonProgramFiles HOMEDRIVE HOMEPATH ProgramFiles 6.5. Scheduling by using DocAgentOption class The DocAgentOption calls must be replaced by Enterprise SDK scheduling API. 28 Desktop Intelligence Developer Guide .

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.Item(1) Dim FCScheduleInfo As SchedulingInfo Use the scheduling object to set the scheduling options Set FCScheduleInfo = FCDocumentObject.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. Login BusinessObjects Full Client Application.SchedulingInfo FCScheduleInfo.) FCScheduleInfo.RightNow = 1 Schedule the document IStore.LogonWithToken and Document.Type=4 (Schedule is monthly.5: Desktop Intelligence Developer Guide 29 .LogonTokenMgr.LogonWithToken(EntSession.CreateLo gonEx) Dim strCUID As String Call to BusinessObjects FC SDK to get document's CUID strCUID = Application.CUID.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.IntervalMonths = 2 FCScheduleInfo.Documents( " DocumentToScedule " ).VBA macros: migration overview Use cases 3 In the following use case for Application. How it was done in 6.

• Option 2: 1. and send notification emails. see Scheduling by using DocAgentOption class on page 28. For more information. and methods The following tables discuss the document events.5 to XI: • Option 1: 1. 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 . How to migrate it to XI: The following are the two options to migrate from 6. see Scheduling by using DocAgentOption class on page 28. Use InfoView or BusinessObjects Enterprise SDK to schedule publisher. The publisher.rep refresh. 3. properties.rep document was scheduled through BCA. Document events. For more information. Use InfoView or BusinessObjects Enterprise SDK to schedule the VB program object. Install Desktop Intelligence on the same machine as the BusinessObjects XI Server. properties.rep document contained the Sub ENotify() VBA macro to open documents. action specified the execution of VBA code embedded in the document. Call VBA ENotify () in document event handler: Sub Document_AfterRefresh() 2. and methods A publisher. Move the code from VBA to a VB Program. properties. save them in PDFformat.3 VBA macros: migration overview Document events. 2.

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.Expor tAsPDF ThisDocument.SaveToEn Doesn't work terprise ThisDocument. properties.Save ThisDocument.VBA macros: migration overview Document events.SaveAs InfoView Doesn't work Doesn't work Desktop Intelligence OK OK OK ThisDocument.Expor tAsXML OK OK OK OK Desktop Intelligence Developer Guide 31 .

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

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

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 .

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. just as you can send a regular Desktop Intelligence document. On the submenu. The "Macros" dialog box appears. select Macro. 2. select Macros. Creating a macro To create a macro. From the Tools menu. complete the following steps: 1. as shown in the following figure: 38 Desktop Intelligence Developer Guide . 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. You can create macros in Desktop Intelligence by using the integrated VBA environment.4 Programming with Desktop Intelligence Macros and subroutines This chapter describes how to program with Desktop Intelligence.

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

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

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

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

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

In Desktop Intelligence. you can program Desktop Intelligence to display a dialog box whenever a user opens a document. you can implement an event for any document. That is. or only when it happens to a particular document. belong to the Document class and are called document events. General document events. belong to the Application class and are called application events. Programming a response to an event is called implementing the event. you can implement events concerning Desktop Intelligence documents (*. those that apply to any document. These events are made available in general and specific senses. for which you can program a response. For example.rep and *. those that apply to specific documents. 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 . Specific document events.rea).4 Programming with Desktop Intelligence Desktop Intelligence events Desktop Intelligence events An event is a change in the state of Desktop Intelligence.

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. or when the user calls the Document. the order of events is Doc1_Deactivate followed by Doc2_Activate. Desktop Intelligence Developer Guide 45 . Triggering the events on the server side by using Desktop Intelligence document has certain limitations.Refresh method. the Open event occurs followed by Activate. Implementing an event Each event that you can implement appears in the VBA procedure list for its corresponding object. 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. For example.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. When a document is opened. If the focus is moved from Doc1 to Doc2.

see Creating your own forms on page 57. 46 Desktop Intelligence Developer Guide . so continue with refresh Cancel = False End If End Sub Implementing application events You cannot implement application events directly. For more information. vbOK Cancel) If Response = vbCancel Then 'user chose cancel. 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?". To access the events of the Application object. insert the code that you want to execute in the procedure corresponding to the event when the event occurs. you need to create a reference to the object and implement the events of the reference. so cancel the refresh Cancel = True Else 'user didn't cancel. This process is identical to implementing form events in the user interface.4 Programming with Desktop Intelligence Implementing application events To implement an event.

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

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

Customizing the user interface 5 .

you can include a userinteraction element to add-ins and macros. Each Desktop Intelligence Application object includes a collection called CmdBars. 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 . 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. you can integrate the user interface elements of your add-ins and macros with the Desktop Intelligence interface. you can also access elements of the Desktop Intelligence user interface and extend the interface to accommodate the requirements of your program. tool bars. Using this collection. so that they appear as part of the normal interface. With the Desktop Intelligence SDK. The CmdBars collection is the access point for all menus.5 Customizing the user interface User interface classes This chapter describes how to customize the user interface by using the Desktop Intelligence SDK. and pop-ups in the Desktop Intelligence interface. Using the Desktop Intelligence SDK.

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

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

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

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

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

Clipboard. • 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.Clipboard. .SetData Bitmap.5 Customizing the user interface Adding controls to a command bar 4. For example. 2 '2 means it's a bitmap ToolBut.Clipboard. To add a functionality to a button.OnAction. 56 Desktop Intelligence Developer Guide . Desktop Intelligence uses the caption instead.bmp". ensure that the faces have the following specifications: 16x16 pixels or 32x32 pixels. Default) 'put the bitmap in the clipboard Application. in the Desktop Intelligence Tools menu. For best results.PasteFace 'paste the bitmap onto the button Application. an action is a VBA subroutine. In programming terms. use CmdBarControl. . 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. However. you can add faces to these buttons that appear in the menus.Clear 'clean up the clipboard first Application. 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. Clear the clipboard. You can add an action only to the controls of type boControlButton.

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. for example..OnAction = "MPaste. Sub DisplayMPaste() . list boxes..Customizing the user interface Creating your own forms 5 Example: Adding functionality to a button Dim MultiPasteBut As CommandBarControl . You can use VBA to create your own forms. Desktop Intelligence Developer Guide 57 .rea!MPasteModule. and moving the mouse.. Create a form module in a Visual Basic project.. radio buttons. MultiPasteBut. complete the following steps: 1.DisplayMPa ste" . Add controls to the form. 2.. and command buttons.. End Sub Creating your own forms A form is a base to which you attach user interface controls. Creating a form To create a form. double-click. 3. pressing a key. Implement the event procedures for the control. labels.

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

Data providers 6 .

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

Example: Accessing properties of a data provider Sub Show_DP_Names() Dim I As Integer Dim message As String For I = 1 To Application.DataProviders.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.ActiveDocument.Dat aProviders.Item(I).ActiveDocument.Name Next MsgBox message 'display the names End Sub Desktop Intelligence Developer Guide 61 .Count message = message & Chr(10) & Application.

62 Desktop Intelligence Developer Guide . You can select and configure the data provider by using the New Data wizard or the New Report wizard. Query technique A query technique is a data provider that queries a universe. For information on creating data providers with the Desktop Intelligence SDK. This corresponds to choosing the universe in the New Report wizard. you can edit the data provider by using the Desktop Intelligence interface. If editing is enabled for the data provider.GetType.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. The query part defines which parts of the universe you are interested in. The query technique data provider consists of the following: • • universe query The universe part defines where the information comes from. You can use the Desktop Intelligence Query Panel to create a query technique data provider. the eFashion universe is stored in the General repository. where Year is equal to 2000. For example. and the Sales revenue object of the Measures class. For example. see Creating a query technique on page 65. the Year object of the Time period class.

A stored procedure 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. Personal text file A personal text file data provider retrieves data from plain text.SQL. Desktop Intelligence Developer Guide 63 . You can use the personal text file option to configure the information in the file. You can retrieve the SQL statement by using DataProvider. Microsoft Excel. and dBASE files. such as what is a value. A personal text file data provider has no Queries object. A freehand SQL file data provider has no Queries object. Stored procedure A stored procedure data provider is an SQL script that is saved and executed in a database. what is a column name and so on.

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.Unload These methods are used to optimize "product-level" programs. Error handling If you do not unload a data provider from memory after using it... use DataProvider. use DataProvider. If an error occurs while the data provider is loaded to memory. Business Objects recommends that you include a call to DataProvider when you load or unload a data provider.Item(1) boDP.Load • To unload a DataProvider object from memory. Exit Sub DPError: boDP.. Unload a data provider in an error-handling mechanism. 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.Unload 'unload the data provider from memory .Dat aProviders. it will slow down the system and the program may terminate unexpectedly.ActiveDocument. You need not use them for macros and "one-off" add-ins.. 'do some processing with the data provider boDP.Unload 'make sure that the data provider is not in memory 64 Desktop Intelligence Developer Guide . then system errors can occur.Load 'load the data provider into memory .

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

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

Get More Help A .

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

businessobjects.businessobjects. Desktop Intelligence Developer Guide 69 . visit: http://www.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.com/support/. Business Objects product information For information about the full range of Business Objects products. For information about Customer Support visit: http://www.com Note: If your issue concerns a Business Objects product and not the documentation. and we will do our best to ensure that your suggestion is included in the next release of our documentation: mailto:documentation@businessobjects. please contact our Customer Support experts.com.

A Get More Help 70 Desktop Intelligence Developer Guide .

50 arrays indexes 13 VBA 13 C Chr function 16 classes command bars 52 queries 62. 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 .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.Index .

16 H handling errors in VBA 14 I implementing form events 57 implementing events 11.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. 45 order 45 triggers 45 Excel querying 63 L loading data providers 64 M macros 10 adding 40 72 Desktop Intelligence Developer Guide . 15 disabling macros 38 displaying pop-up menus 54 distributing add-ins 42 document events 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 form 57 implementing 11. 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.

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. 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. 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 .

Index U universes querying 62. 40 tool bar 40 W With statement 14 74 Desktop Intelligence Developer Guide . 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.

Sign up to vote on this title
UsefulNot useful