OfficeClip Customizing Topic

OfficeClip Developer API Manual

The OfficeClip Developer API is created to enable developers to customize existing applications and to create new applications in OfficeClip. Some of the common use of the API are as follows:
  • Changing the look and feel of the OfficeClip presentation.
  • Changing the behavious of an existing application.
  • Add new functionality to existing applications.


ODT Components

API Components

The API consists of the following resources,

  • Application Programming Interface (API) - The BusinessLayer and Utils API expose all business layer objects and their methods to the developer. The datalayer API exposes the OfficeClip Database access routines. Following are the modules to be linked with:

    1. OfficeClip.Utils.dll
    2. OfficeClip.BusinessLayer.dll
    3. OfficeClip.DBLayer.dll

  • Presentation Source Code (PSC) - For each application, sources related to the .aspx sources, .cs code-behinds and controls are available. Note: This is only available in the premium version of the developer API.

  • Database Model (DM) - The database model provides the IDEF0 model of the entire database separated by applications and other areas of OfficeClip. Note: This is only available in the premium version of the developer API.

  • Database Stored Procedures (SP) - The database stored procudures will only be available in limited form to the users of the premium version of the developer API.

  • Email Support - OfficeClip provides free email support and upto four hours of complementary support for the premium version of the developer API users.


ODT Components

API Requirements

The API has various components, each of which has its own requirements:

Using The Database Model (DM) requires knowledge of general database design.

To use the Application Programming Interface (API) and Presentation Source Code (PSC), the developer will need detailed knowledge of Object Oriented Programming in C# and aspx code in the .Net programming environment.


ODT Coding Guidelines

API Coding Guidelines

This section discusses some standard procedures to be followed by the developers of the OfficeClip Developer API. Following these guidelines will enable a structured upgrade of OfficeClip code when new versions are released. Another goal is to create guidelines that will not limit the OfficeClip developers to enhance or complement any of the OfficeClip’s functionality.

Guidelines

  1. All code customizations should be done at the custom directory under the OfficeClip root. This diretory should be specified in the web.config file of the OfficeClip installation (please see the description of the CustomXml key in the Customization manual). Developers may create their own directory for customization but it should be a subdirectory of the root web folder of OfficeClip.

  2. OfficeClip API may change in the future or the current API may be deprecated. We anticipate some change in the developer code due to this. OfficeClip will provide documentation on the API’s that got added, deprecated or modified. Every attempt will be made to keep the API consistent.

  3. If developers wants to make a small change on an OfficeClip file, they are advised to copy the complete file in the custom area and make changes to it.

  4. Developer should not get around the OfficeClip licensing code. OfficeClip’s licensing code is a means for OfficeClip to realize revenues from its sales. The rights to change or bypass the license are not provided explicitly. Developer will not attempt to tamper the code associated with the license or bypass them.

  5. OfficeClip brands its products in certain places (e.g. browser titlebar). These should not be removed or changed by the developer of the API. Any branding changes will require authorization from OfficeClip.

  6. All read access to the database should be done with the API supplied by the OfficeClip. We anticipate that OfficeClip API is comprehensive enough to provide information regarding all the database objects. In exceptional cases developer may want to write their own embedded SQL or stored procedure. In those cases, the following guidelines should be followed:

    1. Let OfficeClip know about the requirement. If OfficeClip decides to add the API in a later version and it satisfied all the needs of the developer, the developer agrees to use that API instead of the custom written API designed by them.

    2. Developer should *not* write any information to any OfficeClip tables directly using custom queries. Doing so may destroy the database consistency beyond repair. If the developer have a need to write into OfficeClip table, they should follow the following guidelines:

      1. Whereever possible, OfficeClip API should be used to write into these tables in a consistent manner.

      2. Developers may create their own tables linked by a foreign key to an OfficeClip table to write their information.

      3. If the developer wishes to delete any record in their table that is linked with an OfficeClip table, it should be dealt with in the following way:

        • If the primary record from the OfficeClip table also needs to be deleted, it should be done by calling the appropriate api function from the OfficeClip namespace.

        • If reference integrity needs to be maintained between the primary and the foreign key, it is necessary to customize the OfficeClip screen and remove the entries related to the foreign key before removing the primary key.

      4. All developer stored procedure should be named with an “Int_” prefix(or any other prefix with an underscore). This is done to ensure that the developer’s stored procedure does not overwrite OfficeClip stored procedure and vice versa.


Application Programmer Interface (API)

The Application Programmer Interface (API) allows users to use almost all the methods of the OfficeClip business layer, data layer and utilities.

To use the API, follow these steps:

  1. Install OfficeClip Developer API on the server where OfficeClip is installed.

  2. Using Visual Studio.net, open the project called API located at the OfficeClip root directory.


Presentation Layer Sources (PSC)

The Presentation Layer Source Code (PSC) allows a developer to browse through all the OfficeClip presentation layer sources. This includes the program files (aspx), control files (ascx), code-behind files (.cs) and some of the configuration files.

The PSC is distributed as a separate web-based application bundled with the premium version of the API. Please contact OfficeClip for details.


Database Model (DM)

The Database Model (DM) provides the entity relationship model for OfficeClip. This helps developers to create new tables or modify the existing ones to enhance the functionality of OfficeClip.

Note: The DM is provided in a separate file and is bundled with the premium version of API. Please contact OfficeClip for details


Walkthroughs

The following walkthroughs are available:

  • Walkthrough 1: Add a new application.

  • Walkthrough 2: Add a new portlet.

  • Walkthrough 3: Create a custom report.


Walkthrough Setup

Before starting any of the walkthroughs please note the following:

The custom path is set using the customXML key at the root web.config file. The value can either be set to an empty string (in which case the custom configuration feature is off) or set to a relative path from the OfficeClip home directory.

The entry for custom path is defined in the root level web.config file as:

    <AppSettings>
    .....
        <add key="customXML" value="custom/custom.xml" />
    ...
    </AppSettings>

The value in the above key determines the following things:

  1. The name of the custom index file, which is "custom.xml" in the above example.
  2. The path where the custom.xml file is located.
By default, the directory "custom" is created within the OfficeClip root which is used for keeping all the customized files.

All of the following walkthroughs are available for testing in the custom\API folder. By default, the walkthroughs are not set to enabled in the custom.xml file in the custom project. To enable one or more of them, set active = "Y". and run iisreset from the windows command prompt.

Note: It is important to note that the custom directory will need to be a subdirectory of the OfficeClip root directory. This is because it is referred in the programs as the relative url from the OfficeClip root. For the purpose of the walkthroughs it will be assumed that OfficeClip is installed in the directory c:\program files\officeclip\7\officeclip directory.


Walkthrough Download

The walkthroughs can be downloaded from Here.

Instructions:

  1. Unzip the files into the root folder of your OfficeClip application (it is c:\program files\officeclip\7\officeclip if you have installed OfficeClip in default location). After unzipping there should be a custom folder created in the root OfficeClip folder.
  2. If you want to make your changes, it is advisable to create your own folder and copy the relevant walkthrough and make your own changes and test. This will avoid overwriting your changes in case you want to download the new version of this file from our website.
  3. Follow instructions in this help file to run the walkthroughs.

Prerequisites:

  1. You must have Visual Studio Professional Edition or Team Edition to load the provided solution. If you do not have Visual Studio, you will still be able to run the walkthroughs but you will not be able to make changes to them in visual studio. Use a text editor (e.g. notepad) to edit files as per instruction.
  2. Crystal reports add-in must be installed in Visual Studio in order to edit the report files. Crystal Reports version 10 can also be used to edit these files.


1. Add a new application

In this walkthrough we will show how a new application can be added to OfficeClip. We will not design the actual application at this time but will show how to create buttons and menus for the application.

Creating an new application in OfficeClip consists of several tasks:

  • Designing the application image icon.
  • Adding application in the appropriate XML file.
  • Changing the application menus files to show new menus.
This walkthrough is available at: c:\program files\officeclip\custom\api\walkthru1


Adding to Xml Files

Adding to Xml file

Changing the appmenus.xml file

The Xml file that contains all the menu information is located at: c:\program files\officeclip\7\officeclip\APP_Code\appmenus.xml. This file is copied to the c:\program files\officeclip\7\officeclip\custom\api\walkthru1\appmenus.xml folder and changed as shown below:

    File: c:\program files\officeclip\7\officeclip\custom\api\walkthru1\appmenus.xml
    ------------------------------------------------------------------------------------------------
  ........
  ........
  ........
      </MenubarItem>
    </MenubarItem>
  </Menubar>
  <Toolbar>
    <ToolbarItem tbId="1" appId="15"  skinID="alerttoolbaritem" alternateSkinID="alertblinktoolbaritem"/>
    <ToolbarItem tbId="-2" appId="-1"  skinID="tbLine" />
    <ToolbarItem tbId="2" appId="-1"  skinID="portaltoolbaritem" Selected="True">
      <Leftbar>
        <LeftbarItem appId="14" imageUrl="leftbar/homepage.gif" Selected="True"/>
        <LeftbarItem appId="18" imageUrl="leftbar/announcement.gif"/>
        <LeftbarItem appId="21" imageUrl="leftbar/notes.gif" />
        <LeftbarItem appId="3" imageUrl="leftbar/bookmark.gif" />
        <LeftbarItem appId="9" imageUrl="leftbar/bulletin.gif" />
        <LeftbarItem appId="25" imageUrl="leftbar/rss.gif" />
        <LeftbarItem appId="17" imageUrl="leftbar/photo.gif" />
        <LeftbarItem appId="16" imageUrl="leftbar/poll.gif" />
        <LeftbarItem appId="1001" name="System Info" tooltip="See System Information"
         imageUrl="leftbar/tutorial.gif" url="custom/API/Walkthru1/info.aspx"/>
      </Leftbar>
    </ToolbarItem>
    <ToolbarItem tbId="3" appId="-1" skinID="desktoptoolbaritem">
      <Leftbar>
        <LeftbarItem appId="1" imageUrl="leftbar/calendar.gif" Selected="True" />
        <LeftbarItem appId="20" imageUrl="leftbar/task.gif" />
        <LeftbarItem appId="10" imageUrl="leftbar/document.gif" />
        <LeftbarItem appId="13" imageUrl="leftbar/usermanager.gif" />
  .......
  .......
  .......
    ------------------------------------------------------------------------------------------------

Note: The application id of your custom application should be more than 1000 and should be unique across all custom applications.

Changing the custom.xml file

The Xml file that drives this application is called custom.xml (as discussed in a previous section). This file is located at c:\program files\officeclip\7\officeclip\custom\custom.xml. Entries needs to be put in this file for OfficeClip server to use the custom files instead of its own files

    File: c:\program files\officeclip\7\officeclip\custom\api\walkthru1\appmenus.xml
    ------------------------------------------------------------------------------------------------
   ....
   ....
   ....
  <customizations>
  <!-- Walkthru1 adds a new application to OfficeClip -->
      <custom id="1001" in="APP_Data/AppMenus.xml" out="custom/API/walkthru1/AppMenus.xml" active="Y"/>
      <custom id="1002" in="images/leftbar/tutorial.gif" out="custom/API/walkthru1/info.gif" active="Y"/>
   ....
   ....
   ....
   -------------------------------------------------------------------------------------------------

Note: All custom ids should be more than 1000 and should be unique across all custom ids.

The "in" parameter in the custom.xml file denotes the location of the file that OfficeClip will generally use whenever this file is accessed by OfficeClip. By specifying the "out" parameter we are telling OfficeClip to use this file instead of the file in the "in" parameter.


Adding Code
This walkthrough contains two files:
  1. menus.ascx - Defines the menus on the button bar
  2. info.aspx - The main code page

Note that the info.aspx is mentioned in the appmenus.xml file so we do not need any custom entry for it.

    File: c:\program files\officeclip\7\officeclip\custom\api\walkthru1\menus.ascx
    ------------------------------------------------------------------------------------------------
    <%@ Control Language="C#" %>

        <%@ Register TagPrefix="OcTag" TagName="Menu" Src="~/UserControl/Framework/Buttonbar.ascx" %>

        <OcTag:Menu ID="buttonBar" runat="server" />

       <script language="C#" runat="server">

       protected OfficeClip.Utils.OCResources ocr;
       protected void Page_Init(object obj, EventArgs e)
       {
        ocr = new OfficeClip.Utils.OCResources();
        buttonBar.Add(1, "Menu 1", ocr.ImagePath("buttonbar/list1.gif"),
        ocr.AppPath("custom/API/Walkthru1/info.aspx?id=Menu1"));
        buttonBar.Add(2, "Menu 2", ocr.ImagePath("buttonbar/new.gif"),
        ocr.AppPath("custom/API/Walkthru1/info.aspx?id=Menu2"));
        buttonBar.Add(3, "Menu 3", ocr.ImagePath("buttonbar/list2.gif"),
        ocr.AppPath("custom/API/Walkthru1/info.aspx?id=Menu3"));
        }

        protected void Page_Load(object obj, EventArgs e)
        {

        }

        public OfficeClip.BusinessLayer.Framework.ButtonbarItem GetMenuItem(int item)
        {
         return buttonBar.GetMenuItem(item);
         }

        public void Hide(int item)
        {
         buttonBar.Hide(item);
        }

        public void Show(int item)
        {
            buttonBar.Show(item);
         }

        public void Select(int item)
        {
         buttonBar.Select(item);
        }

    </script>
    ------------------------------------------------------------------------------------------------

More documentation on the methods are available from the Developer API documentation.

    File: c:\program files\officeclip\7\officeclip\custom\api\walkthru1\info.aspx
    ------------------------------------------------------------------------------------------------
    <%@ Page Debug="True" MasterPageFile="~/general/site.master" Language="C#" %>
    <%@ Register TagPrefix="OCTag" TagName="Menus" Src="menus.ascx" %>
    <script language="C#" runat="server">
        protected void Page_Init(object obj, EventArgs e)
        {

        }

        protected void Page_Load(object obj, EventArgs e)
        {
             ((OfficeClip.General.SiteMaster)Master).SetFramework(
             OfficeClip.BusinessLayer.Framework.Constants.ToolbarType.Portal,
             1001,
             "OfficeClip Walkthrough 1", string.Empty
             );
            menuup.Select(1);
        }

    </script>
    <asp:content id="contHome" runat="server" contentplaceholderid="a">
        <table width="100%" border="0" cellspacing="0" cellpadding="0">
         <tr>
            <td colspan="2" class="buttonbar">
             <OCTag:Menus ID="menuup" runat="server" />
            </td>
         </tr>
         <tr><td colspan="2"> </td></tr>
        <tr>
            <td style="width:5px">
            </td>
         <td>
         This is the walkthrough 1 application
         <br />
         <%= Request.QueryString["id"] %>
         </td>
        </tr>
     </table>
    </asp:content>

    -----------------------------------------------------------------------------------------------


Activating the Application

Follow these simple steps to activat the new application in OfficeClip.

  1. Go to c:\program files\officeclip\7\officeclip\custom\custom.xml and change the Active properties of walkthru 1 to Y. Make sure that you make the Active property of everything else to N.

  2. Run iisreset from the command prompt.

  3. Log on to OfficeClip, click on Office Portal on the toolbar you should see the new application button called System Info on the left. Click on this button and you should see the test application.


4. Adding a New Portlet

In this walkthrough we will show how a new portlet can be created and added to OfficeClip. We will create a portlet called Events which will have a small monthly calendar

Standard OfficeClip control will be used to implement the new portlet. The following files are the part of this walkthrough:

  • homepage.aspx - The new portlet specification will be added in this file.

  • events.ascx - The portlet control file that displays the portlet.

When done, the portlet will appear at the OfficeClip Home Page and will look like this:


Modify the Custom Structure

Modify Custom Structure

For this walkthrough, we will need to modify the custom.xml so that the changes made can easily be rolled back without affecting the rest of the code.

Follow these steps to make changes to the custom structure:

  1. Navigate to the file c:\program files\officeclip\officeclip\custom\custom.xml.

  2. Note the following line in the file:

    <custom id="1011" in="OfficePortal/HomePage/homepage.aspx" out="custom/API/walkthru2/homepage.aspx" active="N" />
To activate this portlet, the active property above will need to be changed to Y.


Changing the Homepage file

Changing the Homepage

The file homepage.aspx contains the definition for all the portlets. This file originally resides in the c:\program files\officeclip\7\officeclip\officeportal\HomePage directory. This file is modified in the current walkthrough as shown below:

    File: c:\program files\officeclip\7\officeclip\officeportal\HomePage\homepage.aspx
    --------------------------------------------------------------------------------------------------

    <%@ Page MasterPageFile="~/general/site.master" Language="c#" Debug="true" Codebehind="homepage.aspx.cs"
     AutoEventWireup="false" Inherits="OfficeClip.OfficePortal.HomePage.HomePage" %>
    <%@ Register Src="~/officeportal/homepage/whatsnew.ascx" TagName="WhatsNew" TagPrefix="OcTag" %>
    <%@ Register Src="~/officeportal/homepage/OfficeClipPicks.ascx" TagName="OfficeClipPicks" TagPrefix="OcTag" %>
    <%@ Register Src="~/officeportal/homepage/businesscenter.ascx" TagName="BusinessCenter" TagPrefix="OcTag" %>
    <%@ Register Src="~/officeportal/homepage/search.ascx" TagName="Search" TagPrefix="OcTag" %>
    <%@ Register Src="~/officeportal/homepage/news.ascx" TagName="News" TagPrefix="OcTag" %>
    <%@ Register Src="~/officeportal/homepage/noteportlet.ascx" TagName="NotePortlet" TagPrefix="OcTag" %>
    <%@ Register Src="~/officeportal/homepage/groupBookmarks.ascx" TagName="GroupBookmarks" TagPrefix="OcTag" %>
    <%@ Register Src="~/officeportal/homepage/polls.ascx" TagName="Polls" TagPrefix="OcTag" %>
    <%@ Register Src="~/officeportal/homepage/announce.ascx" TagName="Announcement" TagPrefix="OcTag" %>
    <%@ Register Src="~/officeportal/homepage/taskportlet.ascx" TagName="TaskPortlet" TagPrefix="OcTag" %>
    <%@ Register Src="~/officeportal/homepage/upcomingevents.ascx" TagName="UpcomingEvents" TagPrefix="OcTag" %>
    <%@ Register Src="~/custom/API/Walkthru2/events.ascx" TagName="Calendar" TagPrefix="OcTag" %>

    <%@ Register Namespace="OfficeClip.CustomControl.Framework.UI" TagPrefix="OcTagCs"
     Assembly="OfficeClip.CustomControl" %>
    <%@ Register TagPrefix="OcTag" TagName="Menus" Src="~/officeportal/homepage/menus.ascx" %>
    <asp:Content ID="cont" runat="server" contentplaceholderid="a">
    ................
    ................
    ................
     <asp:WebPartZone ID="leftZone" runat="server"
        HeaderText="Portlets Zone - Left"
        CloseVerb-Description="Close this Portlet"
        MinimizeVerb-Description="Minimize this Portlet"
        RestoreVerb-Description="Restore this Portlet"
        HelpVerb-Description="Get help on this portlet"
        DeleteVerb-Description="Remove this portlet"
        EmptyZoneText="Add a portlet to this zone by dragging the title and dropping it here">
        <ZoneTemplate>
             <OcTag:WhatsNew id="PortletWhatsNew" Title="What's New"
                Description="Shows what is new in OfficeClip" runat="server" />
             <OcTag:BusinessCenter id="BusinessCenter" Title="Business Center"
             Description="Provides a few web links useful for daily business" runat="server" />
             <OcTag:News id="News" Title="News" runat="server" />
             <OcTag:GroupBookmarks id="GroupBookmarks" Title="Group Bookmarks"
             Description="Shows the bookmarks selected by the group" runat="server" />
             <OcTag:Announcement id="Announcement" Title="Announcement"
             Description="Shows Announcements for the current organization" runat="server" />
             <OcTag:UpcomingEvents id="UpcomingEvents" Title="Upcoming Events (next 7 days)"
             Description="Shows a list of upcoming events" runat="server" />
             <OcTag:Calendar id="Calendar" Title="OfficeClip Calendar"
             Description="Shows the monthly view calendar" runat="server" />
        </ZoneTemplate>
    ................
    ................
    ................

     --------------------------------------------------------------------------------------------------

The modified file is copied to c:\program files\officeclip\officeclip\custom\API\Walkthru2\homepage.aspx.


Adding the New Portlet Control

The new portlet control events.ascx, consists of two OfficeClip predefined controls. This shows the ease with which OfficeClip controls can be used to creare new portlets.

    File: c:\program files\officeclip\officeclip\custom\ODT\Walkthru4\events.ascx
    ---------------------------------------------------------------------------------------------------
    <%@ Control Language="c#" Debug="true" Inherits="OfficeClip.OfficePortal.HomePage.OcWebPartBase" ClassName="quickAddEventPortlet" EnableViewState="False"%>
    <%@ Register TagPrefix="OCTag" tagname="monthCalendar" src="~/calendar/monthCalendar.ascx" %>
    <table width="100%" cellspacing="0" cellpadding="0" border="1" bordercolor="#ffffff" ID="Table3">
    <tr>
        <td>
          <OCTag:monthCalendar id="monthCal" runat="server"/>
        </td>
     </tr>
    </table>
    -------------------------------------------------------------------------------------------------


Activating the New Portlet

There are few more steps to activate the portlet:

  • Do an iisreset on the server.
  • Login to OfficeClip, Click on "Office Portal", then click on "Manage Portlets", move the portlet to the top of the page.


5. Creating Reports Using The Crystal Reports Engine

3. Creating reports using the Crystal Reports Engine

This walkthrough explains the creation of an embedded OfficeClip report using the Crystal reporting engine. Crystal Reports runtime is packaged with the OfficeClip. However, the report designer is not included. Reports can be created using the Visual Studio.Net or the Crystal Report Designer 10 or higher.

This walkthrough provides a simple example that shows the name and email address of all OfficeClip members.

Crystal provides a number of ways to create report. OfficeClip reports can be generated by creating a ADO.Net dataset. This walkthrough shows how to create such a dataset using the OfficeClip database on Visual Studio.Net. Same principle can be applied to create reports on any other platform including the Crystal Designer.

The following steps need to be followed to create the report from scratch:

  • Changing the custom.xml
  • Importing the dataset in the report designer and creating the report.
  • Configuring the report xml file.

Following are the files required by the walkthrough:

  • custom/API/walkthru3/customreports.xml - This replaces the generic custom report screen in the time and expense reporting module and adds one more option on the screen for custom reporting.
  • custom/API/walkthru3/MemberD.xsd - A new dataset to create a report to print members.
  • custom/API/walkthru3/MemberR.rpt - A new report to print member.

The final report will look similar to this:

This report can be seen by going to the custom report section of the Expense application.


Modify the Custom Structure

For this walkthrough, we will need to modify the c:\program files\officeclip\7\officeclip\custom\custom.xml so that the changes made can easily be taken out without affecting the rest of the code.

Follow these steps to make changes to the custom structure:

  1. Navigate to c:\program files\officeclip\7\officeclip\custom\API\Walkthru3.
  2. Note the following line of the c:\program files\officeclip\7\officeclip\custom\custom.xml file:
    <custom id="1021" in="APP_Data/Reports/expense.xml" out="custom/API/walkthru3/expense.xml" active="N" />
To activate this walkthrough we will need to change the active property to Y.


Reports Definition File

reports.xml file provides a definition of the column heading, report filter, report file and the Sql query. It also provides some other configuration information such as whether this report should be available across all the groups in OfficeClip or only to a specific number of groups.

This file is copied and modified from the file c:\program files\officeclip\7\officeclip\APP_DATA\reports\expense.xml

  1. Navigate to the file c:\program files\officeclip\7\officeclip\custom\API\walkthru3\expense.xml.

  2. This file contains the following:

  <report id="10022" path="custom/API/Walkthru3/" name="MemberR.rpt"
        program="te/expense/reports/custom/none.aspx"
        dataset="temp" category="customExpense" subcategory="Expense Report - Custom">
    <title>
      Member List
    </title>
    <description>
      Gets a list of OfficeClip members.
    </description>
    <col1>Name</col1>
    <col2>Email</col2>
    <GroupPermission value="-1" />
    <sql>
      <![CDATA[
      select (u.first_name + ' ' + u.last_name) AS Name,
      u.email_address as Email
      FROM users u, usergroups ug
      WHERE u.user_id = ug.user_id
      AND u.active = 'Y'
      AND is_external = 0
      AND ug.group_id = :groupId
     ]]>
    </sql>
  </report>
Note the arguments are specified as :arg1, :arg2 etc. These arguments are supplied by the filter described in the previous section.


Create report structure

The report structure consists of the ADO.Net dataset and the crystal reports file. This walkthrough assumes that you have Visual Studio.Net with the crystal designer installed in your computer. You can use a similar method if you are doing your design using the Crystal Reports native designer.

  1. Using Visual Studio.Net create a ADO.Net dataset with one table and two columns: Name (string) and Email (string). This file is supplied as c:\program files\officeclip\7\officeclip\custom\API\Walkthru3\MemberD.xsd .
  2. On the Solution window add a new file with type crystal report. Right click on the report window and select "Database Expert..." from the Database menu. Now expand the "Create New Connection" and double click on "Database Files". Select the MemberD.xsd file that you created in the above step. Now add the two fields under Section 3(Details). Save the report file.
The report will now be visible in OfficeClip at Expense -> Report -> Expense Tracking -> Expense REport -Custom