<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://customerfx.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">George Jensen&amp;#39;s Blog</title><subtitle type="html">George Jensen on Reporting, Business Intelligence, Crystal Reports, Visual Analyzer, and more.</subtitle><id>http://customerfx.com/pages/reporting/atom.aspx</id><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/default.aspx" /><link rel="self" type="application/atom+xml" href="http://customerfx.com/pages/reporting/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20611.960">Community Server</generator><updated>2010-05-04T10:36:00Z</updated><entry><title>SalesLogix Web Form Designer</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2012/11/15/saleslogix-web-form-designer.aspx" /><id>http://customerfx.com/pages/reporting/2012/11/15/saleslogix-web-form-designer.aspx</id><published>2012-11-15T17:28:00Z</published><updated>2012-11-15T17:28:00Z</updated><content type="html">&lt;p&gt;New to the Sage SalesLogix v8.0 Web Client is the Web Form Designer. This tool will allow a user, with a proper role assignment, the ability to modify main entity forms in the the web client using existing database fields. Here is a quick introduction to the tool from Customer FX. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;For this demo I am using a Sage SalesLogix v8.0 RC3 Web Client with an evaluation database set up in the Cloud.&amp;nbsp; I found the information on this tool using the SalesLogix 8.0 Web Client Help Files with the key word search of&amp;nbsp;&lt;b&gt; &amp;quot;Working with Forms&amp;quot;&lt;/b&gt;.&amp;nbsp; The number one listing in the results are will be &amp;quot;Working with Forms&amp;quot;. I found these files extremely helpful and accurate while I learned to use this tool.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;In order to use this tool you must be logged in as the Admin user or a User assigned to the role of &amp;quot;Administrator&amp;quot;. I set our user Lee Hogan up in my system with the Administrator Role.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/WFD_ROLE.PNG"&gt;&lt;img src="http://customerfx.com/blogs/reporting/WFD_ROLE.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;There are two ways to bring up the Web Form Designer tool.&amp;nbsp; The first is to go through the Administration Navigation panel and find the Form Manager icon:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/WFD_FormManager.PNG"&gt;&lt;img src="http://customerfx.com/blogs/reporting/WFD_FormManager.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;This icon opens the Web Form Manager with a list of all forms in the system that are editable:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/WFD_FormManager1.PNG"&gt;&lt;img src="http://customerfx.com/blogs/reporting/WFD_FormManager1.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Using this area, if you select the form you want to edit it will display in the Web Client ready for editing.&lt;/p&gt;&lt;p&gt;The better option is to use the icon that you will find on the tool bar of the form that you want to edit.&amp;nbsp; This option opens the form in another browser window separate from the Web Client. &amp;nbsp; For example navigate to an Account record in the Web Client.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/WFD_AccountRec.PNG"&gt;&lt;img src="http://customerfx.com/blogs/reporting/WFD_AccountRec.PNG" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;If you look just to the left of the &lt;a href="http://customerfx.com/blogs/reporting/WFD_Help.PNG"&gt;&lt;img src="http://customerfx.com/blogs/reporting/WFD_Help.PNG" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp; Help button in the upper right hand corner of the view you will see the Form Manager icon (Shown Earlier).&amp;nbsp; Select this icon while holding down your &amp;quot;Ctrl&amp;quot; key and the Account Detail form opens in the Web Form Designer in a separate window.&lt;/p&gt;&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/WFD_ACCOUNTDetail.PNG"&gt;&lt;img src="http://customerfx.com/blogs/reporting/WFD_ACCOUNTDetail.PNG" border="0" height="373" width="1010" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;Here you can modify the form as described in the SalesLogix help file.&lt;br /&gt;&lt;br /&gt;&lt;ul style="margin-top:0em;margin-bottom:0em;list-style-type:disc;font-family:Verdana, Tahoma, Arial;font-size:small;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;orphans:2;text-align:left;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;li style="font-size:inherit;font-family:inherit;margin-top:6pt;list-style-type:inherit;"&gt;Change captions&lt;a class="" name="kanchor5"&gt;&lt;/a&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;and other control properties&lt;/li&gt;&lt;li style="font-size:inherit;font-family:inherit;margin-top:6pt;list-style-type:inherit;"&gt;Move and hide controls&lt;/li&gt;&lt;li style="font-size:inherit;font-family:inherit;margin-top:6pt;list-style-type:inherit;"&gt;Add controls (Add data fields to a&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="highlight" style="font-weight:bold;"&gt;&lt;span class="SearchHighlight3"&gt;&lt;span class="highlight" style="font-weight:bold;"&gt;&lt;span class="SearchHighlight3"&gt;form&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;)&lt;/li&gt;&lt;li style="font-size:inherit;font-family:inherit;margin-top:6pt;list-style-type:inherit;"&gt;Change&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="highlight" style="font-weight:bold;"&gt;&lt;span class="SearchHighlight3"&gt;&lt;span class="highlight" style="font-weight:bold;"&gt;&lt;span class="SearchHighlight3"&gt;form&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, row, and column properties&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;A couple of words of caution before you start to modify the form:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Only existing fields are available.&amp;nbsp; You cannot add custom fields through this tool. You need to have some experience working with the SalesLogix Database Manager and the Application Architect in order to add custom fields into the SalesLogix database and have them available in the Web.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can make any change you like to this form and it will not effect your the production system &lt;b&gt;until you save it&lt;/b&gt;.&amp;nbsp; Feel free to rearrange and add fields, if you do not like what you see just select your F5 key and the screen will go back to the original configuration. &lt;b&gt;Once you save the change the form is immediately released to production system and will be visible to all of your users.&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;If you save the form and there is a field that you do not want to have on the form, your only option though this tool is to make the field not visible.&amp;nbsp; You can go into the Application Architect and delete the field but you should know what you are doing before attempting that course of action.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;On the extreme right of my screen shot you will see the list of existing fields that are available. Lets add USERFIELD1 to the Account Detail form to collect the Accounts AKA (Also Know As) value. &lt;/p&gt;&lt;p&gt;We need to make room for the field on the form.&amp;nbsp; Right click on the form content and a menu will come up with the selection of &amp;quot;Add Column&amp;quot; or &amp;quot;Add Row&amp;quot;, there will also be placement sub menu options.&amp;nbsp; I will select &amp;quot;Add Row&amp;quot; and&amp;nbsp; &amp;quot;Below&amp;quot;.&lt;/p&gt;&lt;p&gt;For my example I want to add USERFIELD1 just below my Division field.&amp;nbsp; I will arrange my screen layout and move the address block to the bottom of the column. &lt;br /&gt;&lt;/p&gt;&lt;p&gt;From the &amp;quot;Add Field&amp;quot; list on the right I will select &amp;quot;USERFIELD1 and drag it onto the form in the space above the address block.&lt;/p&gt;&lt;p&gt;The field is now on the form and labeled User Field 1.&amp;nbsp; To the change the label, click on the new field, below the form you will see a properties area with three tabs, select the &amp;quot;Basic&amp;quot; tab, look for the &amp;quot;Caption&amp;quot; property, now enter your new label -&amp;quot;AKA:&amp;quot;&lt;/p&gt;&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/WFD_ACCOUNTDetail2.PNG"&gt;&lt;img src="http://customerfx.com/blogs/reporting/WFD_ACCOUNTDetail2.PNG" border="0" height="497" width="985" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;To release this change select the Save button and refresh the Web Client - The field appears!&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/WFD_AccountRec1.PNG"&gt;&lt;img src="http://customerfx.com/blogs/reporting/WFD_AccountRec1.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Very cool.&lt;/p&gt;&lt;p&gt;OK, I know all of the System Administrators are asking &amp;quot;What if I update the form through the Application Architect, will I over write this change?&amp;quot;&amp;nbsp; &lt;/p&gt;&lt;p&gt;I went into the Application Architect with the same concern. &amp;quot;Never fear, the change is here&amp;quot;&amp;nbsp; &lt;a href="http://customerfx.com/blogs/reporting/wfd_ud.PNG"&gt;&lt;img src="http://customerfx.com/blogs/reporting/wfd_ud.PNG" border="0" alt="" /&gt;&lt;/a&gt;&lt;img src="http://customerfx.com/controlpanel/blogs/data:image/png;base64,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" alt="" /&gt;&lt;/p&gt;&lt;p&gt;Again - very coo! &lt;/p&gt;&lt;p&gt;A couple of additional notes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;This tool does not replace the Application Architect. You cannot create new forms or modify custom forms and there is no way of adding code.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You cannot modify a list view like the Account Contacts, the icon is there but the fields that display are Account layer fields without reference to the contact layer.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Have fun using this great addition to the SalesLogix Web Client!&lt;/p&gt;&lt;p&gt;George &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=45968" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Customer FX" scheme="http://customerfx.com/pages/reporting/archive/tags/Customer+FX/default.aspx" /><category term="SalesLogix Web" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Web/default.aspx" /><category term="Customizations" scheme="http://customerfx.com/pages/reporting/archive/tags/Customizations/default.aspx" /></entry><entry><title>Working with the Picture Object in Crystal</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2012/08/17/working-with-the-picture-object-in-crystal.aspx" /><id>http://customerfx.com/pages/reporting/2012/08/17/working-with-the-picture-object-in-crystal.aspx</id><published>2012-08-17T17:16:00Z</published><updated>2012-08-17T17:16:00Z</updated><content type="html">&lt;p&gt;We have had several inquires lately on how to dynamically change&amp;nbsp;images in a report based on report data.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For example you have pictures of products that you want to display in a report.&amp;nbsp; One way to accomplish this&amp;nbsp;is to add an image&amp;nbsp;with&amp;nbsp;each&amp;nbsp;product in a huge segmented report and have&amp;nbsp;Crystal&amp;nbsp;sort things out through suppression rules.&amp;nbsp; This is a valid solution but the report is going to become very unmanageable as your inventory grows and than changes.&amp;nbsp; The best case is to store the picture in a central folder and call the&amp;nbsp;image into your report based on the data.&lt;/p&gt;
&lt;p&gt;With SalesLogix you have the ability to store attachments to records which can be be documents, spreadsheets, pdf&amp;#39;s,&amp;nbsp;or pictures.&amp;nbsp; This provides a perfect area for managing images.&amp;nbsp; But - the standard Products area in SalesLogix does not have the attachment capability.&lt;/p&gt;
&lt;p&gt;I came up with an easy work around that will allow you to create a&amp;nbsp;Product Report that displays the correct picture that you maybe able to relate to a report that you are working on.&lt;/p&gt;
&lt;p&gt;I am using&amp;nbsp;the evaluation database&amp;nbsp;for a SalesLogix version 7.5.4 system.&amp;nbsp; This database is&amp;nbsp;owned by a company called &amp;quot;Phoenix Computers, Inc.&amp;quot;&amp;nbsp;&amp;nbsp;and comes with product records we can use for our example.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/products.JPG"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/products.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first thing I need is some pictures of some of the products.&amp;nbsp; I searched on&amp;nbsp;Google Images for photos of a some common products that are already in the database.&amp;nbsp; I found images for the&amp;nbsp; &amp;quot;BlackBerry&amp;quot;, the &amp;quot;Dell Latitude&amp;quot;, the &amp;quot;Dell Optiplex&amp;quot;, and the&amp;nbsp;&amp;quot;MacBook Pro&amp;quot;.&amp;nbsp; The pictures are all stored as .jpg&lt;/p&gt;
&lt;p&gt;I went to the Phoenix Computers, Inc account record and added the pictures to the Attachment Tab.&amp;nbsp; You could also create a dummy account for this purpose if you want but&amp;nbsp;whereever you decide to put the attachment we will need the record name.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/attachments.JPG"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/attachments.JPG" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Above are the images in the attachment tab, notice the&amp;nbsp;file description (Attachment column)&amp;nbsp;matches the Product Name.&lt;/p&gt;
&lt;p&gt;Now we can build the report.&amp;nbsp; Open up Crystal and make your &lt;a title="make your connection " href="http://customerfx.com/pages/reporting/2010/11/16/crystal-connection-through-the-saleslogix-ole-db-provider.aspx" target="_blank"&gt;connection &lt;/a&gt;to the database.&amp;nbsp;&amp;nbsp;In the base report I am just going to pull in the PRODUCT.NAME and PRODUCT.FAMILY fields.&amp;nbsp;&amp;nbsp;For the purpose of this report I am going to set the Record Selection formulas to {PRODUCT.NAME} in [&amp;quot;BlackBerry&amp;quot;,&amp;quot;Dell Latitude&amp;quot;,&amp;quot;Dell Optiplex&amp;quot;, &amp;quot;MacBook Pro&amp;quot;] which&amp;nbsp;are our target products.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/report2.JPG"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/report2.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;I am going to add two sub reports. The first is for pricing which will use the PRODUCTPROGRAM table.&amp;nbsp; I&amp;nbsp;will link the sub report to the&amp;nbsp;base report using the PRODUCT.PRODUCTID (base) and PRODUCTPROGRAM.PRODUCTID (sub report).&amp;nbsp; For&amp;nbsp;this example I&amp;nbsp;brought in the PROGRAM and PRICE fields.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/Report3.JPG"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Report3.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The second sub report will be the one that contains the picture.&amp;nbsp; The ATTACHMENT table is the primary table for this sub report&amp;nbsp;and stores all attachment data for the entire database so to help&amp;nbsp;narrow down the data&amp;nbsp;I will include the ACCOUNT table. Using the ACCOUNT.ACCOUNT field we&amp;nbsp;can create a record selection&amp;nbsp;formula that limits the Attachments to the Account record where I am storing the images.&amp;nbsp; Here is that formula:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000cc"&gt;&amp;nbsp;{ACCOUNT.ACCOUNT} = &amp;#39;Phoenix Computers, Inc.&amp;#39;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;next&amp;nbsp;step in this report is to make formula field that provides the path to the Images&amp;nbsp;using the&amp;nbsp;data in&amp;nbsp;the Attachment table.&amp;nbsp; The&amp;nbsp;ATTACHMENT.DESCRIPTION&amp;nbsp;field gives us the name of the image as we entered and is the link we will use to match to the image to the records in the Product table.&amp;nbsp; The other field is the ATTACHMENT.FILENAME fields&amp;nbsp;which provides the unique name SalesLogix gave the image when we entered it into the database.&amp;nbsp;&amp;nbsp;The images are really stored in a shared foler and the path for the&amp;nbsp;folder is set in the SalesLogix Administrator under the Systems/Office tab.&amp;nbsp; If you double click on your&amp;nbsp;office name&amp;nbsp;in the list you will get the following screen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/system.JPG"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/system.JPG" width="773" height="486" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At the bottom you find the Attachment Folder path.&amp;nbsp; You will also need the name of the server&amp;nbsp;where the folder is located.&amp;nbsp; For my example I have a server name of w2003-dts.&amp;nbsp; With this information I am able to&amp;nbsp;create a formula field called &amp;quot;Path&amp;quot;.&lt;/p&gt;
&lt;p&gt;The formula inside the field is (using my example) : &amp;#39;&lt;font color="#0000cc"&gt;\\w2003-DTS\Sage_SalesLogix_Demonstration_Tools\Demo_Database\Documents\&amp;#39;+{ATTACHMENT.FILENAME}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Next go to the Crystal Insert menu and select &amp;quot;Picture&amp;quot; from the list that appears.&amp;nbsp; Immediately a search box comes up which will allows you&amp;nbsp;to search for a default image.&amp;nbsp; This default will display when the report cannot find an image at the path you provided.&amp;nbsp; I like to use a screen shot with a white background and the text of &amp;quot;Picture Not Available&amp;quot;.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Place this picture in the details section of the sub report.&amp;nbsp; Than, suppress all other section of the report.&amp;nbsp; Here is what my &amp;quot;picture&amp;quot; sub report looks like so far.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;a href="http://customerfx.com/blogs/reporting/Report4.JPG"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Report4.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now, to get the correct picture&amp;nbsp;to display based on the product name listed in the report, right click on the image and select &amp;quot;Format Graphic&amp;quot; from the list that appears.&amp;nbsp; Navigate to the Picture Tab and find the field labeled &amp;quot;Graphic&amp;quot; toward the bottom of the tab and&amp;nbsp;select the button to the right,&amp;nbsp;the Formula Workshop Editor appears.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/path.JPG"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/path.JPG" width="827" height="422" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Double click on the formula field labeled &amp;quot;Path&amp;quot;, Save and Close the editor.&lt;/p&gt;
&lt;p&gt;Finally we need make the link to the base report.&amp;nbsp; If you remember we described each attachment with name of the product it represents.&amp;nbsp; This allows us to match the data in the sub report to the main report using&amp;nbsp;PRODUCT.NAME (Base) to the ATTACHMENT.DESCRIPTION (Sub-Report).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When I run my report I see the&amp;nbsp;images are displaying next to the product information.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/rpt.JPG"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/rpt.JPG" width="672" height="667" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So, by using just one&amp;nbsp;picture&amp;nbsp;object we are&amp;nbsp;able to call&amp;nbsp;different images and match them to correct product. &lt;/p&gt;
&lt;p&gt;Very cool.&amp;nbsp; Thanks for reading!&lt;/p&gt;
&lt;p&gt;geo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=45827" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /></entry><entry><title>CFX Reports Are Updated</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2012/07/27/cfx-reports-are-updated.aspx" /><id>http://customerfx.com/pages/reporting/2012/07/27/cfx-reports-are-updated.aspx</id><published>2012-07-27T17:51:00Z</published><updated>2012-07-27T17:51:00Z</updated><content type="html">&lt;p&gt;I am very happy to back after 19 months of Military leave.&amp;nbsp; One of my first tasks upon returning to my desk was to clean up&amp;nbsp;my Customer FX email inbox that was full&amp;nbsp;with a about 4,000 new emails, mostly&amp;nbsp;automatic notifications from various resources.&amp;nbsp;&amp;nbsp;What surprised me the most was the number of download notifications&amp;nbsp;from Box.net which is where we store all of the SalesLogix reports that were refreshed through this blog.&amp;nbsp; Seeing that these reports are still being downloaded and with Sage SalesLogix (SLX)&amp;nbsp;currently at 7.5.4&amp;nbsp;with the release of&amp;nbsp;8.0 just around the corner, I thought I should take a look at all of the reports and ensure they are still working.&amp;nbsp; I set up a SLX 7.5.4 test environment and reviewed each report one by one.&amp;nbsp; Most of them worked just fine but I did find somethings to adjust on 9 of the reports.&amp;nbsp; &lt;/p&gt;&lt;p&gt;Use this&lt;a href="http://customerfx.com/pages/cfxproducts/2009/04/13/free-saleslogix-reports.aspx" target="_blank"&gt; link&lt;/a&gt;&amp;nbsp;as a guide to&amp;nbsp;all of our updated reports.&amp;nbsp; The ones that were updated are marked by the words &lt;strong&gt;Updated 07/20/2012.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I will share some of the things I learned while doing this review&amp;nbsp;during the next few weeks.&lt;/p&gt;&lt;p&gt;Thanks Geo&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=45792" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="Crystal Reports" scheme="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx" /><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /></entry><entry><title>Setting up a date range parameter and displaying it in the report</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2011/07/06/Setting-up-a-date-range-parameter-and-displaying-it-in-the-report.aspx" /><id>http://customerfx.com/pages/reporting/2011/07/06/Setting-up-a-date-range-parameter-and-displaying-it-in-the-report.aspx</id><published>2011-07-06T20:20:00Z</published><updated>2011-07-06T20:20:00Z</updated><content type="html">&lt;p&gt;In a recent report, I needed to return data based on a date range selected.&amp;nbsp; That&amp;#39;s easy enought to put in... you just create a new Parameter field, set the type to &amp;quot;Date&amp;quot; and make sure the &amp;quot;Allow range vales&amp;quot; option i set to true.&amp;nbsp; With the parameter field created, you need to add a record select formula that reads like this...&lt;/p&gt;&lt;p&gt;&lt;i&gt;(TABLENAME.DATEFIELD) = {?DateRange Parameter)&lt;/i&gt; &lt;/p&gt;&lt;p&gt;...and all the records returned will be in that date range.&lt;/p&gt;&lt;p&gt;I also needed to display that range value in the report, which took a little digging to figure out.&amp;nbsp; All you need to do is to create a Formula field with the following code:&lt;/p&gt;&lt;i&gt;WhilePrintingRecords;&lt;br /&gt;&lt;br /&gt;DateTimeVar date1;&lt;br /&gt;DateTimeVar date2;&lt;br /&gt;&lt;br /&gt;date1:=Minimum({?&lt;/i&gt;&lt;i&gt;DateRange Parameter&lt;/i&gt;&lt;i&gt;});&lt;br /&gt;date2:=Maximum({?&lt;/i&gt;&lt;i&gt;DateRange Parameter&lt;/i&gt;&lt;i&gt;});&lt;br /&gt;&lt;br /&gt;totext(Date(date1)) + &amp;quot; and &amp;quot; + totext(Date(date2))&lt;/i&gt;&lt;p&gt;&amp;nbsp;Then all you need to do is slap that formula field somewhere on the report, and it will display the date range selected in the parameter.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Thanks for reading!&amp;nbsp; I hope you found this helpful!&lt;/p&gt;&lt;p&gt;Jason &lt;br /&gt;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=45003" width="1" height="1"&gt;</content><author><name>Jason Buss</name><uri>http://customerfx.com/members/Jason-Buss.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="Crystal Reports" scheme="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx" /><category term="How To" scheme="http://customerfx.com/pages/reporting/archive/tags/How+To/default.aspx" /></entry><entry><title>Supressing the blank page after "New Page After" Group Footer setting</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2011/06/08/supressing-the-blank-page-after-new-page-after-group-footer-setting.aspx" /><id>http://customerfx.com/pages/reporting/2011/06/08/supressing-the-blank-page-after-new-page-after-group-footer-setting.aspx</id><published>2011-06-08T15:59:00Z</published><updated>2011-06-08T15:59:00Z</updated><content type="html">&lt;p&gt;I&amp;#39;ve worked with Crystal for some time, but there&amp;#39;s always been one little thing that sort of bothered me, and I had never took the time to figure out how to deal with it.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you have a group in your report, and want to start a new page after each grouping, you end up with a blank page at the end of the report.&amp;nbsp; To get rid of this blank page, all you need to do is to add a simple script to the New Page After property of the group footer:&lt;/p&gt;&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/CR%20Selection%20Expert.JPG"&gt;&lt;img src="http://customerfx.com/blogs/reporting/CR%20Selection%20Expert.JPG" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;As you can see, we are on the group footer.&amp;nbsp; In the selection expert, check the New Page After property and then click it&amp;#39;s formula button.&amp;nbsp; In the formula, you just need to compare the resident PageNumber variable with the TotalPageCount variable.&amp;nbsp; If they are equal, then you are on the last page and the page will suppress.&lt;/p&gt;&lt;p&gt;Specifically, add the following code: &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;PageNumber = TotalPageCount&lt;/i&gt; &lt;/p&gt;&lt;p&gt;And you should be good to go.&amp;nbsp; No more blank page at the end of the report!&lt;/p&gt;&lt;p&gt;I hope you find this tip helpful.&amp;nbsp; Thanks for reading!&lt;/p&gt;&lt;p&gt;&lt;a href="http://customerfx.com/pages/customization/default.aspx"&gt;Jason &lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=44942" width="1" height="1"&gt;</content><author><name>Jason Buss</name><uri>http://customerfx.com/members/Jason-Buss.aspx</uri></author><category term="Crystal Reports" scheme="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx" /><category term="How To" scheme="http://customerfx.com/pages/reporting/archive/tags/How+To/default.aspx" /></entry><entry><title>Setting custom date ranges in Crystal</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2011/05/27/Setting-custom-date-ranges-in-Crystal.aspx" /><id>http://customerfx.com/pages/reporting/2011/05/27/Setting-custom-date-ranges-in-Crystal.aspx</id><published>2011-05-27T12:07:00Z</published><updated>2011-05-27T12:07:00Z</updated><content type="html">&lt;p&gt;With George on deployment with the Minnesota National Guard, I&amp;#39;ll be occasionally posting on various reporting topics.&amp;nbsp; &lt;/p&gt;

&lt;p&gt;Recently, I had to develop a report which was to return data within a particular date range.&amp;nbsp; Specifically, a user would need to select a date and the report would then return data from a range of Monday of the previous week to Friday of the current week.&amp;nbsp; I was able to accomplish this fairly easily using Global and Local variables and a couple of different date functions.&lt;/p&gt;

&lt;p&gt;Basically, I needed to get the day of the week for the date selected, and then add or subtract days as necessary to come up with an appropriate number to use with a DateAdd function. All this is done in the record selection formula for the report:&lt;br /&gt;&lt;/p&gt;

&lt;table style="table-layout:fixed;width:600px;" cellpadding="0" cellspacing="0"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre&gt;Global DateVar sStartDate;
Global DateVar sEndDate;
Local NumberVar nDayOfWeek := DayOfWeek({?Date}); &lt;span style="color:Green;"&gt;//Determine the Day of the week selected.&lt;/span&gt;
Local NumberVar nAddStart;
Local NumberVar nAddEnd;
&lt;span style="color:Green;"&gt;//Determining the number of days to add to the Start Date&lt;/span&gt;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 1 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddStart := -6;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 2 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddStart := -7;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 3 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddStart := -8;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 4 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddStart := -9;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 5 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddStart := -10;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 6 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddStart := -11;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 7 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddStart := -12;
&lt;span style="color:Green;"&gt;//Determining the number of days to add to the &lt;span style="color:Blue;"&gt;End&lt;/span&gt; Date 
//(Note, Start and End date have to be done in separate If..Then blocks, otherwise it will not work)&lt;/span&gt;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 1 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddEnd := 5;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 2 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddEnd := 4;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 3 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddEnd := 3;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 4 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddEnd := 2;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 5 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddEnd := 1;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 6 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddEnd := 0;
&lt;span style="color:Blue;"&gt;If&lt;/span&gt; nDayOfWeek &lt;span style="color:Navy;"&gt;=&lt;/span&gt; 7 &lt;span style="color:Blue;"&gt;Then&lt;/span&gt;
    nAddEnd := -1;
//&lt;span style="color:Green;"&gt;With the number of days to add/subtract to both dates determined, I use the DateAdd function to return the correct
//Start and End Dates&lt;/span&gt;
sStartDate := Date(Year({?Date}), Month({?Date}), Day(DateAdd(&lt;span style="color:Green;"&gt;&amp;#39;d&amp;#39;, nAddStart, {?Date})));
&lt;/span&gt;sEndDate := Date(Year({?Date}), Month({?Date}), Day(DateAdd(&lt;span style="color:Green;"&gt;&amp;#39;d&amp;#39;, nAddEnd, {?Date})));
&lt;/span&gt;
//&lt;span style="color:Green;"&gt;Finally, I use the new dates in the selection criteria.&lt;/span&gt;
{History.completeddate} &amp;gt;= sStartDate &lt;span style="color:Blue;"&gt;and&lt;/span&gt;
{History.completeddate} &amp;lt;= sEndDate  &lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;Pretty straight-forward, I think.&amp;nbsp; Depending on your situation, it would just be a matter of figuring out your range and what values to add or subtract to the current date value.&amp;nbsp; &lt;/p&gt;&lt;p&gt;I hope you find this helpful... Thanks for reading!&lt;/p&gt;&lt;p&gt;&lt;a href="http://customerfx.com/pages/customization/default.aspx" title="The customization blog"&gt;Jason &lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
&lt;br /&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=44895" width="1" height="1"&gt;</content><author><name>Jason Buss</name><uri>http://customerfx.com/members/Jason-Buss.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="Development" scheme="http://customerfx.com/pages/reporting/archive/tags/Development/default.aspx" /><category term="How To" scheme="http://customerfx.com/pages/reporting/archive/tags/How+To/default.aspx" /></entry><entry><title>Leveling out Users Data. </title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/12/01/leveling-out-user-data.aspx" /><link rel="enclosure" type="text/plain" length="2144" href="http://customerfx.com/pages/reporting/attachment/44080.ashx" /><id>http://customerfx.com/pages/reporting/2010/12/01/leveling-out-user-data.aspx</id><published>2010-12-01T14:00:00Z</published><updated>2010-12-01T14:00:00Z</updated><content type="html">&lt;p&gt;I am four posts into building a drill down report using Sage SalesLogix Visual Analyzer and Dashboard as a my&amp;nbsp;guide.&amp;nbsp; This series of post starts with a post labeled &amp;quot;&lt;a href="http://customerfx.com/pages/reporting/2010/10/27/updated-managed-quota-area.aspx" target="_blank"&gt;Updating the Managed Quota Area for Sage SalesLogix&lt;/a&gt;&amp;quot;&amp;nbsp;, if you follow the links on each post&amp;nbsp;you will eventually end up back on this post.&amp;nbsp;In the last post we started building our report which gave us our performance numbers for comparison. Today, we are going to go back into SQL Server Management Studio and build a view that will allow us to level out all of the user related data.&amp;nbsp; This will allow us to display in one group&amp;nbsp;the Accounts, Contacts, Opportunity, Ticket, History, and Activity data related to the user.&lt;/p&gt;
&lt;p&gt;What we will use to bring all of this data together from six different tables is a well designed&amp;nbsp;SQL view that uses&amp;nbsp;a Union join.&amp;nbsp; This join allows you to combine data from several select statements into one view.&amp;nbsp; The key to a union join&amp;nbsp;is each Select statement has&amp;nbsp;the same number of columns labeled in the exact same order.&amp;nbsp;&amp;nbsp;So what columns do we need in our view?&amp;nbsp; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;An&amp;nbsp;obvious answer is a way to relate each of the records from the&amp;nbsp;previously mentioned tables to the user.&amp;nbsp; &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;There also should be a way to categorize the record to tell us what type of record we are creating.&amp;nbsp;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Thinking ahead,&amp;nbsp;I want to include a column&amp;nbsp;which will allow us to filter&amp;nbsp;our report by a data range.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;We need one column that will list each table primary id that will indicate a record does exist for the user and&amp;nbsp;will allow us to group the records under the category.&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Finally, we&amp;nbsp;will need a column for each of the table primary id, this will allow you to join to the table and show the detail from the record under the category group.&amp;nbsp; &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;So lets layout our columns:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;Category&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;FilterDate&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;UserId&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;EntityId&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;AccountId&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;ContactId&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;OpportunityId&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;TicketId&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;HistoryId&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;ActivityId&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The first step is to create the Account select Statement.&amp;nbsp; This is what I came up with:&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;Account&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Category&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;strong&gt;a&lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Filterdate&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;strong&gt;a&lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Userid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;strong&gt;a&lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;AccountId &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; EntityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;strong&gt;a&lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;AccountId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Contactid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; OpportunityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; TicketId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; HistoryId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ActivityId&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;from&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#006600"&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Accountid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; AccountManagerId as UserId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; CreateDate &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Filterdate &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sysdba&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Account&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt; a&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000" size="2"&gt;In the&amp;nbsp;&amp;quot;Select&amp;quot; part of our statement you see the list of our columns.&amp;nbsp; &amp;quot;Account&amp;quot; is the Category of the record, this will change as we go.&amp;nbsp; If you look at the prefix to each of the other columns you see an &amp;quot;&lt;strong&gt;a&lt;/strong&gt;&amp;quot;.&amp;nbsp; Go down and look at the&amp;nbsp;&amp;quot;From&amp;quot; portion of&amp;nbsp;the statement.&amp;nbsp; There you will see&amp;nbsp;an embedded SQL statement that organizes our data from the Account table in a manner&amp;nbsp;similar to a view.&amp;nbsp; We provide an alias to this set of data and call it &amp;quot;&lt;strong&gt;a&lt;/strong&gt;&amp;quot;.&amp;nbsp; Back up in the &amp;quot;Select&amp;quot; portion of our statement, if we could not derive supporting data out of our embedded SQL we simply added a blank value ( like &amp;#39;&amp;#39;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Contactid&lt;/font&gt;).&amp;nbsp; Notice one other thing, we&amp;nbsp;are using the AccountId twice once as the EntityId and once as the AccountId, this pattern will be followed through the process of creating our view.&lt;/font&gt;&lt;/p&gt;Here is what the Contact statement.&amp;nbsp;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;strong&gt;&amp;#39;Contact&amp;#39;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Category&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;strong&gt;c&lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;FilterDate&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;strong&gt;c&lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;userid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;strong&gt;c&lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;strong&gt;Contactid&lt;/strong&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; EntityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;strong&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; AccountId&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;strong&gt;c&lt;/strong&gt;&lt;/font&gt;&lt;strong&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Contactid&lt;/font&gt;&lt;/strong&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; OpportunityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; TicketId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; HistoryId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ActivityId&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;from&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ContactId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; AccountManagerId &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; userid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; CreateDate &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; filterdate &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sysdba&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;strong&gt;Contact&lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;strong&gt;c&lt;/strong&gt; &lt;/p&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;I bolded the changes that differ from the Account set of data.&amp;nbsp; All of the column headings are the same but &amp;quot;Contact&amp;quot; is now the Category,&amp;nbsp; the prefix for each field is now &amp;quot;&lt;strong&gt;&lt;font color="#0000ff"&gt;c&lt;/font&gt;&lt;/strong&gt;&amp;quot;, the Contact is now our target table in the embedded SQL Statement where we are getting are data from, and ContactId now is the EntityId and is populating the ContactId column.&amp;nbsp; Also, notice that Accountid is pulling in blank value. &lt;/p&gt;
&lt;p&gt;In the SQL view we are building, the word &amp;quot;Union&amp;quot; separates the two select statements.&amp;nbsp; See how this is done below and compare the two scripts.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Select&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;Account&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Category&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; a&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Filterdate&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; a&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Userid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; a&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;AccountId &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; EntityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; a&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;AccountId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Contactid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; OpportunityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; TicketId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; HistoryId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ActivityId&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;from&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#006600"&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Accountid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; AccountManagerId as UserId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; CreateDate &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Filterdate &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sysdba&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Account&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt; a&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;UNION&amp;nbsp;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Select&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;Contact&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Category&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; c&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;FilterDate&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; c&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;userid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; c&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Contactid &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; EntityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; AccountId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; c&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Contactid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; OpportunityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; TicketId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; HistoryId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ActivityId&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;from&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ContactId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; AccountManagerId &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; userid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; CreateDate &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; filterdate &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sysdba&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Contact&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt; c&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;I am aware that the embedded SQL might be a&amp;nbsp; little over kill for my Account and Contact examples.&amp;nbsp; You could&amp;nbsp;also have the &amp;quot;From&amp;quot; portion of the statement&amp;nbsp;looking&amp;nbsp;like this &lt;font color="#0000ff"&gt;&amp;quot; From sysdba.Account a&amp;quot;&lt;/font&gt;&amp;nbsp; The embedded SQL allows you to build&amp;nbsp;and organize your data in support of the main select statement.&amp;nbsp; Take a look at the example below using the Opportunity portion of the view:&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;Opportunity&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Category&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; o&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Filterdate&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; o&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;userid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; o&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;opportunityId &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; EntityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; AccountId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Contactid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; o&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;opportunityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; TicketId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; HistoryId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ActivityId&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;from&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; OpportunityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; AccountManagerId &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; UserID&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;strong&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Case&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;when&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sysdba&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Opportunity&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Status &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;Closed - Won&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;or&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sysdba&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Opportunity&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Status &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;Closed - Lost&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;then&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ActualClose &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;else&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; DateOpened &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;end&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Filterdate&lt;/p&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt; sysdba&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Opportunity&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff"&gt; o&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;The bold here shows you the basic difference to what we have been doing so far.&amp;nbsp; Here I&amp;nbsp;have&amp;nbsp;used a Case statement to help me set the Filterdate based on Opportunity Status.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Below you find the statement for Ticket:&lt;/p&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;Ticket&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Category&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; t&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Filterdate&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; u&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;userid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;t&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;TicketId &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; EntityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; AccountId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; Contactid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; OpportunityId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; t&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;TicketId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; HistoryId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;&amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ActivityId&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;from&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ui&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;userid&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;nbsp;sc&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;seccodeid&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sysdba&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;userinfo ui &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;inner&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sysdba&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Seccode sc &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;ui&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;lastname &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;+&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;, &amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;+&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;ui&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;firstname&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sc&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;seccodedesc&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; u &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Inner&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;join&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;font color="#0000ff"&gt;(&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Select&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; TicketId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; AssignedToId&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ASSIGNEDDATE &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; filterdate &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;from&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; sysdba&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;Ticket&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;as&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; t &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;on&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; u&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;seccodeid &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; t&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;AssignedToId&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;This one is a Little more difficult because I want to only bring in Tickets that are assigned to the user.&amp;nbsp; Since Tickets can be assigned to either a User or a Team we have to figure away of relating&amp;nbsp;back to the user.&amp;nbsp; Instead of the UserInfo table we have to reference the SECCODE table.&amp;nbsp; If you did a query against the table you would discover that all users have a SECCODEID assigned to them and this is what is being stored as the AssignedToId.&amp;nbsp; The SECCODEDESC actually lists the user name in &amp;quot;LastName, FirstName&amp;quot; format.&amp;nbsp;&amp;nbsp;I played around here a little bit and discovered that I could build a join using the UserInfo.Lastname and UserInfo.Firstname in a formula to match against the SECCODE.SECCODEDEC field.&amp;nbsp; The formula&amp;nbsp;looks like this &lt;font color="#0000ff"&gt;(&lt;font size="2"&gt;ui&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;lastname &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;+&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;#39;, &amp;#39;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;+&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;ui&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;firstname&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;)&amp;nbsp; =&lt;font size="2"&gt; sc&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;seccodedesc.&amp;nbsp; &lt;font color="#000000"&gt;Doing this allowed me to then use the USERINFO.USERID to get the Assigned to user for&amp;nbsp;a Ticket.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;When I run the statement the&amp;nbsp;data looks like this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota024.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota024.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;I have attached the example I am using for my drill down report to this post.&lt;/p&gt;
&lt;p&gt;What we have accomplished might still be a little confusing to some of you but you will see the benefit in the next post where I will add this view to our Crystal Report and start to build our drill down.&amp;nbsp; We will see this style of view building one more time as we build the bottom level of the drill down.&lt;/p&gt;
&lt;p&gt;Thanks for Reading, Keep Smiling - Geo&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=44080" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="Crystal Reports" scheme="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx" /><category term="Views" scheme="http://customerfx.com/pages/reporting/archive/tags/Views/default.aspx" /><category term="SQL" scheme="http://customerfx.com/pages/reporting/archive/tags/SQL/default.aspx" /></entry><entry><title>Writing the User - Quota vs Actual Crystal Report.</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/11/23/writing-the-user-quota-vs-actual-crystal-report.aspx" /><link rel="enclosure" type="application/x-rpt" length="50688" href="http://customerfx.com/pages/reporting/attachment/44033.ashx" /><id>http://customerfx.com/pages/reporting/2010/11/23/writing-the-user-quota-vs-actual-crystal-report.aspx</id><published>2010-11-23T16:45:00Z</published><updated>2010-11-23T16:45:00Z</updated><content type="html">&lt;p&gt;Over the last three posts&amp;nbsp;we have &lt;a href="http://customerfx.com/pages/reporting/2010/10/27/updated-managed-quota-area.aspx" target="_blank"&gt;updated the Quota&amp;#39;s are of Sage SalesLogix&lt;/a&gt;, we&amp;nbsp;have built SQL views to collect both&amp;nbsp;the &lt;a href="http://customerfx.com/pages/reporting/2010/11/05/gathering-user-quotas-and-actual-numbers.aspx" target="_blank"&gt;Quota data&lt;/a&gt; and the&lt;a href="http://customerfx.com/pages/reporting/2010/11/10/gathering-actual-numbers.aspx" target="_blank"&gt; Actual Numbers&lt;/a&gt; for comparison.&amp;nbsp; Now we&amp;nbsp;will start writing our report.&amp;nbsp;&amp;nbsp;I am not going into to much detail on layout.&amp;nbsp;&amp;nbsp;My goal is to walk you through the common steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;connecting to the database&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;selecting our tables and views&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;establishing the group&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;adding the&amp;nbsp;fields to the report.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Since we know this report is going to grow we need to accomplish all of this in a manner that will support expansion. &lt;/p&gt;
&lt;p&gt;The first step in any report is making the connection.&amp;nbsp; When you select the &amp;quot;New Report&amp;quot; icon ( &lt;a href="http://customerfx.com/blogs/reporting/Quota023.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota023.jpg" alt="" /&gt;&lt;/a&gt;&amp;nbsp;)&amp;nbsp;located on the upper left hand corner of the Crystal interface, the Standard Report Creation Wizard will appear. I have two established posts that will talk you through the creation of connection to&amp;nbsp;a SalesLogix SQL database.&amp;nbsp; One labeled &lt;a href="http://customerfx.com/pages/reporting/2008/05/16/Report-Database-Connections.aspx" target="_blank"&gt;Report Database Connection&lt;/a&gt;&amp;nbsp;talks you through using the &amp;quot;Microsoft OLE DB&amp;nbsp;Provider for SQL Server&amp;quot; and recently published post labeled &lt;a href="http://customerfx.com/pages/reporting/2010/11/16/crystal-connection-through-the-saleslogix-ole-db-provider.aspx" target="_blank"&gt;Crystal Connection through the SalesLogix OLE DB Provider&lt;/a&gt;&amp;nbsp;talks you through using the&amp;nbsp;SalesLogix OLE DB Provider.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;With your connection to your database made and selected we are ready to select the tables and views we will need to support our report.&amp;nbsp; In the &amp;quot;Available Data Sources&amp;quot; tree control on the left you should find your connection.&amp;nbsp; Clicking on the plus (+)&amp;nbsp;sign to the right of your connection&amp;nbsp;will allow you drill down&amp;nbsp;and find a&amp;nbsp;value of&amp;nbsp;&amp;quot;sysdba&amp;quot;. Drilling into &amp;quot;sysdba&amp;quot;&amp;nbsp;are two more listings, one each&amp;nbsp;for Tables and for Views.&amp;nbsp; Under &amp;quot;Tables&amp;quot; find and select the UserInfo table.&amp;nbsp; Under &amp;quot;Views&amp;quot; you should&amp;nbsp;find your custom SQL views that we built for this report in the previous posts (&lt;a href="http://customerfx.com/pages/reporting/2010/11/05/gathering-user-quotas-and-actual-numbers.aspx" target="_blank"&gt;Quota data&lt;/a&gt; and the&lt;a href="http://customerfx.com/pages/reporting/2010/11/10/gathering-actual-numbers.aspx" target="_blank"&gt; Actual Numbers&lt;/a&gt;&amp;nbsp;).&amp;nbsp; My views are labeled CFX_UserPeriodReview_Goal and CFX_UserPeriodReview_Actual.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota017.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota017.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With your tables and view lets move on to linking the tables so our data flows correctly.&amp;nbsp;&amp;nbsp; Select the &amp;quot;Next&amp;quot; Button.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota020.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota020.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When the Link portion of the Standard Report Wizard opens,&amp;nbsp;I usually just go ahead and click the &amp;quot;Clear Links&amp;quot; button right away.&amp;nbsp; This proved true with this report&amp;nbsp;also, crystal through a SQL error when I tried using the default links.&amp;nbsp;&amp;nbsp;With the links deleated and since the&amp;nbsp;USERINFO table is&amp;nbsp;the base table for this report,&amp;nbsp;I moved it all the way to the left side of the screen.&amp;nbsp; After moving the views to the right side of&amp;nbsp;work area,&amp;nbsp;I linked the USERINFO table to the CFX_USERPERIODREVIEW_GOAL and CFX_USERPERIODREVIEW_ACTUAL&amp;nbsp;views, using&amp;nbsp;the UserId field as my link between the entities.&lt;/p&gt;
&lt;p&gt;Usually I&amp;nbsp;change&amp;nbsp;the default&amp;nbsp;join of inner&amp;nbsp;to left to ensure all records display even if a related table does not have data,.&amp;nbsp; Because we only want those users who have Quotas entered in the system we will leave our join types set to the default.&lt;/p&gt;
&lt;p&gt;With my tables and views selected and joined let&amp;#39;s finish the wizard by selecting USERINFO.USERNAME in each of the following two screens and select finish.&amp;nbsp; What this did was establish our first group, we selected the same field twice just to get through the field selection section of the wizard and were able to create that first group.&amp;nbsp;&amp;nbsp; When I selected &amp;quot;Finished&amp;quot; this is what I was presented with.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota021.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota021.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I know it looks pretty ugly right now and like I said, I am not going to get into to much detail on how to make it look better.&amp;nbsp; Here is basically what I did to bring this report around.&amp;nbsp; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;I suppressed the&amp;nbsp;Detail and Group1Footer Sections of the report.&amp;nbsp; &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;I added another section in GroupHeader1.&amp;nbsp; &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;In GroupHeader1a,&amp;nbsp;I moved the username all the way to the upper left hand corner and collapsed in the rest of the section leaving just enough room to display the field.&amp;nbsp; &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;In GroupHeader1b, I placed all of the fields from the views.&amp;nbsp; &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;I combined each of the fields&amp;nbsp;with labels to help me make sense of what the field is displaying.&amp;nbsp;Make sure to format the dollar values before combining the field with the label.&amp;nbsp; &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;This is a&amp;nbsp;screen shot&amp;nbsp;of what I came up with:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota022.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota022.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The first part of our Drill Down Report is complete.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Next, we have to come up with away of&amp;nbsp;displaying all of the primary entities (Account, Contact, Opportunities, History, Activities, and Tickets)&amp;nbsp;in one group.&amp;nbsp; I can hear you scratching your head.&amp;nbsp;&amp;nbsp;If you remember, the&amp;nbsp;overall idea of the report we are building is&amp;nbsp;to be able to&amp;nbsp;drill down into our data.&amp;nbsp; The idea is to display just enough information to let you know what is going on for a user.&amp;nbsp; If something peaks your interest, you will be able&amp;nbsp;click on a record and&amp;nbsp;be provided&amp;nbsp;with more detail.&amp;nbsp; A user of your system has references in each of those primary entities.&amp;nbsp; So how do we display that information so it will all roll up under each of our user individually, but all&amp;nbsp;in the same group.&amp;nbsp; We will dig into this next time.&amp;nbsp; &lt;a href="http://customerfx.com/pages/reporting/2010/12/01/leveling-out-user-data.aspx" target="_blank"&gt;See how here!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have zipped up and attached the report displayed&amp;nbsp;above.&amp;nbsp; The report should install&amp;nbsp;into any system where the untouched&amp;nbsp;views provided in previous posts (&lt;a href="http://customerfx.com/pages/reporting/2010/11/05/gathering-user-quotas-and-actual-numbers.aspx" target="_blank"&gt;Quota data&lt;/a&gt; and the&lt;a href="http://customerfx.com/pages/reporting/2010/11/10/gathering-actual-numbers.aspx" target="_blank"&gt; Actual Numbers&lt;/a&gt;&amp;nbsp;) have been installed.&amp;nbsp; Remember, if you are running this report outside of SalesLogix, to re-set the database location through the Database\Set Datasource Locations menu item.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks for reading, have a&amp;nbsp;Happy Thanksgiving, of course please travel safely, &amp;nbsp;and most of all keep smiling.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=44033" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="Crystal Reports" scheme="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx" /><category term="Views" scheme="http://customerfx.com/pages/reporting/archive/tags/Views/default.aspx" /><category term="SQL" scheme="http://customerfx.com/pages/reporting/archive/tags/SQL/default.aspx" /></entry><entry><title>Crystal Connection through the SalesLogix OLE DB Provider</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/11/16/crystal-connection-through-the-saleslogix-ole-db-provider.aspx" /><id>http://customerfx.com/pages/reporting/2010/11/16/crystal-connection-through-the-saleslogix-ole-db-provider.aspx</id><published>2010-11-16T16:00:00Z</published><updated>2010-11-16T16:00:00Z</updated><content type="html">&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;The first step in creating a report in Business Object Crystal&amp;nbsp;Reports&amp;nbsp;is always the connection to the database.&amp;nbsp; In a post labeled &lt;/font&gt;&lt;a href="http://customerfx.com/pages/reporting/2008/05/16/Report-Database-Connections.aspx" target="_blank"&gt;&lt;strong&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&amp;quot;Report Database Connections&amp;quot;&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;font face="arial,helvetica,sans-serif"&gt;,&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;I discuss&amp;nbsp;one method of making a connection to a SQL database.&amp;nbsp; That post will lead you through how to make the connection using the Microsoft OLE DB&amp;nbsp;Provider for SQL Server using the sysdba login and password.&amp;nbsp;&amp;nbsp; There is also a SalesLogix OLE DB Provider and since this is the primary way of a making a connection to SalesLogix data,&amp;nbsp;I&amp;nbsp;thought I would take the time to talk you through making this connection&amp;nbsp; for Crystal Reports.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;What is required to make&amp;nbsp;this connection is the SalesLogix Admin Password, the location of the SalesLogix Connection Manager, and the SalesLogix Connection name.&amp;nbsp; If you know or can obtain&amp;nbsp;the password the rest&amp;nbsp;is easily accessible&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font size="2"&gt; by logging into the SalesLogix Client. &lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota012.jpg"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota012.jpg" alt="" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;font face="arial,helvetica,sans-serif"&gt; &lt;/font&gt;
&lt;p&gt;Instead of logging in, click on the button located to the right of the &amp;quot;Log on to:&amp;quot; field.&amp;nbsp; This opens the Data Link Manager.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota013.jpg"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota013.jpg" alt="" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&amp;nbsp;Usually you will just see one or two database connection listed here.&amp;nbsp; &lt;span style="FONT-SIZE:12pt;"&gt;&lt;font size="2"&gt;Select&amp;nbsp;the database that you want to report against out of the list and then click on the “Edit” button.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This action will open the Data Link Properties window.&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota014.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota014.jpg" alt="" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Now you will see the SalesLogix Server Name where the SalesLogix Connection Manager&amp;nbsp;is located&amp;nbsp; for your system ( for me it is Test 82), and the connection name&amp;nbsp;given to the database you want to connect to (CFX_Reporting Class).&amp;nbsp;&amp;nbsp; The password may be visible but it will be encrypted.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Armed with this information,&amp;nbsp;let&amp;#39;s open Crystal Reports.&amp;nbsp; When Crystal opens, select the New Report&amp;nbsp;icon located in the upper right hand corner of the tool bar, selecting&amp;nbsp;this&amp;nbsp;should start the Crystal Report Wizard.&amp;nbsp; The first screen of the wizard&amp;nbsp;should be labeled &amp;quot;Data&amp;quot;.&amp;nbsp; You should also see a list of&amp;nbsp;&amp;quot;Available&amp;nbsp;Data Sources&amp;quot; along the left side of the interface.&amp;nbsp;&lt;/font&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota015.jpg"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota015.jpg" width="584" height="551" alt="" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font size="2"&gt;Click on the Create New Connection Listing.&amp;nbsp; Once the tree opens, find the &amp;quot;OLE DB (ADO)&amp;quot; listing.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt; 
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font size="2"&gt;When the OLE DB (ADO) appears scroll all the way to the bottom of the list, in my example I see the SalesLogix OLE DB Provider, third one from the bottom.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; Select the next button and the OLE DB (ADO) connection screen will appear.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota016.jpg"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota016.jpg" alt="" /&gt;&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;/span&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font size="2"&gt;Fill in your database information.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt; 
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;Data Source = your SalesLogix Server Name&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;User Id = &amp;quot;Admin&amp;quot;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;Password = your Admin Password.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;Database = the SalesLogix Connection Name&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0in 0in 0pt;" class="MsoNormal"&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;With the correct data added, select the “Finish” button.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;font size="2" face="arial,helvetica,sans-serif"&gt;Now the connection will appear under the OLE DB (ADO)&amp;nbsp;listing in the data source tree.&amp;nbsp; Right click on the connection name and select &amp;quot;Add to Favorites&amp;quot; from the list that appears.&amp;nbsp; Your connection is now saved for future use.&amp;nbsp; Open the Favorites list in the Available Data Sources tree and you should see your connection.&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="FONT-SIZE:12pt;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&amp;nbsp; &lt;/font&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=44032" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="Crystal Reports" scheme="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx" /><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /></entry><entry><title>Gathering the Actual Numbers for Reporting Comparison</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/11/10/gathering-actual-numbers.aspx" /><link rel="enclosure" type="text/plain" length="4460" href="http://customerfx.com/pages/reporting/attachment/43973.ashx" /><id>http://customerfx.com/pages/reporting/2010/11/10/gathering-actual-numbers.aspx</id><published>2010-11-10T14:00:00Z</published><updated>2010-11-10T14:00:00Z</updated><content type="html">&lt;p&gt;I have just started writing a series of posts that will lead the reader of this blog through the creation of a report with the same&amp;nbsp;kind of data break down as you see in the standard Sage SalesLogix Visual Analyzer and the Sage SalesLogix Dash Board.&amp;nbsp; In the &lt;a href="http://customerfx.com/pages/reporting/2010/10/27/updated-managed-quota-area.aspx" target="_blank"&gt;first week&lt;/a&gt; I provided a method&amp;nbsp;to effectively&amp;nbsp;establishing&amp;nbsp;quotas ( or goals)&amp;nbsp;for your users by updating the Manage Quota area of the Sage SalesLogix LAN.&amp;nbsp;&amp;nbsp;I also took the time creating the&amp;nbsp;functionality for the SalesLogix 7.5.3 Web.&amp;nbsp; &lt;a href="http://customerfx.com/pages/reporting/2010/11/05/gathering-user-quotas-and-actual-numbers.aspx" target="_blank"&gt;Last week&lt;/a&gt; I showed you a method of using SQL Views to organize that quota&amp;nbsp;data for use in reporting.&amp;nbsp; This week my goal is for us to gather the Actual Numbers from our system for comparison against&amp;nbsp;the quotas.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Once again we are going to use a SQL View to organize the data.&amp;nbsp; I am going to go a little slower today because this is going to be a little&amp;nbsp;different for everyone.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The first thing we need to do is create a list of users. The UserInfo table holds that data in SalesLogix.&amp;nbsp;The following SQL statement provides that list.&lt;/p&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;
&lt;p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;SELECT USERID FROM sysdba.USERINFO&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;&lt;font color="#000000"&gt;To prepare to add the different totals from each of your categories we&amp;nbsp;need&amp;nbsp;to write&amp;nbsp;this statement&amp;nbsp;a different way:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#808080"&gt;&lt;font color="#808080"&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt; t0.USERID &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;FROM&lt;/font&gt;&lt;font color="#0000ff"&gt; (SELECT USERID FROM sysdba.USERINFO) as t0&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Here we are a using an embedded SQL Statement labeled &amp;quot;t0&amp;quot; to provide the user data for our SQL View.&amp;nbsp;&amp;nbsp;Now to&amp;nbsp;add on a count of anything in the database we need to&amp;nbsp;go create another SQL statement.&amp;nbsp; Let&amp;#39;s say&amp;nbsp;we want to get a count of open Activities, for the current year, for each of our users.&amp;nbsp; I believe&amp;nbsp;I will&amp;nbsp;need three fields, the UserId (to Group By), ActivityId (gives something to&amp;nbsp;count), StartDate (Qualifies record for the current year).&amp;nbsp; My SQL Statement looks something like this.&lt;/p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;
&lt;p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt;SELECT COUNT(sysdba.ACTIVITY.ACTIVITYID) AS OpenActivites &lt;br /&gt;FROM sysdba.ACTIVITY&lt;br /&gt;where Year (sysdba.ACTIVITY.STARTDATE) = Year(GetDate())&lt;br /&gt;GROUP BY sysdba.ACTIVITY.USERID&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Now lets work&amp;nbsp;the above statment&amp;nbsp;into our SQL view to match the data to the users in the system.&amp;nbsp; I will try to use colors to direct you to the portion of the statement.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Black is the original statment form above&lt;/font&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;font color="#000000"&gt;&lt;font color="#cc9900"&gt;&lt;strong&gt;&lt;font color="#00ccff"&gt;Add the words left join to the end fo the user embeded SQL&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font color="#000000"&gt;&lt;font color="#cc9900"&gt;&lt;strong&gt;Copy the entire SQL Statement for Activities in to the &amp;quot;From&amp;quot; portion of our SQL View.&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;Add Open and Closed parenthesis&lt;/strong&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;font color="#336600"&gt;&lt;strong&gt;Alias the SQL ( as t1 )&lt;/strong&gt;&lt;/font&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;font color="#993300"&gt;Match the data to the established user.&amp;nbsp; (on t0.UserId = t1.Userid)&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;font color="#9900ff"&gt;Add the data collected to the SQL View select portion&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;font color="#000000"&gt;SELECT t0.USERID,&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;strong&gt;&lt;font color="#9900ff"&gt;t1.OpenActivities&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;FROM (SELECT USERID FROM sysdba.USERINFO) as t0 &lt;/font&gt;&lt;font color="#00ccff"&gt;&lt;strong&gt;left join&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/font&gt;&lt;font color="#999933"&gt;&lt;font color="#cc9900"&gt;SELECT sysdba.ACTIVITY.USERID, COUNT(sysdba.ACTIVITY.ACTIVITYID) AS OpenActivites &lt;br /&gt;FROM sysdba.ACTIVITY&lt;br /&gt;where Year (sysdba.ACTIVITY.STARTDATE) = Year(GetDate())&lt;br /&gt;GROUP BY sysdba.ACTIVITY.USERID&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;)&amp;nbsp; &lt;font color="#006600"&gt;as t1 &lt;/font&gt;&lt;font color="#993300"&gt;on t0.UserId = t1.Userid&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#000000"&gt;I am going to provide one more example to show that you can collect more then one value from each one of these embedded SQL statements.&amp;nbsp;&amp;nbsp;Lets add data&amp;nbsp;for Closed - Lost&amp;nbsp;Opportunities providing a count and a total dollar value of the lost&amp;nbsp;sales.&amp;nbsp; You will see the changes to SQL view&amp;nbsp;are in &lt;font color="#336600"&gt;green text&lt;/font&gt;.&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#808080" size="2"&gt;&lt;font color="#808080" size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff"&gt;SELECT t0.USERID, t1.OpenActivites&lt;/font&gt;, &lt;/font&gt;&lt;/font&gt;&lt;font color="#336600"&gt;t2.ClosedLostOpportunities, t2.LostSalesPotential&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;FROM &lt;br /&gt;(SELECT USERID FROM sysdba.USERINFO) as t0 left join&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff"&gt;(SELECT sysdba.ACTIVITY.USERID, COUNT(sysdba.ACTIVITY.ACTIVITYID) AS OpenActivites &lt;br /&gt;FROM sysdba.ACTIVITY&lt;br /&gt;where Year (sysdba.ACTIVITY.STARTDATE) = Year(GetDate())&lt;br /&gt;GROUP BY sysdba.ACTIVITY.USERID)&amp;nbsp; as t1 on t0.UserId = t1.Userid&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#336600"&gt;left join&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#336600"&gt;(SELECT ACCOUNTMANAGERID AS UserID, COUNT(OPPORTUNITYID) AS ClosedLostOpportunities, SUM(SALESPOTENTIAL) AS LostSalesPotential&lt;br /&gt;FROM sysdba.OPPORTUNITY&lt;br /&gt;WHERE (STATUS LIKE &amp;#39;%Closed - Lost%&amp;#39;) AND (YEAR(ACTUALCLOSE) = YEAR(GETDATE()))&lt;br /&gt;GROUP BY ACCOUNTMANAGERID) AS t2 ON t0.USERID = t2.UserID &amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;Here I collected a count of closed lost&amp;nbsp;Opportunities, and provided a sum displaying what those Opportunities were worth.&amp;nbsp; Notice in the select&amp;nbsp;portion how I called in the data from the embedded SQL. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;If I run this SQL View right now my data looks like this.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota009.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota009.jpg" alt="" /&gt;&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt; 
&lt;p&gt;&lt;font color="#000000"&gt;I do not like the null values I am seeing here.&amp;nbsp; We can&amp;nbsp;write a formula in Crystal to make the correction but it is much easier here using&amp;nbsp;the IsNull function.&amp;nbsp; IsNull is a function that is standard in SQL&amp;nbsp;that provides the user the ability to handle null values like we are seeing here.&amp;nbsp; This is added&amp;nbsp;to the select portion of my SQL View. The syntax looks like this:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;IsNull (TargetField, Value if Null) as FieldName&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" size="2"&gt;Here is my new Select portion of SQL view:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#ff00ff" size="2"&gt;&lt;font color="#ff00ff" size="2"&gt;&lt;font color="#ff00ff" size="2"&gt;&lt;font color="#ff00ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;SELECT t0.USERID&lt;br /&gt;, IsNull(t1.OpenActivites,0) as OpenActivites&lt;br /&gt;, IsNull(t2.ClosedLostOpportunities,0) as ClosedLostOpportunities&lt;br /&gt;, IsNull(t2.LostSalesPotential,0) as LostSalesPotential&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;So for us if the value returned is null then we want to see a zero and we still want the field called by it&amp;#39;s original name.&amp;nbsp; Here are results&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota010.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota010.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;I hope you are seeing the value of preparing the data in SQL and why I say if you writing reports you simply need to have access to your SQL database.&amp;nbsp;It makes things a whole lot&amp;nbsp;easier in Crystal if you can prep your data before writing the report.&amp;nbsp; I have attached the SQL View we will be using for our new report to this post for download.&amp;nbsp; The challange on your end is to come up with some quotas in your system and then try and build a SQL view to pull the comparisons.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Next step, we will be bringing all of this data together and display it against our quotas in a Crystal Report.&amp;nbsp; Have a great week, thanks for reading&amp;nbsp;and&amp;nbsp;of course &amp;quot;Keep Smiling&amp;quot;. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;See how this rolled up into a Crystal Report by following this &lt;a href="http://customerfx.com/pages/reporting/2010/11/23/writing-the-user-quota-vs-actual-crystal-report.aspx" target="_blank"&gt;link&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Geo&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43973" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="Crystal Reports" scheme="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx" /><category term="Views" scheme="http://customerfx.com/pages/reporting/archive/tags/Views/default.aspx" /><category term="SQL" scheme="http://customerfx.com/pages/reporting/archive/tags/SQL/default.aspx" /></entry><entry><title>Gathering User Quotas for Reporting</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/11/05/gathering-user-quotas-and-actual-numbers.aspx" /><id>http://customerfx.com/pages/reporting/2010/11/05/gathering-user-quotas-and-actual-numbers.aspx</id><published>2010-11-05T17:15:00Z</published><updated>2010-11-05T17:15:00Z</updated><content type="html">&lt;p&gt;If you read last weeks &lt;a href="http://customerfx.com/pages/reporting/2010/10/27/updated-managed-quota-area.aspx" target="_blank"&gt;post&lt;/a&gt;,&amp;nbsp;you will know I am setting&amp;nbsp;up to build a user based report that will&amp;nbsp;give the reader a lot of the same&amp;nbsp;data you see in the standard Sage SalesLogix Visual Analyzer and the Sage SalesLogix Dash Board.&amp;nbsp; Last week I provided you the ability to effectively set&amp;nbsp;goals for your users by updating the Manage Quota area of the SalesLogix LAN and actually creating the&amp;nbsp;functionality for the SalesLogix 7.5.3 Web.&amp;nbsp;&amp;nbsp;This is available to you via the bundles attached to the post.&amp;nbsp; This week I am providing you a means of grabbing&amp;nbsp;the quota&amp;#39;s for each user&amp;nbsp;out of the SalesLogix database&amp;nbsp;by providing you&amp;nbsp;an example of&amp;nbsp;a SQL view.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;But first, I have added some text to the &amp;quot;About This Blog&amp;quot; section that I will reference from time to time just to remind everyone of my&amp;nbsp;goals in&amp;nbsp;delivering information to you through this blog, please feel free to click on this &lt;a href="http://customerfx.com/pages/reporting/about.aspx"&gt;link&lt;/a&gt; to read.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;So with the bundles from last week&amp;nbsp;in place I have added some Quotas for some of the users in my eval system.&amp;nbsp; The below screen shot gives you the examples that I have established.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota005.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota005.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lets look at the data in the Quota Table.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/Quota007.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota007.jpg" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As you can see, for every user and for each type of Quota there is a row of data, this means multiple rows of data per user.&amp;nbsp;Now, if&amp;nbsp;all I was asking Crystal to do was organize this data it could handle it&amp;nbsp;with no problem simply by&amp;nbsp;building a group based on the UserID and pulling in the fields I want displayed.&amp;nbsp; Our report is going to be much more complex and this just&amp;nbsp;an element&amp;nbsp;of the data we are going to pull to roll up under a user.&amp;nbsp; We&amp;nbsp;need this data to&amp;nbsp;be laid out so each user&amp;nbsp;has one row of data,&amp;nbsp;with a column for each Type of Quota that displays the&amp;nbsp; value enterd for that Type.&amp;nbsp; Below you will find an example of&amp;nbsp;a SQL view that can be added to&amp;nbsp;your system to draw out and bring the data together the way I described above:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Create View sysdba.CFX_UserPeriodReview_Goal&lt;br /&gt;as&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT DISTINCT t1.UserID, &lt;br /&gt;&lt;font color="#990000"&gt;IsNull(t2.NumbOpenOpportunites,0) as NumbOpenOpportunites,&lt;/font&gt; &lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;IsNull(t3.NumbOpenActivities,0) as NumbOpenActivities,&lt;/font&gt; &lt;br /&gt;IsNull(t4.NumbOpenTickets,0) as NumbOpenTickets, &lt;br /&gt;&lt;font color="#009900"&gt;IsNull(t5.TotalYearlySales,0) as TotalYearlySales, &lt;br /&gt;&lt;/font&gt;IsNull(t6.TotalWeightedPipeline,0) as TotalWeightedPipeline&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;FROM (SELECT&amp;nbsp;USERID AS UserID&amp;nbsp; FROM sysdba.USERINFO) AS t1 INNER JOIN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;font color="#990000"&gt;(SELECT&amp;nbsp;USERID, SUM(QUANTITY) AS NumbOpenOpportunites FROM sysdba.QUOTA &lt;br /&gt;&amp;nbsp;WHERE (QUOTATYPE = &lt;strong&gt;&amp;#39;Numb Open Opportunites&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t2 ON t1.UserID = t2.USERID INNER JOIN&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;font color="#0000ff"&gt;(SELECT USERID, SUM(QUANTITY) AS NumbOpenActivities FROM sysdba.QUOTA &lt;br /&gt;&amp;nbsp;WHERE (QUOTATYPE = &lt;strong&gt;&amp;#39;Numb Open Activities&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t3 ON t1.UserID = t3.USERID INNER JOIN&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;(SELECT&amp;nbsp;USERID, SUM(QUANTITY) AS NumbOpenTickets FROM&amp;nbsp; sysdba.QUOTA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE (QUOTATYPE = &lt;strong&gt;&amp;#39;Numb Open Tickets&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t4 ON t1.UserID = t4.USERID INNER JOIN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;font color="#009900"&gt;(SELECT&amp;nbsp;USERID, SUM(AMOUNT) AS TotalYearlySales FROM sysdba.QUOTA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE (QUOTATYPE = &lt;strong&gt;&amp;#39;Total Yearly Sales&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t5 ON t1.UserID = t5.USERID INNER JOIN&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;(SELECT&amp;nbsp;USERID, SUM(AMOUNT) AS TotalWeightedPipeline FROM sysdba.QUOTA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (QUOTATYPE = &lt;strong&gt;&amp;#39;Total Weighted Pipeline&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t6 ON t1.UserID = t6.USERID&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#999900"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#999900"&gt;&lt;font color="#000000"&gt;This is not plug and play SQL view, you have to customize this script to match the quota types&amp;nbsp;that are set in&amp;nbsp;your system.&amp;nbsp; There is a lot going on here and I will try to explain this a bit so you understand.&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#999900"&gt;&lt;font color="#000000"&gt;We have two major components to this view:&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#999900"&gt;&lt;font color="#000000"&gt;&lt;strong&gt;A &amp;quot;Select&amp;quot; portion.......a&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#999900"&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;SELECT DISTINCT t1.UserID, &lt;br /&gt;&lt;/font&gt;&lt;font color="#990000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsNull(t2.NumbOpenOpportunites,0) as NumbOpenOpportunites,&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsNull(t3.NumbOpenActivities,0) as NumbOpenActivities,&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsNull(t4.NumbOpenTickets,0) as NumbOpenTickets, &lt;br /&gt;&lt;font color="#009900"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsNull(t5.TotalYearlySales,0) as TotalYearlySales,&amp;nbsp;&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IsNull(t6.TotalWeightedPipeline,0) as TotalWeightedPipeline&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;font color="#999900"&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;font color="#999900"&gt;&lt;font color="#000000"&gt;and a &amp;quot;From&amp;quot; portion.&lt;/font&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM (SELECT&amp;nbsp;USERID AS UserID&amp;nbsp; FROM sysdba.USERINFO) AS t1 INNER JOIN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/font&gt;&lt;font color="#990000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&amp;nbsp;USERID, SUM(QUANTITY) AS NumbOpenOpportunites FROM sysdba.QUOTA &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE (QUOTATYPE = &lt;strong&gt;&amp;#39;Numb Open Opportunites&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t2 ON t1.UserID = t2.USERID INNER JOIN&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT USERID, SUM(QUANTITY) AS NumbOpenActivities FROM sysdba.QUOTA &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE (QUOTATYPE = &lt;strong&gt;&amp;#39;Numb Open Activities&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t3 ON t1.UserID = t3.USERID INNER JOIN&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (SELECT&amp;nbsp;USERID, SUM(QUANTITY) AS NumbOpenTickets FROM&amp;nbsp; sysdba.QUOTA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;WHERE (QUOTATYPE = &lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;strong&gt;&amp;#39;Numb Open Tickets&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t4 ON t1.UserID = t4.USERID INNER JOIN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/font&gt;&lt;font color="#009900"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;(SELECT&amp;nbsp;USERID, SUM(AMOUNT) AS TotalYearlySales FROM sysdba.QUOTA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;WHERE (QUOTATYPE = &lt;strong&gt;&amp;#39;Total Yearly Sales&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t5 ON t1.UserID = t5.USERID INNER JOIN&lt;/font&gt;&lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; (SELECT&amp;nbsp;USERID, SUM(AMOUNT) AS TotalWeightedPipeline FROM sysdba.QUOTA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;WHERE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (QUOTATYPE = &lt;strong&gt;&amp;#39;Total Weighted Pipeline&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t6 ON t1.UserID = t6.USERID&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Look at the 1st Column of the &amp;quot;Select&amp;quot; portion:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;t1.UserID&lt;/font&gt;,&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;Now the&amp;nbsp;first part of the &amp;quot;From&amp;quot; portion of the view statement supports the first columns&amp;nbsp;by providing&amp;nbsp;SQL a list of all usersid in the system.&lt;/font&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;FROM (SELECT&amp;nbsp;USERID AS UserID&amp;nbsp; FROM sysdba.USERINFO) AS t1 INNER JOIN&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#999900"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#999900"&gt;&lt;font color="#000000"&gt;Now, look at the&amp;nbsp;2nd column in the &amp;quot;Select&amp;quot;&amp;nbsp;portion of the statement:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#990000"&gt;IsNull(t2.NumbOpenOpportunites,0) as NumbOpenOpportunites,&lt;/font&gt;&lt;font color="#0000ff"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;This is saying give me a row of data with a label of &lt;font color="#990000"&gt;NumbOpenOpportunites.&amp;nbsp; &lt;/font&gt;This part of the select statement is matched to an embedded SQL statement in the &amp;quot;From&amp;quot; portion of the view statement&amp;nbsp;to draw just that&amp;nbsp;value out of the quota table for the user.&amp;nbsp; Looking at the embedded SQL for this column it reads:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#990000"&gt;(SELECT&amp;nbsp;USERID, SUM(QUANTITY) AS NumbOpenOpportunites FROM sysdba.QUOTA &lt;br /&gt;&amp;nbsp;WHERE (QUOTATYPE = &lt;strong&gt;&amp;#39;Numb Open Opportunites&amp;#39;&lt;/strong&gt;) GROUP BY USERID) AS t2 ON t1.UserID = t2.USERID INNER JOIN&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;This is&amp;nbsp;drawing data out of the Quantity field in the Quota Table &lt;/font&gt;&lt;font color="#000000"&gt;where we set the Type for that row as &lt;/font&gt;&lt;font color="#000000"&gt;&lt;strong&gt;&amp;#39;Numb Open Opportunites&amp;#39;.&lt;/strong&gt;&lt;/font&gt;&lt;font color="#990000"&gt;&amp;nbsp; &lt;font color="#000000"&gt;As you can see t&lt;/font&gt;&lt;font color="#000000"&gt;his statement organizes the data just the way we want it, a User&amp;nbsp;with a named column&amp;nbsp;displaying a value&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota008.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota008.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;To make it easy, think of this as a&amp;nbsp;table of data for&amp;nbsp;SQL to use while it is building the view, this particular table&amp;nbsp;was named &amp;quot;t2&amp;quot;.&lt;/font&gt;&lt;font color="#000000"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Look at the very&amp;nbsp;last&amp;nbsp;part of the embedded SQL:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#990000"&gt;t1.UserID = t2.USERID INNER JOIN&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;This matches the data to the established UserId in the 1st column, The &amp;quot;Inner Join&amp;quot; cleans out our&amp;nbsp;view a bit because only records from the user table that have records in the t2 table will display records in our SQL view.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The rest of the our SQL view is adding on the different columns of data based on the Quota Types.&amp;nbsp; For each column in the &amp;quot;Select&amp;quot; portion there is a supporting embedded SQL in the &amp;quot;From&amp;quot; portion.&amp;nbsp; Look at the 4th column from the &amp;quot;Select&amp;quot; portion of&amp;nbsp; SQL View Statement :&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;font color="#009900"&gt;IsNull(t5.TotalYearlySales,0) as &lt;font color="#9933ff"&gt;&lt;strong&gt;TotalYearlySales&lt;/strong&gt;,&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This columns uses &amp;quot;Amount&amp;quot; field and provide us our currency values.&amp;nbsp; The matching Embedded SQL looks likes this:&lt;/p&gt;
&lt;p&gt;&lt;font color="#009900"&gt;(SELECT&amp;nbsp;USERID, SUM(&lt;font color="#990000"&gt;&lt;strong&gt;AMOUNT&lt;/strong&gt;&lt;/font&gt;) AS &lt;strong&gt;&lt;font color="#9933ff"&gt;TotalYearlySales&lt;/font&gt;&lt;/strong&gt; FROM sysdba.QUOTA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE (QUOTATYPE = &lt;strong&gt;&lt;font color="#cc6600"&gt;&amp;#39;Total Yearly Sales&amp;#39;&lt;/font&gt;&lt;/strong&gt;) GROUP BY USERID) AS t5 ON t1.UserID = t5.USERID INNER JOIN&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The only real difference is instead of &amp;quot;Quantity&amp;quot; field&amp;nbsp;we are using &amp;quot;Amount&amp;quot; field.&amp;nbsp;&amp;nbsp;The rest of the embedded SQL is basically the same. &lt;/p&gt;
&lt;p&gt;Ok, to wrap this up the SQL view&amp;nbsp;statement provided today is an example of how to prepare the data in the Quota table for use in a SQL report.&amp;nbsp; I will use the above element of the SQL View Statement to help&amp;nbsp;me explain what you need to modify in the view to make it work for you and your custom quota&amp;nbsp;Types. &amp;nbsp;Colors should match up to the section you need to modify&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;&lt;font color="#cc6600"&gt;&lt;strong&gt;You will need to customize&amp;nbsp;the&amp;nbsp;embedded SQL&amp;nbsp;to your custom quota types&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;font color="#993300"&gt;&lt;strong&gt;Select whether the value you want is currecny (Use the Amount Field) or a number (Use the Quantity field).&lt;/strong&gt;&amp;nbsp; &lt;/font&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;strong&gt;&lt;font color="#996699"&gt;&lt;font color="#993399"&gt;The label for the Column in the view must match in both the Select Portion and the embedded SQL in the From portion of the SQL view.&lt;/font&gt; &lt;/font&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Take your time while doing this.&amp;nbsp; Remember your are building a view, you are not effecting your data or hurting your system so do not feel like you are breaking anything.&amp;nbsp; SQL is one great tool and I have a lot of fun playing around and seeing what I can do.&amp;nbsp; One other thing, fight for the right to have access to your SQL data.&amp;nbsp; You are the report writer, you cannot really write great reports without access to the wonderful world of SQL.&lt;/p&gt;
&lt;p&gt;Thanks for reading.&amp;nbsp; Next time we pull together the data to compare these quotas against. &lt;a href="http://customerfx.com/pages/reporting/2010/11/10/gathering-actual-numbers.aspx"&gt;Click Here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Keep Smiling,&amp;nbsp; Geo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#999900"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43933" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="Crystal Reports" scheme="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx" /><category term="Views" scheme="http://customerfx.com/pages/reporting/archive/tags/Views/default.aspx" /><category term="SQL" scheme="http://customerfx.com/pages/reporting/archive/tags/SQL/default.aspx" /></entry><entry><title>Updating the Managed Quota Area for Sage SalesLogix</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/10/27/updated-managed-quota-area.aspx" /><link rel="enclosure" type="application/x-zip-compressed" length="53966" href="http://customerfx.com/pages/reporting/attachment/43915.ashx" /><id>http://customerfx.com/pages/reporting/2010/10/27/updated-managed-quota-area.aspx</id><published>2010-10-27T20:30:00Z</published><updated>2010-10-27T20:30:00Z</updated><content type="html">&lt;p&gt;Often, when discussing reporting issues with clients I will bring up the Quota&amp;#39;s area of Sage SalesLogix.&amp;nbsp; If you do not know where this functionality is located, go to your Tools/Manage/Quota menu and the following screen will appear.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota001.jpg"&gt;&lt;img style="WIDTH:618px;HEIGHT:471px;" border="0" src="http://customerfx.com/blogs/reporting/Quota001.jpg" width="603" height="462" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the upper pane&amp;nbsp;you find a place to list the users you want to set a quota for.&amp;nbsp; As each user is highlighted the list below changes to display the&amp;nbsp;quota&amp;#39;s that have been established for that user.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Usually&amp;nbsp;I bring up this area of SalesLogix&amp;nbsp;when a&amp;nbsp;conversation has to do with a way of tracking goals for the client&amp;#39;s user base.&amp;nbsp; This area has been around in SalesLogix since pre version 6.X.&amp;nbsp; I believe&amp;nbsp;this area&amp;nbsp;is over looked or unused because of two basic&amp;nbsp;issues.&amp;nbsp; First, there is no place to define what the Quota being set&amp;nbsp;is&amp;nbsp;for.&amp;nbsp; This limits the use of a quota set&amp;nbsp;for a user to only one&amp;nbsp;because it could only have one meaning.&amp;nbsp; Second, the Quota section is&amp;nbsp;set up for currency only.&amp;nbsp; If we look at a tool like Visual Analyzer you are seeing a trend of knowing the counts of items like Activities or History records.&amp;nbsp; There is a third issue, I think&amp;nbsp;the entire set of functionality should be labeled &amp;quot;User Goals&amp;quot;. This would provide a better understanding what&amp;nbsp;the area is for.&amp;nbsp; Oh yeah, one other thing, for you web users, the Quota&amp;nbsp;functionality has been left out completely.&lt;/p&gt;
&lt;p&gt;Today, I decided to fix at least 2 of these issues and bring this functionality to the web.&amp;nbsp; I am making this available to the readers of this blog as I start down the trail of leading you through the building of a User based&amp;nbsp;report.&amp;nbsp; I will use the standard Visual Analyzer sheet and the Current SalesLogix Dash board to provide ideas of what we should include in&amp;nbsp;this report.&amp;nbsp; I am doing this to better show you that Crystal can, in most cases, meet you reporting needs.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Attached to this post you will find an attached zip file that contains two files.&amp;nbsp; The LAN bundle labeled Update_LAN_ManageQuota_753.sxb&amp;nbsp;should be installed first and will take the current functionality from what you see above to this:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota002.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota002.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can now add numeric value in addition to the currency and can label the quota allowing the ability for multiple quotas or goals per user.&amp;nbsp; The bundle has been tested down to SalesLogix version 7.5.0 and installed great.&lt;/p&gt;
&lt;p&gt;The web&amp;nbsp;bundle labeled Add_Quota_ToUsers_753Web.zip&amp;nbsp;creates a new tab under User which is&amp;nbsp;available in version 7.5.3 only. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/Quota004.jpg"&gt;&lt;img style="WIDTH:747px;HEIGHT:389px;" border="0" src="http://customerfx.com/blogs/reporting/Quota004.jpg" width="677" height="359" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The Quota Insert/Edit Screen looks like this.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Quota003.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Quota003.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I will provide links back to this post in the near future.&amp;nbsp; The next step&amp;nbsp;in preparing to write this report is&amp;nbsp;to set your database up using SQL views to get the numbers from your data to compare these quotas against.&lt;/p&gt;
&lt;p&gt;See how&amp;nbsp;to collect&amp;nbsp;Quota information for reporting by reading the &lt;a href="http://customerfx.com/pages/reporting/2010/11/05/gathering-user-quotas-and-actual-numbers.aspx" target="_blank"&gt;next post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks for reading - Geo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43915" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /><category term="SalesLogix Web" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Web/default.aspx" /><category term="Development" scheme="http://customerfx.com/pages/reporting/archive/tags/Development/default.aspx" /><category term="Customizations" scheme="http://customerfx.com/pages/reporting/archive/tags/Customizations/default.aspx" /></entry><entry><title>Looking at Stonefield Query for Sage SalesLogix (Final Thoughts)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/10/06/final-thoughts-on-stonefield-query.aspx" /><id>http://customerfx.com/pages/reporting/2010/10/06/final-thoughts-on-stonefield-query.aspx</id><published>2010-10-06T20:30:00Z</published><updated>2010-10-06T20:30:00Z</updated><content type="html">&lt;p&gt;For the last several posts I have been writing about my first hand&amp;nbsp;experience using the reporting tool called Stonefield Query for Sage SalesLogix.&amp;nbsp; I thought it might be time to wrap it up with some overall final thoughts.&amp;nbsp;&amp;nbsp;For those just joining the experience the&amp;nbsp;series of post starts &lt;a href="http://customerfx.com/pages/reporting/2010/07/19/looking-at-stonefield-query-for-sage-saleslogix.aspx" target="_blank"&gt;here&lt;/a&gt;.&amp;nbsp; My blog series was meant to provide, at a high level,&amp;nbsp;the ease of use and how I was able to accomplish what I think are some primary tasks for a reporting tool.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Overall, I really do like the tool. &amp;nbsp;I think it is fairly&amp;nbsp;easy to use, the documentation is well written and easy to follow which for a new user is very important.&amp;nbsp; The people at Stonefield Query are very responsive to questions and are easy to work with.&amp;nbsp; Stonefield Query would be great for someone who wants quick on the fly reporting with very&amp;nbsp;little training.&amp;nbsp; The more the user works with the tool the more they will be able to write more complex report.&amp;nbsp; After the install there has not been any need for additional support from my system administrator which adds to the simplicity.&lt;/p&gt;
&lt;p&gt;As with&amp;nbsp;all tools like this&amp;nbsp;there have been some little quirky things&amp;nbsp;within my experience like the interface locking up or messages stating the connection to the database has been lost.&amp;nbsp; All were self correcting by simply closing and reopening the tool.&amp;nbsp; These things did not happen that often and in a system as complicated as&amp;nbsp;ours could have been caused by issues outside the tool.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The only suggestion for improving&amp;nbsp;this tool&amp;nbsp;would be&amp;nbsp;to limit the number of dialog boxes used to accomplish tasks.&amp;nbsp;&amp;nbsp;For example filtering:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery021.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery021.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As you can see, you have the&amp;nbsp;Filter Tab which shows you the filters that have been created for the report in an easy to read format.&amp;nbsp; In order to add or edit the filter you select the &amp;quot;Filter&amp;quot; button which opens&amp;nbsp;the &amp;quot;Filter&amp;quot;&amp;nbsp;dialog that again list the filters but in a more segmented manner, to add or edit a filter and select the appropriate button and&amp;nbsp;the &amp;quot;Filter Condition&amp;quot;&amp;nbsp;dialog appears which helps you add or edit the filter.&amp;nbsp; I only bring&amp;nbsp;this up because at times I found myself lost as to which dialog I was working in, especially in a multiple monitor environment.&lt;/p&gt;
&lt;p&gt;In the end, if this is what I have to complain about, then maybe I am just a whiner.&amp;nbsp;&amp;nbsp;I like this tool and think&amp;nbsp;it will do the trick for most users.&amp;nbsp; I hope these posts will help someone on their decision&amp;nbsp;to purchase.&amp;nbsp; I have tried my best to give an honest representation of my experience using&amp;nbsp;Stonefield Query&amp;nbsp;without getting to deep into the&amp;nbsp;weeds.&amp;nbsp; Please Contact - Scott Weber&amp;nbsp;@ &lt;a href="mailto:scott.weber@customerfx.com"&gt;&lt;font color="#3c3c3c"&gt;scott.weber@customerfx.com&lt;/font&gt;&lt;/a&gt;&amp;nbsp;if you are interested in seeing a demo of this reporting tool.&amp;nbsp;&amp;nbsp; Thanks for reading and Keep Smiling -Geo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43823" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /><category term="Stonefield Query" scheme="http://customerfx.com/pages/reporting/archive/tags/Stonefield+Query/default.aspx" /></entry><entry><title>Looking at Stonefield Query for Sage SalesLogix (Part 6)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/09/23/looking-at-stonefield-query-for-sage-saleslogix-part-6.aspx" /><id>http://customerfx.com/pages/reporting/2010/09/23/looking-at-stonefield-query-for-sage-saleslogix-part-6.aspx</id><published>2010-09-23T16:45:00Z</published><updated>2010-09-23T16:45:00Z</updated><content type="html">&lt;p&gt;Again, I have to apologize for the rather long break between posts.&amp;nbsp; The Minnesota National Guard and I have been seeing quite a lot of each other over the past few months.&amp;nbsp; Reminds of a post I wrote over a year ago called &amp;quot;&lt;a href="http://customerfx.com/pages/reporting/2009/06/05/supportive-commitment-that-is-the-customer-fx-way.aspx" target="_blank"&gt;Supportive Commitment&lt;/a&gt;&amp;quot;, what was written in that post is still true today.&amp;nbsp; This is a great company to work for and they are very supportive of the efforts of U.S. Military Forces.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Today I want to look at creating a Formula field in Stonefield Query for Sage SalesLogix.&amp;nbsp;&amp;nbsp;In the Report wizard you find the controls that allow you to create a formula field in Step 2 - Data Selection.&amp;nbsp; I added the Account Name to the list of fields selected for this report and then changed the table to the Address.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery009.jpg"&gt;&lt;img style="WIDTH:707px;HEIGHT:319px;" border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery009.jpg" width="537" height="245" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The formula that I am going to write for me demonstration will have address 1 display on&amp;nbsp;the first&amp;nbsp;line and the have the City/State/Zip field display on the second line all with in&amp;nbsp;same formula field.&amp;nbsp; Under the list of available fields&amp;nbsp;along the left, you will see the &amp;quot;Formula...&amp;quot; button .&amp;nbsp; Selecting this opens the &amp;quot;Formula Editor&amp;quot; below.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery011.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery011.jpg" width="364" height="430" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;I added the name for my formula as &amp;quot;Custom Address&amp;quot;.&amp;nbsp; When I left the &amp;quot;Name&amp;quot; field the &amp;quot;Heading&amp;quot; auto populated,&amp;nbsp;the value&amp;nbsp;was still&amp;nbsp;editable so I put a space between the two&amp;nbsp;words. I then selected the button to the left of the formula space which brought up the &amp;quot;Expression Builder&amp;quot; dialog.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery012.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery012.jpg" width="635" height="322" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To build my formula I selected the my two fields from the list of available fields for this table.&amp;nbsp; I then added some VB scripting that inserted a carriage return so the City/State/Zip field would list on teh second line.&amp;nbsp; I was able to test my syntax on this form which helped alot.&amp;nbsp; When I was satisfied with my formula I selected the &amp;quot;OK&amp;quot; button which returned me to the &amp;quot;Formula Editor&amp;quot; dialog. &amp;nbsp;Here&amp;nbsp;I selected the&amp;nbsp;&amp;quot;OK&amp;quot; button which then returned me to the &amp;quot;Report Wizard&amp;quot;.&amp;nbsp;&amp;nbsp;&amp;nbsp;The list of available fields now contained my CustomAddress formula field, I moved the field into the list of Selected fields for this report.&amp;nbsp; I selected Next and moved to Step three which allows me to establish filters for this report.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery013.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery013.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you can see I only want Accounts that start with the letter &amp;quot;A&amp;quot;.&amp;nbsp; I then previewed my report to see the results, here are the first few records.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery014.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery014.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The one thing I played with&amp;nbsp;is the filtering.&amp;nbsp; I decided I might want to write the report using other letters so I changed the filter to ask me what letter I wanted to filter by at run time. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery015.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery015.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When I previewed the report I was provided the following dialog so I could select the letter I wanted to use.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery016.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery016.jpg" width="444" height="152" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pretty quick and easy, real good stuff.&lt;/p&gt;
&lt;p&gt;I am going to try and look at graphs in this environment and then we will probably wrap up this series of post.&amp;nbsp;&amp;nbsp;Until then do good things and&amp;nbsp;keep smiling.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43824" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /><category term="Stonefield Query" scheme="http://customerfx.com/pages/reporting/archive/tags/Stonefield+Query/default.aspx" /></entry><entry><title>Looking at Stonefield Query for Sage SalesLogix (Part 5)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/09/01/looking-at-stonefield-query-for-sage-saleslogix-part-5.aspx" /><id>http://customerfx.com/pages/reporting/2010/09/01/looking-at-stonefield-query-for-sage-saleslogix-part-5.aspx</id><published>2010-09-01T17:00:00Z</published><updated>2010-09-01T17:00:00Z</updated><content type="html">&lt;p&gt;Sorry for the long absence, I went away on some training with the Minnesota National Guard.&amp;nbsp; This is the fifth post in series that is covering the use of a reporting tool called Stonefield Query for Sage SalesLogix.&amp;nbsp; If you would like to take a look at the previous posts here are the links&amp;nbsp;&lt;a href="http://customerfx.com/pages/reporting/2010/07/19/looking-at-stonefield-query-for-sage-saleslogix.aspx" target="_blank"&gt;Post 1&lt;/a&gt;, &lt;a href="http://customerfx.com/pages/reporting/2010/07/27/looking-at-stonefield-query-for-sage-saleslogix-part-2.aspx" target="_blank"&gt;Post 2&lt;/a&gt;, &lt;a href="http://customerfx.com/pages/reporting/2010/08/03/looking-at-stonefield-query-for-sage-saleslogix-part-3.aspx" target="_blank"&gt;Post 3&lt;/a&gt;, and &lt;a href="http://customerfx.com/pages/reporting/2010/08/11/looking-at-stonefield-query-for-sage-saleslogix-part-4.aspx" target="_blank"&gt;Post 4&lt;/a&gt;. In todays post we will cover the use of SQL Views in this reporting tool.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;First of all,&amp;nbsp;I like using SQL Views to organize my data for reporting.&amp;nbsp;I have&amp;nbsp;written a set&amp;nbsp;of SQL&amp;nbsp;views that provides counts of&amp;nbsp;Activities and History Records by user&amp;nbsp;for the current day.&amp;nbsp; This is a set of views&amp;nbsp;so I&amp;nbsp;cannot just paste the statement in this post&amp;nbsp;but I should be able to show you that the use of SQL views is possible.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The first step of course is creating the SQL View.&amp;nbsp; Here is a&lt;a href="http://customerfx.com/pages/reporting/2008/05/27/sql-views-in-reporting-and-grouping.aspx" target="_blank"&gt; link&lt;/a&gt; to a post I wrote back on May 27th 2008 which talks about using SQL Views in Reporting and Grouping&amp;nbsp;and bringing together data from two independent databases.&amp;nbsp; As discussed in the post, once you have the SQL View ready for use you may need to enable it for use in other systems like Stonefield Query.&lt;/p&gt;
&lt;p&gt;To enable a SQL view&amp;nbsp;go into the SLX Architect and open the Database Manager. Find your new view in the list of database tables&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/WindowsLiveWriter/SQLViewsinReportingandGrouping_ACFF/clip_image020_3.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" border="0" alt="clip_image020" src="http://customerfx.com/blogs/reporting/WindowsLiveWriter/SQLViewsinReportingandGrouping_ACFF/clip_image020_thumb_1.jpg" width="423" height="355" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Right Click and select Properties from the list. &lt;/p&gt;
&lt;p style="WIDTH:879px;HEIGHT:455px;"&gt;&lt;a href="http://customerfx.com/blogs/reporting/WindowsLiveWriter/SQLViewsinReportingandGrouping_ACFF/clip_image022_2.jpg"&gt;&lt;img style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;BORDER-TOP:0px;BORDER-RIGHT:0px;" border="0" alt="clip_image022" src="http://customerfx.com/blogs/reporting/WindowsLiveWriter/SQLViewsinReportingandGrouping_ACFF/clip_image022_thumb.jpg" width="426" height="443" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When the “Properties” window opens select the “Enable” button.&lt;/p&gt;
&lt;p&gt;The view is now available for use in Stonefield Query reporting.&amp;nbsp; With this step done open Stonefield Query and&amp;nbsp;follow Stonefield&amp;#39;s wizard to build your report.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery008.bmp"&gt;&lt;img style="WIDTH:683px;HEIGHT:393px;" border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery008.bmp" width="738" height="446" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In Step 2, find your SQL View listed in Table drop down and move the required fields to the right side by double clicking or using the centrally located buttons. &lt;/p&gt;
&lt;p&gt;In Step 3, &amp;nbsp;I created a filter to just get my username to be th only record to display.&amp;nbsp; This is accomplished by clicking on the Filter button, the f Filter&amp;nbsp;screen (in the back ground)&amp;nbsp;will appear.&amp;nbsp; With a click on the &amp;quot;Add&amp;quot; button the&amp;quot; Filter Condition&amp;quot; screen (in the foreground) will appear.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery009.bmp"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery009.bmp" alt="" /&gt;&lt;/a&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Over all, this filtering is very&amp;nbsp;self explanatory and easy to use.&lt;/p&gt;
&lt;p&gt;On Step 5, I selected &amp;quot;Portrait&amp;quot; for my orientation and then selected Preview button to see my report. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery010.bmp"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery010.bmp" width="852" height="145" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ok, I have not done much today in SalesLogix but the point should be taken,&amp;nbsp; I was able to call in a SQL view and then report upon it.&amp;nbsp;&amp;nbsp;My&amp;nbsp;demonstration here&amp;nbsp;is the easiest of examples.&amp;nbsp;&amp;nbsp;The view I used included the username with the data so we did not need to incorporate the userinfo table in our report.&amp;nbsp; I did attempt&amp;nbsp;incorporating the data collected in a similar SQL view with the userinfo table and was unsuccessful.&amp;nbsp; I am not saying that it is impossible at this point but I could not easily figure it out in the time alloted to write for this blog.&amp;nbsp; I will continue to play and see if I can get it to work.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Well that is it for today.&amp;nbsp; Until next time -&amp;nbsp;be safe, do good things and keep smiling. Geo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43764" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /><category term="Stonefield Query" scheme="http://customerfx.com/pages/reporting/archive/tags/Stonefield+Query/default.aspx" /></entry><entry><title>Looking at Stonefield Query for Sage SalesLogix (Part 4)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/08/11/looking-at-stonefield-query-for-sage-saleslogix-part-4.aspx" /><id>http://customerfx.com/pages/reporting/2010/08/11/looking-at-stonefield-query-for-sage-saleslogix-part-4.aspx</id><published>2010-08-11T17:45:00Z</published><updated>2010-08-11T17:45:00Z</updated><content type="html">&lt;p&gt;The last couple of weeks I have been working on a&amp;nbsp;series of posts introducing Stonefield Query for Sage SalesLogix.&amp;nbsp; The first two posts have been focused on &lt;a href="http://customerfx.com/pages/reporting/2010/07/19/looking-at-stonefield-query-for-sage-saleslogix.aspx" target="_blank"&gt;&lt;font color="#3c3c3c"&gt;set up&lt;/font&gt;&lt;/a&gt; and &lt;a href="http://customerfx.com/pages/reporting/2010/07/27/looking-at-stonefield-query-for-sage-saleslogix-part-2.aspx"&gt;&lt;font color="#3c3c3c"&gt;interface&lt;/font&gt;&lt;/a&gt; layout. Last week we created our &lt;a href="http://customerfx.com/pages/reporting/2010/08/03/looking-at-stonefield-query-for-sage-saleslogix-part-3.aspx" target="_blank"&gt;first report&lt;/a&gt;.&amp;nbsp; This week we are going to see if our report can handle custom tables.&amp;nbsp; I have created an add on module we&amp;nbsp;call &lt;a href="http://customerfx.com/pages/cfxproducts/2008/12/01/power2projects-for-sage-saleslogix-web.aspx" target="_blank"&gt;Power2Project&lt;/a&gt;&amp;nbsp;for the Sage SalesLogix Web.&amp;nbsp; We will use this module to test out how Stonefield Query can include custom tables.&lt;/p&gt;
&lt;p&gt;My report layout will be simple, I will list the Account, Project Name, and some of the project numbers.&amp;nbsp; I think my previous post explained well enough how to start a new report so we will not go into those details.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery001.bmp"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery001.bmp" width="731" height="147" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here is the first screen of my wizard, notice that I selected the Data group of SalesLogix.&amp;nbsp; I learned from trial and error last week that this is one way of filtering down the list of available tables. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery003.bmp"&gt;&lt;img style="WIDTH:732px;HEIGHT:209px;" border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery003.bmp" width="741" height="216" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Here on step 2 we see the custom tables already available for us to select from.&amp;nbsp; Again, find the tables that you need for your report and then select the fields for the report by moving them from the list on the left to the list on the right.&amp;nbsp; Once the fields are on the left you can start setting their properties by highlighting and selecting the &amp;quot;Properties&amp;quot; button.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery005.bmp"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery005.bmp" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here I am setting the properties of the EstimatedBudget field. This is a currency field. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery006.bmp"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery006.bmp" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I went to the format tab and unselected the &amp;quot;Use Default Format&amp;quot; check box which then&amp;nbsp;enabled the rest of the&amp;nbsp;the fields for selection.&amp;nbsp; &amp;quot;Display $&amp;quot; was an obvious choice.&amp;nbsp; I learned from trial and error that you also need to set the &amp;quot;Decimal places&amp;quot;.&amp;nbsp; If not your value will look something&amp;nbsp;like this, $25500.0000000.&amp;nbsp; I went through and set the properties on each field.&amp;nbsp; For this report there was a lot of mouse clicking when setting the properties for these field.&amp;nbsp; To be honest I found this to be a little irritating.&amp;nbsp;&amp;nbsp;I looked for and could not find a format painter so you could set the format of one field and then paint others similar fields.&amp;nbsp;&amp;nbsp;&amp;nbsp; Once you get into the Advanced Layout section for this report, I think you could set up the field the way you want and then copy it and&amp;nbsp;then point the new&amp;nbsp;field at a different database field to minimize all of the clicking.&lt;/p&gt;
&lt;p&gt;With no Filters or Expressions I skipped step 3 in the wizard. I set the sorting to Account in step 4.&amp;nbsp; In step five I used the Advance Layout and drew the report out they way I wanted.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery007.bmp"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Stonefieldquery007.bmp" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;OK -&amp;nbsp;not exactly like I wanted but close enough for this test.&amp;nbsp; We confirmed that Stonefield Query for Sage SalesLogix does work with custom tables.&amp;nbsp; I also&amp;nbsp;confirmed my suspicion on copying the fields and resetting the source field to minimize clicking when setting properties.&amp;nbsp; Always seems to be more then one way to skin a cat in this tool, I like that.&amp;nbsp; Next week I want to try filtering, after that I want to see if using SQL&amp;nbsp;View is possible with this tool.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;Thanks for reading! Stay safe and keep smiling.&lt;/p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Stonefieldquery002.bmp"&gt;&lt;/a&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43712" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /><category term="Stonefield Query" scheme="http://customerfx.com/pages/reporting/archive/tags/Stonefield+Query/default.aspx" /></entry><entry><title>Looking at Stonefield Query for Sage SalesLogix (Part 3)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/08/03/looking-at-stonefield-query-for-sage-saleslogix-part-3.aspx" /><id>http://customerfx.com/pages/reporting/2010/08/03/looking-at-stonefield-query-for-sage-saleslogix-part-3.aspx</id><published>2010-08-03T13:33:00Z</published><updated>2010-08-03T13:33:00Z</updated><content type="html">&lt;p&gt;The last couple of weeks I have been working on a&amp;nbsp;series of posts introducing Stonefield Query for Sage SalesLogix.&amp;nbsp; The first two posts have been focused on &lt;a href="http://customerfx.com/pages/reporting/2010/07/19/looking-at-stonefield-query-for-sage-saleslogix.aspx" target="_blank"&gt;set up&lt;/a&gt; and &lt;a href="http://customerfx.com/pages/reporting/2010/07/27/looking-at-stonefield-query-for-sage-saleslogix-part-2.aspx"&gt;interface&lt;/a&gt; layout. This week we are going to actually dig in and create our first report.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I always try to stress in classes that I have taught the importance of sitting down and creating a report plan.&amp;nbsp; It can be as simple a drawing the report out and answering questions like these:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div&gt;What are the fields I want displayed.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;How do you want to group the report.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Are there any records you do not want displayed, what are the rules.&amp;nbsp;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Are there any formula fields.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;You can read more about my thoughts on planning reports &lt;a href="http://customerfx.com/pages/reporting/2009/09/09/planning-a-report.aspx" target="_blank"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Answering these questions gets your mind focused on your task.&amp;nbsp; My plan is to build an Account level report listing the Account, Account Manager, Status, Main Phone Number, along with the&amp;nbsp;City, State, and Postal code displayed in one field.&amp;nbsp; Under the Account I will list the Contacts using&amp;nbsp;a formula field to format the FullName of the Contact, their Status, work number, and email.&amp;nbsp; From my experience with other reporting writing tools I think I may have to create formula fields for formating the phone numbers, the contacts full name, and&amp;nbsp;a combo City, State and Zip field.&amp;nbsp;&amp;nbsp;I will not filter this report at this point.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I want you to know that prior to writing&amp;nbsp;todays post I have not built one report in Stonefield Query.&amp;nbsp; This will be my first of many I am sure.&amp;nbsp;I started writing the report at 8:56am &amp;nbsp;- I completed writing the report at 9:25 am&amp;nbsp;with some decent results.&amp;nbsp;&amp;nbsp;I did not take screen shots while I went but I did take some notes and I will try my best to recreate the experience in the next few lines.&lt;/p&gt;
&lt;p&gt;The first thing I did was create a folder to hold my report.&amp;nbsp; I right clicked anywhere on the tree control side of the interface and selected &amp;quot;New Folder&amp;quot; from the list that appeared.&amp;nbsp; I named&amp;nbsp;the folder&amp;nbsp;&amp;quot;Custom Reports&amp;quot;.&lt;/p&gt;
&lt;p&gt;With my new&amp;nbsp; folder highlighted, I right clicked again and selected &amp;quot;New Report&amp;quot; from the list. &lt;/p&gt;
&lt;p&gt;Immediately I received the &amp;quot;Report Types&amp;quot; screen.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities130.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities130.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I used the default and selected &amp;quot;OK&amp;quot;, the&amp;quot; New Quick Report Wizard&amp;quot; opened.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities131.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities131.jpg" width="439" height="546" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In step 1 -&amp;nbsp;I named my report, left the defaults,&amp;nbsp;and selected the&amp;nbsp;&amp;quot;Next&amp;quot; button.&amp;nbsp; Later I discovered that SalesLogix was one of the choices in the &amp;quot;Data Group&amp;quot; drop down.&amp;nbsp;&amp;nbsp;Playing around now&amp;nbsp;I see using this drop down to filter the tables will make it easier to find the&amp;nbsp;tables you want to work with in&amp;nbsp;step two. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities132.jpg"&gt;&lt;img style="WIDTH:445px;HEIGHT:456px;" border="0" src="http://customerfx.com/blogs/reporting/AddingActivities132.jpg" width="471" height="513" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use the &amp;quot;Table&amp;quot; field to&amp;nbsp;select the table the&amp;nbsp;display field resides in.&amp;nbsp; The &amp;quot;Available Fields&amp;quot; list along the left hand side will display the&amp;nbsp;all of tables&amp;nbsp;fields.&amp;nbsp; You can double click on&amp;nbsp;or use the buttons in the center to move the display field from the left to the right. The left pointing arrows are the only way to remove a field from the list on the right.&amp;nbsp; A double click on a field on the right brings up&amp;nbsp;the fields&amp;nbsp;property window where you can set display options.&amp;nbsp; If you want to move a field up or down in list on the right then highlight it and drag to where you want it. &lt;/p&gt;
&lt;p&gt;The formula button appears to be the place where you will create any formula fields you may need.&amp;nbsp; The fields that I thought were going to have to be formulated were all already available in the tables I selected.&amp;nbsp; Anyone who has went through the hassle of formatting phone numbers to display like these&amp;nbsp;in Crystal will understand my relief.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The &amp;quot;Values&amp;quot; button allows you to see the data of the highlighted field&amp;nbsp;that you have called into your report in a distinct list view.&amp;nbsp; this gives you the ability to make sure the right field was selected&lt;/p&gt;
&lt;p&gt;The &amp;quot;Properties&amp;quot; button, again, brings up the property window for any field highlighted in the list on the right. &lt;/p&gt;
&lt;p&gt;At this point I am about five minutes into my report.&amp;nbsp; All of my fields are selected and this is what my report looks like by selecting the the &amp;quot;Preview&amp;quot; button.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities136.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities136.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I know it is not pretty but we are only on step 2. &amp;nbsp;Closing the preview and selecting the &amp;quot;Next&amp;quot; button&amp;nbsp;and I receive Step 3 of the wizard used for filtering.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities134.jpg"&gt;&lt;img style="WIDTH:454px;HEIGHT:584px;" border="0" src="http://customerfx.com/blogs/reporting/AddingActivities134.jpg" width="463" height="591" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With no filters thought up ahead of time I skipped this but I will guarantee we will come back to this section in a later post. Next brought me to the Step 4 which is where we set up our Sort Options. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities135.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities135.jpg" width="453" height="510" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Same idea as before, find your table and select your field.&amp;nbsp; To select the Direction highlight the field in the list&amp;nbsp;on the right and select the direction in the center.&amp;nbsp; I love how straight forward that is.&amp;nbsp; Select the &amp;quot;Next&amp;quot; button&amp;nbsp;and you come to what really amounts to the meat of this wizard, the Formatting Options area.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities137.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities137.jpg" width="457" height="493" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I will also tell you that I went straight through this the first time but found my report pretty much as displayed above except now sorted by the Account Name. In fact I buzzed right through the wizard in about&amp;nbsp;7 minutes.&amp;nbsp; My challenge was&amp;nbsp;figuring out the how to group the Contact under&amp;nbsp;the Account.&amp;nbsp;&amp;nbsp;So to&amp;nbsp;get back to the Formatting Options section of the report wizard,&amp;nbsp;I highlighted my report in the tree control and selected &amp;quot;Edit&amp;quot; icon located on the Tool bar.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities139.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities139.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then in the drop down in the upper right hand corner I selected Step 5 Formatting Options&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities140.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities140.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I played around with the Templates area&amp;nbsp;a little with no luck and then I checked the &amp;quot;Advanced Layout&amp;quot; check box&amp;nbsp;on the bottom center of the&amp;nbsp;screen and I selected the&amp;nbsp;the &amp;quot;Edit&amp;quot; button below it.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities141.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities141.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;My world started coming together again.&amp;nbsp; First you will be asked if you want the objects to be autofitted, I selected no but that option is up to you.&amp;nbsp; Then I was presented with the Advanced Report Designer.&amp;nbsp; I started looking around&amp;nbsp;in here trying to get me feet grounded.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities149.jpg"&gt;&lt;img style="WIDTH:617px;HEIGHT:261px;" border="0" src="http://customerfx.com/blogs/reporting/AddingActivities149.jpg" width="721" height="319" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The File menu led me to the &amp;quot;Page Set Up&amp;quot; which then provided me with the&amp;nbsp;&amp;quot;Report Properties&amp;quot;&amp;nbsp;interface it was then I new I was on the right track.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities143.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities143.jpg" width="621" height="400" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I opened the Data Groupings Tab, Selected the Add button to see the Expression Builder.&amp;nbsp; The screen seemed a little complicated at first, I mean I did not know what kind of expression I needed.&amp;nbsp; Following some of the same logic we used in previous screens I&amp;nbsp;selected the Account table.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities145.jpg"&gt;&lt;img style="WIDTH:628px;HEIGHT:395px;" border="0" src="http://customerfx.com/blogs/reporting/AddingActivities145.jpg" width="640" height="399" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I double clicked on the Account field and it appeared in the Expression above. Experimenting now. I selected the&amp;nbsp;&amp;quot;OK&amp;quot; button which&amp;nbsp;brought me back to the Report Properties where we see the field now in the Group Nesting Order.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities146.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities146.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When I selected OK, I was brought back to the Advanced Report Designer where I could clearly see the new group area. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities150.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities150.jpg" width="644" height="285" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I am at about 12 minutes into building this report so&amp;nbsp;I spent the rest of the time drawing the report out.&amp;nbsp; Moving the Account level fields into the Account group, arranging the Contact fields in their order in the details section and playing with the labels&amp;nbsp;until everything made some sense.&amp;nbsp; You can see the results below.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities129.jpg"&gt;&lt;img style="WIDTH:639px;HEIGHT:399px;" border="0" src="http://customerfx.com/blogs/reporting/AddingActivities129.jpg" width="926" height="445" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;At this point I am very pleased with the tool.&amp;nbsp; I know&amp;nbsp;Stonefield Query can do much more and that I have only touched the surface.&amp;nbsp;&amp;nbsp;Next week we will look at building a report using Custom SLX Tables and maybe a little filtering to boot. Thanks for reading, stay safe, and keep smiling.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43685" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /><category term="Stonefield Query" scheme="http://customerfx.com/pages/reporting/archive/tags/Stonefield+Query/default.aspx" /></entry><entry><title>Looking at Stonefield Query for Sage SalesLogix (Part 2)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/07/27/looking-at-stonefield-query-for-sage-saleslogix-part-2.aspx" /><id>http://customerfx.com/pages/reporting/2010/07/27/looking-at-stonefield-query-for-sage-saleslogix-part-2.aspx</id><published>2010-07-27T13:28:00Z</published><updated>2010-07-27T13:28:00Z</updated><content type="html">&lt;p&gt;Last week I wrote about my experience downloading and setting up Stonefield Query.&amp;nbsp; This SalesLogix reporting tool has been around for years and I thought it was time to take a close look at the tool and its capabilities.&amp;nbsp;&amp;nbsp;I am still in the introductory mode, getting use to where things are.&amp;nbsp;&amp;nbsp;Today we will take a look at the user interface. &lt;/p&gt;
&lt;p&gt;I entered into Stonefield Query through the desk top icon left from the install.&amp;nbsp; I had to enter in the username and password for Stonefield Query only, the system remembered the database login information for the last database I worked with which for me is great.&amp;nbsp; I can&amp;#39;t tell you how many times I have lost my database connection for reports I have built in Crystal. &lt;/p&gt;
&lt;p&gt;The user interface that came up&amp;nbsp;is clean and straight forward.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities123.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities123.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The&amp;nbsp;&lt;strong&gt;File&lt;/strong&gt; menu allows&amp;nbsp;you to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;Create a new report or folder.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Delete, rename, copy, or edit an existing report.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Open a new database connection.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Import and export report.&amp;nbsp; &lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Print and preview your reports.&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;The &lt;strong&gt;Edit&lt;/strong&gt; menu&amp;nbsp;contains the usual&amp;nbsp;Cut, Copy, and Paste options along with the Undo and Redo functionality.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Tools&lt;/strong&gt; menu is where you:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;Manage&amp;nbsp;your passwords, users and licenses.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Run the report scheduler.&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Set up templates&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Create formulas&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Import email Addresses&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;You will also find your user options interface&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;The Help menu brings you to what I like so far the most about Stonefield query, the documentation.&amp;nbsp; Every question I have had so far has been easily answered through the Help files with clear understandable information.&amp;nbsp; Also in the help menu you will find the&amp;nbsp;Stonefield Query Reference Manual which is a .pdf document with over 400 pages of information.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities124.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities124.jpg" alt="" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;As with most user interfaces, the tool bar brings some of the more commonly used functionality from the menus&amp;nbsp;to the fore front.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities125.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities126.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities126.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The main pane is broken up into two sections.&amp;nbsp; The section to the left is a tree control listing&amp;nbsp;containing folders and reports.&amp;nbsp; You have the ability to add folders one layer deep to organize your reports.&amp;nbsp; A right click on any of the items in the tree control will bring up the&amp;nbsp;list with all of the items&amp;nbsp;seen on the File menu.&amp;nbsp; As you highlight items on the left the section on&amp;nbsp;the right changes to display the&amp;nbsp;properties of the selected item. Everything is up front and easy to use and understand.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The SalesLogix version of this reporting tool comes&amp;nbsp;with 7 canned reports.&amp;nbsp;&amp;nbsp; These reports are very simple and&amp;nbsp;I believe are more to get the user started,&amp;nbsp;more for&amp;nbsp;showing some of the possibilities you have with reporting in this tool then to provide any real purpose.&amp;nbsp; But they do run and provide feed back so their value is for you to decide.&amp;nbsp; To run a report, highlight and click Preview button on the tool bar.&amp;nbsp; Again very simple and easy to use.&lt;/p&gt;
&lt;p&gt;So there you go, a very high level introduction to the user interface.&amp;nbsp; Through this process I noticed that there is a wizard that helps you build your report.&amp;nbsp; We will&amp;nbsp;dig into that next week when we try to create our first report.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;As I&amp;nbsp;go through this process of writing about Stonefield Query I started to develop a list of questions:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;Can I edit the layout of my reports?&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Can I add graphs into any of the reports I build?&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Often I have to use formulas to provide data for my reports, is this possible?&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;I know I can use filters, but can I set the data for the filter at the time I run my report?&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Can I build my report with a lot of data&amp;nbsp;elements and then use values entered at runtime to set what of that data is displayed when the report prints?&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;I often like to use SQL Views to organize my data for reporting, is this possible?&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;I am sure I will come up with some more as we go forward reviewing this reporting tool and I look forward to discovering the answers.&amp;nbsp;&amp;nbsp;Thanks for reading? &lt;/p&gt;
&lt;p&gt;Until next time, be well, do good things and keep smiling. &lt;img alt="Smile" src="http://customerfx.com/emoticons/emotion-1.gif" /&gt;&lt;/p&gt;
&lt;p&gt;Please Contact - Scott Weber&amp;nbsp;@ &lt;a href="mailto:scott.weber@customerfx.com"&gt;scott.weber@customerfx.com&lt;/a&gt;&amp;nbsp;if you are interested in seeing a demo of this reporting tool.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43662" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /><category term="Stonefield Query" scheme="http://customerfx.com/pages/reporting/archive/tags/Stonefield+Query/default.aspx" /></entry><entry><title>Looking at Stonefield Query for Sage SalesLogix</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/07/19/looking-at-stonefield-query-for-sage-saleslogix.aspx" /><id>http://customerfx.com/pages/reporting/2010/07/19/looking-at-stonefield-query-for-sage-saleslogix.aspx</id><published>2010-07-19T13:26:00Z</published><updated>2010-07-19T13:26:00Z</updated><content type="html">&lt;p&gt;Since reporting&amp;nbsp;is one of my interests I always&amp;nbsp;tend to take&amp;nbsp;notice&amp;nbsp;when I hear of a reporting tool.&amp;nbsp; A few weeks ago &lt;a href="http://customerfx.com/pages/saleslogix/default.aspx"&gt;Scott Weber&lt;/a&gt;,&amp;nbsp;Customer FX&amp;#39;s own CRM Practice Manager and Senior Consultant,&amp;nbsp;introduced a product to me called Stonefield Query.&amp;nbsp; It was a ten minute demo but I was pretty impressed by what I saw.&amp;nbsp;&amp;nbsp;I thought I would take some time and dig into the Sage SalesLogix version of this this reporting tool and write about my experience as a new user of this reporting tool.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;To their credit Stonefield Query has been around for a number of years, since 1991.&amp;nbsp; When you type in the words &amp;quot;SalesLogix Report Writing&amp;quot; they come up easily in the top 10 on any of the search engine.&amp;nbsp;&amp;nbsp;&amp;nbsp;Jason Okrepkie and Chris Hodgins&amp;nbsp;at &lt;a href="http://www.stonefieldquery.com/"&gt;Stonefield Query&lt;/a&gt; provided a NFR license for the purpose of this series of blog posts.&amp;nbsp; You can go to their web site to download a free trial of the software for many types of CRM, Accounting, ERP, and Help Desk Applications.&amp;nbsp; Using the website I found it very easy to find and download the software version for Sage SalesLogix.&amp;nbsp; The file size of my download was about 23 MB so it took only about 3 minutes.&amp;nbsp; The&amp;nbsp;software loaded in less then 1 minute and when finished&amp;nbsp;I was presented with a cool little wizard to help complete the set up. &lt;/p&gt;
&lt;p&gt;The first step in the wizard is selecting&amp;nbsp;a location where your custom reports will be&amp;nbsp;stored after they are created.&amp;nbsp; This allows you to centrally store your reports on the networks for others to use.&amp;nbsp;&amp;nbsp;The system defaults to the Program Files folder for your local machine but&amp;nbsp;the interface allows for you to custom set this to any location.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The second step is setting up your email information so you can email your custom reports.&amp;nbsp; I selected the help button which immediately helped me figure out what setting I required.&lt;/p&gt;
&lt;p&gt;As soon as I&amp;nbsp;set my email preferences I was presented with&amp;nbsp;Stonefield Query login interface&amp;nbsp;that had a list of all my SalesLogix database connections.&amp;nbsp; The default login info&amp;nbsp;for Stonefield Query is user name = Admin and the password is also&amp;nbsp;Admin.&amp;nbsp; Stonefield Query gives you this information right on the login interface and you can&amp;nbsp;change these settings&amp;nbsp;once you are in.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I selected my target SalesLogix database&amp;nbsp;then the Stonefield&amp;nbsp;system provided an interface to select an&amp;nbsp;ODBC connection.&amp;nbsp;This&amp;nbsp;connection allows access to all of the custom tables that are in the system.&amp;nbsp; The help file was pretty good at explaining the process&amp;nbsp;for the unexperienced.&amp;nbsp; FYI, I used the Search Tab and the&amp;nbsp;value &amp;quot;ODBC&amp;quot; and&amp;nbsp;I was brought right to the information I needed. &amp;nbsp;The challenge here is this step&amp;nbsp;requires a&amp;nbsp;login into SQL.&amp;nbsp; From my experience working with&amp;nbsp;the readers&amp;nbsp;out there,&amp;nbsp;most report writers do not&amp;nbsp;have a direct&amp;nbsp;login to the SQL client.&amp;nbsp; You will have to work with your SQL Database administrator to acquire this information.&amp;nbsp; Also, you need one ODBC Connection for each database you want to work with.&amp;nbsp;&amp;nbsp; Overall this step was a little confusing but with the help file and little persistence I was able to log into Stonefield Query with access to the database.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I backed all of the way out and closed out of Stonefield Query.&amp;nbsp; Logging back in I received the Stonefield Query login with my targeted database already selected and that was it.&amp;nbsp;So the interface must store the SalesLogix user name and password and maintained the ODBC Connection.&amp;nbsp;&amp;nbsp;&amp;nbsp;I am up and running in Stonefield Query in less then and hour.&amp;nbsp; I am set up to report against a SalesLogix database that has been customized into Customer FX&amp;#39;s&amp;nbsp;Power2Project for SalesLogix the 752 web client.&amp;nbsp; Next time we will review the interface and work with the standard reports that come with the tool.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks for reading.&amp;nbsp; Geo&lt;/p&gt;
&lt;p&gt;Please Contact - Scott Weber&amp;nbsp;@ &lt;a href="mailto:scott.weber@customerfx.com"&gt;scott.weber@customerfx.com&lt;/a&gt;&amp;nbsp;if you are interested in seeing a demo of this reporting tool.&amp;nbsp; &lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43639" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="Report Writing" scheme="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx" /><category term="SalesLogix" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx" /><category term="Stonefield Query" scheme="http://customerfx.com/pages/reporting/archive/tags/Stonefield+Query/default.aspx" /></entry><entry><title>Running a SQL Update Statement from Saleslogix Web</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/06/23/running-a-sql-update-statement-from-saleslogix-web.aspx" /><id>http://customerfx.com/pages/reporting/2010/06/23/running-a-sql-update-statement-from-saleslogix-web.aspx</id><published>2010-06-23T20:49:00Z</published><updated>2010-06-23T20:49:00Z</updated><content type="html">&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;I am working for a client who would like&amp;nbsp;a&amp;nbsp;button to set all of the records in a table to either &amp;quot;Valid&amp;quot; or &amp;quot;&amp;quot; (blank).&amp;nbsp; This then allows them to&amp;nbsp;build groups&amp;nbsp;on what records needs to be updated.&amp;nbsp; I started my adventure by reading Kris Halsrud&amp;#39;s post &lt;/font&gt;&lt;a href="http://customerfx.com/pages/integrationblog/2009/01/29/retrieving-the-manager-in-saleslogix-7-5-web.aspx"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Retrieving the Manager in SalesLogix 7.5&amp;nbsp;Web&lt;/font&gt;&lt;/a&gt;&lt;font face="arial,helvetica,sans-serif"&gt; .&amp;nbsp;&amp;nbsp; The solution Kris outlines&amp;nbsp;provided most of what I needed and direct conversation with Kris himself provided the rest.&amp;nbsp; I wanted to document it here so I do not have to bug him the next time I need to do this.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;This is what our C# Snippet Action item looks like launched from the button.&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" size="2" face="arial,helvetica,sans-serif"&gt;
&lt;p&gt;Sage.Platform.Data.IDataService datasvc = Sage.Platform.Application.ApplicationContext.Current.Services.Get&amp;lt;Sage.Platform.Data.IDataService&amp;gt;();&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt;using&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt; (System.Data.OleDb.OleDbConnection conn = &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;new&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt; System.Data.OleDb.OleDbConnection(datasvc.GetConnectionString())) &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt;{&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt;conn.Open(); &lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt;System.Data.OleDb.OleDbCommand cmd = &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;new&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt; System.Data.OleDb.OleDbCommand(&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;quot;&lt;font color="#006600"&gt;update sysdba.TABLE set&amp;nbsp;FIELD = &amp;#39;Value&amp;#39;&lt;/font&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Courier New"&gt;&lt;font size="2" face="Courier New"&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt;,conn); &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Courier New"&gt;&lt;font size="2" face="Courier New"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Courier New"&gt;&lt;font size="2" face="Courier New"&gt;
&lt;p&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt;cmd.ExecuteNonQuery();&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" face="Arial"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;The green text is the slq statement, the rest should be able to be used as is.&amp;nbsp; I hope this little post helps someone else down the line. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Thanks &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Geo&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43525" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="SalesLogix Web" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Web/default.aspx" /><category term="Development" scheme="http://customerfx.com/pages/reporting/archive/tags/Development/default.aspx" /><category term="How To" scheme="http://customerfx.com/pages/reporting/archive/tags/How+To/default.aspx" /></entry><entry><title>Adding Activities and History to a Custom Main Entity in the Saleslogix Web Client (Final)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/06/09/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-final.aspx" /><id>http://customerfx.com/pages/reporting/2010/06/09/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-final.aspx</id><published>2010-06-09T13:00:00Z</published><updated>2010-06-09T13:00:00Z</updated><content type="html">&lt;p&gt;I am at the end of a series of posts providing some easy to follow steps&amp;nbsp;that will help a developer&amp;nbsp;add the ability to associate Activity and History records&amp;nbsp;for a custom main entity within the SalesLogix Web Client.&amp;nbsp;&amp;nbsp;Read the&amp;nbsp;previous&amp;nbsp;four posts to catch up on where we are at. &lt;a href="http://customerfx.com/pages/reporting/2010/05/03/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client.aspx"&gt;&lt;font color="#3c3c3c" face="arial,helvetica,sans-serif"&gt;Part 1&lt;/font&gt;&lt;/a&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&amp;nbsp;&lt;/font&gt;&lt;a href="http://customerfx.com/pages/reporting/2010/05/04/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client-part-2.aspx"&gt;&lt;font color="#3c3c3c" face="arial,helvetica,sans-serif"&gt;Part 2&lt;/font&gt;&lt;/a&gt;,&amp;nbsp;&lt;a href="http://customerfx.com/pages/reporting/2010/05/11/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-3.aspx"&gt;&lt;font color="#3c3c3c"&gt;Part 3&lt;/font&gt;&lt;/a&gt;, &lt;a href="http://customerfx.com/pages/reporting/2010/05/20/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-4.aspx"&gt;Part 4&lt;/a&gt;, and &lt;a href="http://customerfx.com/pages/reporting/2010/06/06/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-5.aspx"&gt;Part 5&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The last step contains no coding what so ever.&amp;nbsp; We simply are adding the already existing smart parts to our main entity page.&amp;nbsp; There are four parts that&amp;nbsp;are added in order for the functionality to be complete.&amp;nbsp; These are&amp;nbsp;all custom smart parts that come standard with Sage SalesLogix Web.&amp;nbsp; They are labeled EditRecurrence, CompleteRecurrence, ActivityList, and HistoryList.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The first step is to find your main entity page.&amp;nbsp; These are generally found in the Project Explorer Tree Control under Sage SalesLogix/Pages.&amp;nbsp; Right click on your custom main entity page and select &amp;quot;Edit Page&amp;quot;.&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities027.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities027.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The tab we want to work on is&amp;nbsp;labeled &amp;quot;Smart Parts&amp;quot;.&amp;nbsp; Along the left side you see a list of the smart parts that are operating with your main entity page, on the right you see&amp;nbsp;the settings for each of the smart parts.&amp;nbsp; To get&amp;nbsp;the custom smart part&amp;nbsp;working with your custom page select the plus sign on the upper left hand corner of the tab.&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities028.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities028.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When the dialog opens find the &amp;quot;Custom&amp;quot; tab, on this tab look for the &amp;quot;SmartParts&amp;quot; folder, then look for the Activities folder, no look for the CompleteRecurrence.ascx custom smart part and select it&amp;nbsp;&amp;nbsp; Once selected you will see the smart part appear in your list, along the right you will need to make some adjustments to the Target Workspace and Show In Mode fields.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities029.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities029.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Follow this same process for each of the smart parts listed.&amp;nbsp; You will find the EditRecurrence.ascx and ActivityList.ascx&amp;nbsp;files are&amp;nbsp;in the same list that you found CompleteRecurrence.&amp;nbsp; The HistoryList.ascx is located in the History folder.&amp;nbsp; The ActivityList and HistoryList parts are actually the tabs you will view the records on under your main entity.&amp;nbsp; The Target Workspace&amp;nbsp;property field should be set to Tab Contro for both the ActivityList and HistoryList views&amp;nbsp;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This completes this long but hopefully helpful series.&amp;nbsp;&amp;nbsp;Adding this&amp;nbsp;functionality makes your custom entity more of an integrated part of SalesLogix.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43438" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="SalesLogix Web" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Web/default.aspx" /><category term="Development" scheme="http://customerfx.com/pages/reporting/archive/tags/Development/default.aspx" /><category term="How To" scheme="http://customerfx.com/pages/reporting/archive/tags/How+To/default.aspx" /></entry><entry><title>Adding Activities and History to a Custom Main Entity in the Saleslogix Web Client (Part 5)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/06/06/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-5.aspx" /><id>http://customerfx.com/pages/reporting/2010/06/06/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-5.aspx</id><published>2010-06-06T13:39:00Z</published><updated>2010-06-06T13:39:00Z</updated><content type="html">&lt;p&gt;Today I am sitting in the hospital helping my wonderful wife welcome our fourth child into this world.&amp;nbsp; Cailyn Elizabeth was born on the 4th of June after 16 hours of labor measuring out at 10lbs and 21 inches.&amp;nbsp; She is very beautiful and mom and baby are doing great.&amp;nbsp; This is the second to last post of my effort to provide some easy to follow steps that will help a developer add the ability to associate Activity and History records for a custom main entity within the SalesLogix Web Client.&amp;nbsp; Read the previous four posts to catch up on where we are at. &lt;a href="http://customerfx.com/pages/reporting/2010/05/03/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client.aspx"&gt;&lt;font color="#3c3c3c" face="arial,helvetica,sans-serif"&gt;Part 1&lt;/font&gt;&lt;/a&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&amp;nbsp;&lt;/font&gt;&lt;a href="http://customerfx.com/pages/reporting/2010/05/04/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client-part-2.aspx"&gt;&lt;font color="#3c3c3c" face="arial,helvetica,sans-serif"&gt;Part 2&lt;/font&gt;&lt;/a&gt;,&amp;nbsp;&lt;a href="http://customerfx.com/pages/reporting/2010/05/11/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-3.aspx"&gt;&lt;font color="#3c3c3c"&gt;Part 3&lt;/font&gt;&lt;/a&gt;, and &lt;a href="http://customerfx.com/pages/reporting/2010/05/20/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-4.aspx"&gt;Part 4&lt;/a&gt;.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;In this post we will add scripts to the two list views that are used in all main entities to display Activity and History records.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;If you have been following along with the earlier posts you hopefully have an idea of the flow of how we are accomplishing this task.&amp;nbsp; Like we did in the last post, today we are going to just focus on the code and where it goes.&amp;nbsp;&amp;nbsp;But first, lets create some new definitions for todays code.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;We still need to use EntityName but we will format the characters a little differently today.&amp;nbsp; The first letter will be uppercase and&amp;nbsp;all remaining letters will be lowercase.&amp;nbsp; This is mandated by some existing code with the script we are working on.&amp;nbsp; &amp;quot;EntityName&amp;quot; now looks like &amp;quot;Entityname&amp;quot; or &amp;quot;FXProject&amp;quot; now looks like &amp;quot;Fxproject&amp;quot;.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The other definition we need is the EntityId in proper case.&amp;nbsp;&amp;nbsp;This is the primary id field for the custom entity.&amp;nbsp; For the FXProject&amp;nbsp;entity the entityId is FXProjectId.&lt;/p&gt;
&lt;p&gt;The two files we will modify today in the SalesLogix Application Architect(AA) are labeled ActivityList.ascx.cs and HistoryList.ascx.cs.&amp;nbsp; These files actually provide the code to support the pages that list the data. You can find these files in the AA under the Project Explorer tab.&amp;nbsp; In the tree control look for and open the Portal Manager, then Sage SalesLogix, then Support Files. We will work for the ActivityList.ascx.cs file first which is located in the Activity folder.&amp;nbsp; When you have the the file open, go to line 103 and hit enter twice. Add the following:&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (entityName.Equals(&amp;quot;&lt;strong&gt;Entityname&lt;/strong&gt;&amp;quot;))//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Page.Session[&amp;quot;E&lt;strong&gt;ntityId&lt;/strong&gt;&amp;quot;] = entityId;//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Page.Session[&amp;quot;&lt;strong&gt;EntityId&lt;/strong&gt;&amp;quot;] = &amp;quot;&amp;quot;;//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The first entityName is actually code that should not be changed.&amp;nbsp; I bolded the Entityname and EntityId that need to be replaced with your definitions.&lt;/p&gt;
&lt;p&gt;Still in the same file with the previous set of code in place go to line 140 and hit the enter key twice. Then add this code:&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (entityName.Equals(&amp;quot;&lt;strong&gt;Entityname&lt;/strong&gt;&amp;quot;))//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Page.Session[&amp;quot;&lt;strong&gt;EntityId&lt;/strong&gt;&amp;quot;] = entityId;//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (((BoundField)(col)).DataField.Equals(&amp;quot;Category&amp;quot;))//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; col.Visible = false;//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (((BoundField)(col)).DataField.Equals(&amp;quot;ContactName&amp;quot;))//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; col.Visible = false;//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (((BoundField)(col)).DataField.Equals(&amp;quot;Notes&amp;quot;))//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; col.Visible = true;//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This bit of code adjust the visibility of columns based on the Entity level your are on. You can customize this to fit the needs for your custom main entity.&lt;/p&gt;
&lt;p&gt;For the last bit of code in this file navigate to line 302, hit enter once and add the following code.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &amp;quot;&lt;strong&gt;Entityname&lt;/strong&gt;&amp;quot;://Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; keyId = &amp;quot;&lt;strong&gt;EntityId&lt;/strong&gt;&amp;quot;;//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;//Mine&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This provides the keyId for the Activity grid so it knows what records to display when it is on your entity.&amp;nbsp; This is the exact same code the you will use starting on line 132 of the HistoryList.ascx.cs file.&amp;nbsp; You are currently in the Activity folder, the HistoryList file is located under the history folder.&lt;/p&gt;
&lt;p&gt;That is enough for today.&amp;nbsp; We finish up with next post where we add these and other smart parts to the main entity page. &lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=43455" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="SalesLogix Web" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Web/default.aspx" /><category term="Development" scheme="http://customerfx.com/pages/reporting/archive/tags/Development/default.aspx" /><category term="How To" scheme="http://customerfx.com/pages/reporting/archive/tags/How+To/default.aspx" /></entry><entry><title>Adding Activities and History to a Custom Main Entity in the Saleslogix Web Client (Part 4)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/05/20/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-4.aspx" /><id>http://customerfx.com/pages/reporting/2010/05/20/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-4.aspx</id><published>2010-05-20T14:19:00Z</published><updated>2010-05-20T14:19:00Z</updated><content type="html">&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;I am near&amp;nbsp;the&amp;nbsp;end of a series of posts providing some easy to follow steps&amp;nbsp;that will help a developer&amp;nbsp;add the ability to associate Activity and History records&amp;nbsp;for a custom main entity within the SalesLogix Web Client.&amp;nbsp;&amp;nbsp;Read the&amp;nbsp;previous three posts to catch up on where we are at. &lt;/font&gt;&lt;a href="http://customerfx.com/pages/reporting/2010/05/03/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client.aspx"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Part 1&lt;/font&gt;&lt;/a&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&amp;nbsp;&lt;/font&gt;&lt;a href="http://customerfx.com/pages/reporting/2010/05/04/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client-part-2.aspx"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Part 2&lt;/font&gt;&lt;/a&gt;, and&amp;nbsp;&amp;nbsp;&lt;a href="http://customerfx.com/pages/reporting/2010/05/11/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-3.aspx"&gt;Part 3&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Since the previous two posts went into great detail, today&amp;nbsp;we are going to mostly focus on the code and where it goes.&amp;nbsp;&amp;nbsp;You still&amp;nbsp;need the&amp;nbsp;definitions we used in your code&amp;nbsp;in parts 2 and 3.&amp;nbsp; &lt;/font&gt;&lt;font face="arial,helvetica,sans-serif"&gt;There are three areas we will modify today in the SalesLogix Application Architect(AA).&amp;nbsp; Please find and open the following:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;CompleteActivity.ascx&amp;nbsp; (This holds the properties for the Complete Activity Page)&lt;br /&gt;CompleteActivity.ascx.resx (This holds the definition for the labels the page above)&lt;br /&gt;CompleteActivity.ascx.cs (This holds the code supporting the page)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Once again you&amp;nbsp;find these files in the AA under the Project Explorer Tab following same process as detailed in parts 2 and&amp;nbsp;3. &amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Let&amp;#39;s get started with the CompleteActivity.ascx. To add our code navigate to the end of line 205,&amp;nbsp;hit the enter button, and&amp;nbsp;paste in&amp;nbsp;the following lines:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600" face="arial,helvetica,sans-serif"&gt;&amp;lt;%--Start My Code --%&amp;gt;&lt;br /&gt;&amp;lt;%--End My Code --%&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;These should be lines&amp;nbsp;206 and 207. Go to the end of line&amp;nbsp;206 and hit the enter key again and then paste the following on empty line 207:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;td colspan=&amp;quot;2&amp;quot;&amp;gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span class=&amp;quot;twocollbl&amp;quot;&amp;gt;&amp;lt;asp:Label ID=&amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;_lz&amp;quot; AssociatedControlID=&amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;&amp;lt;%$ resources: &lt;strong&gt;FieldName&lt;/strong&gt;_lz.Text %&amp;gt;&amp;quot;&amp;gt;&amp;lt;/asp:Label&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span class=&amp;quot;twocoltextcontrol&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SalesLogix:LookupControl Width=&amp;quot;95%&amp;quot; runat=&amp;quot;server&amp;quot; ID=&amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;&amp;quot; AutoPostBack=&amp;quot;true&amp;quot; AllowClearingResult=&amp;quot;true&amp;quot; LookupBindingMode=&amp;quot;string&amp;quot; ReturnPrimaryKey=&amp;quot;true&amp;quot; LookupEntityName=&amp;quot;&lt;strong&gt;EntityName&lt;/strong&gt;&amp;quot; LookupEntityTypeName=&amp;quot;Sage.Entity.Interfaces.I&lt;strong&gt;EntityName&lt;/strong&gt;, Sage.Entity.Interfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null&amp;quot;&amp;nbsp; &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LookupProperties&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SalesLogix:LookupProperty PropertyHeader=&amp;quot;&amp;lt;%$ resources: Lookup_&lt;strong&gt;Field1&lt;/strong&gt;.PropertyHeader %&amp;gt;&amp;quot; PropertyName=&amp;quot;&lt;strong&gt;Field1&lt;/strong&gt;&amp;quot; PropertyFormat=&amp;quot;None&amp;quot;&amp;nbsp; UseAsResult=&amp;quot;True&amp;quot;&amp;gt;&amp;lt;/SalesLogix:LookupProperty&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SalesLogix:LookupProperty PropertyHeader=&amp;quot;&amp;lt;%$ resources: Lookup_&lt;strong&gt;Field2&lt;/strong&gt;.PropertyHeader %&amp;gt;&amp;quot; PropertyName=&amp;quot;&lt;strong&gt;Field2&lt;/strong&gt;&amp;quot; PropertyFormat=&amp;quot;None&amp;quot;&amp;nbsp; UseAsResult=&amp;quot;True&amp;quot;&amp;gt;&amp;lt;/SalesLogix:LookupProperty&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SalesLogix:LookupProperty PropertyHeader=&amp;quot;&amp;lt;%$ resources: Lookup_&lt;strong&gt;Field3&lt;/strong&gt;.PropertyHeader %&amp;gt;&amp;quot; PropertyName=&amp;quot;&lt;strong&gt;Field3&lt;/strong&gt;&amp;quot; PropertyFormat=&amp;quot;None&amp;quot;&amp;nbsp; UseAsResult=&amp;quot;True&amp;quot;&amp;gt;&amp;lt;/SalesLogix:LookupProperty&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LookupProperties&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LookupPreFilters&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LookupPreFilters&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/SalesLogix:LookupControl&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/span&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#006600"&gt;
&lt;p&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;Add your definitions&amp;nbsp;using the lists we developed in Part 2. &amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;The modifications to the ScheduleCompleteActivity.ascx.resx field are pretty much as we did yesterday.&amp;nbsp; Here we want to navigate near to the very&amp;nbsp;end of the file,&amp;nbsp;on line 326, hit enter and&amp;nbsp;paste in&amp;nbsp;the following lines:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600" face="arial,helvetica,sans-serif"&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;_lz.Text&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;LookupLabel&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;Lookup_&lt;strong&gt;Field1&lt;/strong&gt;.PropertyHeader&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;Field1Label&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;Lookup_&lt;strong&gt;Field2&lt;/strong&gt;.PropertyHeader&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;Field2Label&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;Lookup_&lt;strong&gt;Field3&lt;/strong&gt;.PropertyHeader&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;Field3Label&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;For the CompleteActivity.ascx.cs file there are 6 events we will modify.&amp;nbsp; Remember to take your time.&amp;nbsp; &lt;/font&gt;&lt;font color="#000000"&gt;The first event we will work on is&amp;nbsp;labeled&amp;nbsp;&lt;/font&gt;&lt;font color="#000000"&gt;&lt;strong&gt;OnFormBound&lt;/strong&gt;,&amp;nbsp;just before the closing bracket for the event add the following code:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sage.Entity.Interfaces.IActivity act = this.BindingSource.Current as Sage.Entity.Interfaces.IActivity; //Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (act.&lt;strong&gt;FieldName&lt;/strong&gt; != null) //Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;FieldName&lt;/strong&gt;.LookupResultValue = act.&lt;strong&gt;FieldName&lt;/strong&gt;.ToString(); //Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#000000"&gt;To make sure we are all on the same page here, &amp;quot;FieldName&amp;quot; is the name of the field in the Activity Entity that represents our custom main entity.&amp;nbsp; In my example FieldName = FXProjectId&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;For the &lt;strong&gt;Page_PreRender&lt;/strong&gt; event, look for a line that looks similar to this:&lt;/font&gt;&lt;/p&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;TicketId.InitializeLookup = (TicketId.SeedValue.Length == 12);&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;Right under this line add the following line of code and then add your definition for FieldName to the code.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&lt;strong&gt;FieldName&lt;/strong&gt;.InitializeLookup = (&lt;strong&gt;FieldName&lt;/strong&gt;.SeedValue.Length == 12); //Mine&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For the &lt;strong&gt;LeadId_LookupResultValueChanged &lt;/strong&gt;event, look for a line that looks similar to this:&lt;/p&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Activity.AccountId = &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;null&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;Right under this line add the following line of code and then add your definition for FieldName to the code.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#006600"&gt;Activity.&lt;strong&gt;FieldName&lt;/strong&gt; = &lt;/font&gt;&lt;/font&gt;&lt;font color="#006600"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;null&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;//Mine&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#000000"&gt;For the &lt;strong&gt;AccountId_ChangeAction &lt;/strong&gt;event, look for a line that looks similar to this:&lt;/font&gt;&lt;/p&gt;&lt;font color="#000000"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Activity.LeadId = &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;null&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;Right under this line add the following line of code and then add your definition for FieldName to the code.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#006600"&gt;Activity.&lt;strong&gt;FieldName&lt;/strong&gt; = &lt;/font&gt;&lt;/font&gt;&lt;font color="#006600"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;null&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;//Mine&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font color="#000000"&gt;For the &lt;strong&gt;SetTacoDefaults&lt;/strong&gt;&amp;nbsp;event, look for a&amp;nbsp;group of code&amp;nbsp;that looks similar to this:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;if (GetParam(&amp;quot;tid&amp;quot;) != null)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Activity.TicketId = GetParam(&amp;quot;tid&amp;quot;)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Right under this&amp;nbsp;code add the following.&amp;nbsp; In Part 3 &lt;font color="#cc0000"&gt;&lt;strong&gt;(UPDATE WITH LINK)&lt;/strong&gt;&lt;/font&gt; of this series you established an &amp;quot;&lt;/font&gt;&lt;font color="#006600"&gt;&lt;strong&gt;alias2&amp;quot;, &lt;/strong&gt;&lt;/font&gt;&lt;font color="#000000"&gt;make sure to use that same definition for alias2 in this code. &lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;
&lt;p&gt;if (GetParam(&amp;quot;&lt;strong&gt;alias2&lt;/strong&gt;&amp;quot;) != null)//Mine&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;Activity.FieldName = GetParam(&amp;quot;&lt;strong&gt;alias2&lt;/strong&gt;&amp;quot;);//Mine&lt;/p&gt;
&lt;p&gt;}&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000" size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;font color="#000000" size="2"&gt;
&lt;p&gt;Still in the &lt;strong&gt;SetTacoDefaults &lt;/strong&gt;event, look for the case statements not to far below the code you just set in place.&amp;nbsp;&amp;nbsp;&amp;nbsp; You should find a case statement for ITicket.&amp;nbsp; Add the following group of code on the next line after the break of the ITicket case statement. &lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&amp;nbsp;case &amp;quot;I&lt;strong&gt;EntityName&lt;/strong&gt;&amp;quot;://Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; found = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IEntityName &lt;strong&gt;alias&lt;/strong&gt; = EntityFactory.GetById&amp;lt;IEntityName&amp;gt;(hist.EntityId.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Activity.FieldName = &lt;strong&gt;alias&lt;/strong&gt;.Id.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Activity.AccountId = &lt;strong&gt;alias&lt;/strong&gt;.Account.Id.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Activity.AccountName = alias.Account.AccountName;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;//Mine&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This area is setting some defaults based on where you are launching the CompleteActivity page from.&amp;nbsp; Think about if you were launching from your custom main entity, what field can you pre-populate.&amp;nbsp; In the example I am providing the assumption there is a&amp;nbsp;relationship to the Account entity named &amp;quot;Account&amp;quot;.&amp;nbsp;&amp;nbsp; You need another definition for alias and&amp;nbsp;this can be anything, &amp;nbsp;as I did&amp;nbsp;in the last post&amp;nbsp;I am going to use&amp;nbsp;a shorten version of my&amp;nbsp;definition for&amp;nbsp;EntityName&amp;nbsp;so for me&amp;nbsp;alias = fxproj.&lt;/p&gt;
&lt;p&gt;The final event today is&amp;nbsp;one labeled&amp;nbsp;&lt;strong&gt;OnAddEntityBindings(),&amp;nbsp; &lt;/strong&gt;at the end of this event add these two line of code:&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&amp;nbsp;bs.Bindings.Add(new WebEntityBinding(&amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;&amp;quot;, &lt;strong&gt;FieldName&lt;/strong&gt;, &amp;quot;LookupResultValue&amp;quot;));//Mine&lt;br /&gt;&amp;nbsp;bs.Bindings.Add(new WebEntityBinding(&amp;quot;AccountId&amp;quot;, &lt;strong&gt;FieldName&lt;/strong&gt;, &amp;quot;SeedValue&amp;quot;));//Mine&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Remember - &amp;nbsp;here again, if there is not a relationship to the account from your custom main entity name Account, then either delete or modify the second line as needed.&lt;/p&gt;
&lt;p&gt;To test, save all files,&amp;nbsp;build your web platform, then redeploy your site.&amp;nbsp; When the website comes up go to any open activity in one of the Activity List views, select &amp;quot;Complete&amp;quot; from the list.&amp;nbsp; When the&amp;nbsp;Complete Activity page opens you should see your field, below you will see mine. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities014.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities014.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;That&amp;#39;s enough for today, we will finish out our seires with process for seeing the Activites and hitory Tabs on your custom main entity.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=42102" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="SalesLogix Web" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Web/default.aspx" /><category term="Development" scheme="http://customerfx.com/pages/reporting/archive/tags/Development/default.aspx" /><category term="How To" scheme="http://customerfx.com/pages/reporting/archive/tags/How+To/default.aspx" /></entry><entry><title>Adding Activities and History to a Custom Main Entity in the Saleslogix Web Client (Part 3)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/05/11/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-3.aspx" /><id>http://customerfx.com/pages/reporting/2010/05/11/adding-activities-and-history-to-a-custom-main-entity-in-the-saleslogix-web-client-part-3.aspx</id><published>2010-05-11T13:00:00Z</published><updated>2010-05-11T13:00:00Z</updated><content type="html">&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;My goal within&amp;nbsp;this series of post is to&amp;nbsp;provide&amp;nbsp;some easy to follow steps&amp;nbsp;that will help a developer&amp;nbsp;add the ability to associate Activity and History records&amp;nbsp;for a custom main entity within the SalesLogix Web Client.&amp;nbsp;&amp;nbsp;Read the&amp;nbsp;previous two posts to catch up on where we are at. &lt;/font&gt;&lt;a href="http://customerfx.com/pages/reporting/2010/05/03/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client.aspx"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Part 1&lt;/font&gt;&lt;/a&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&amp;nbsp;&lt;/font&gt;&lt;a href="http://customerfx.com/pages/reporting/2010/05/04/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client-part-2.aspx"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Part 2&lt;/font&gt;&lt;/a&gt;&lt;font face="arial,helvetica,sans-serif"&gt;. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;As promised in the last post we are going to get right at it today.&amp;nbsp; The process is going to be very similar to what we did in Part 2.&amp;nbsp; As a reminder, you will need the&amp;nbsp;definitions we used in our code&amp;nbsp;in part 2.&amp;nbsp; &lt;/font&gt;&lt;font face="arial,helvetica,sans-serif"&gt;There are three areas we will modify today in the SalesLogix Application Architect(AA). &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;ScheduleCompleteActivity.ascx&amp;nbsp; (This holds the properties for the Schedule Complete Activity Page)&lt;br /&gt;ScheduleCompleteActivity.ascx.resx (This holds the definition for the labels the page above)&lt;br /&gt;ScheduleCompleteActivity.ascx.cs (This holds the code supporting the page)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;You can find these files in the AA under the Project Explorer Tab.&amp;nbsp; In the tree control look for and open the Portal Manager, then Sage SalesLogix, then Support Files, then Smart Parts, and then Activity.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Right click and select &amp;quot;Open&amp;quot; on the following files:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;ScheduleCompleteActivity.ascx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;ScheduleCompleteActivity.ascx.cs&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Then open another folder just above Activity in the tree labeled &amp;quot;App_LocalResources&amp;quot;. Right click and select open a file named &amp;quot;ScheduleCompleteActivity.ascx.resx&amp;quot;.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Let&amp;#39;s get started with the ScheduleCompleteActivity.ascx. To add our code navigate to the end of line 169,&amp;nbsp;hit the enter button, and add the following lines:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600" face="arial,helvetica,sans-serif"&gt;&amp;lt;%--Start My Code --%&amp;gt;&lt;br /&gt;&amp;lt;%--End My Code --%&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;These should be lines&amp;nbsp;170 and 171. Go to the end of line&amp;nbsp;170 and hit the enter key again and then paste the following on empty line 171:&lt;/font&gt;&lt;/p&gt;&lt;font color="#006600" face="arial,helvetica,sans-serif"&gt;
&lt;p&gt;&lt;br /&gt;&amp;lt;%--Start My Code --%&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;span class=&amp;quot;lbl&amp;quot;&amp;gt;&amp;lt;asp:Label ID=&amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;_lz&amp;quot; Text=&amp;quot;&amp;lt;%$ resources: &lt;strong&gt;FieldName&lt;/strong&gt;_lz.Text %&amp;gt;&amp;quot;&amp;nbsp; AssociatedControlID=&amp;quot;&lt;strong&gt;FXProjectId&lt;/strong&gt;&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/asp:Label&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span class=&amp;quot;textcontrol&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;SalesLogix:LookupControl runat=&amp;quot;server&amp;quot; ID= &amp;quot;&lt;strong&gt;FXProjectId&lt;/strong&gt;&amp;quot; AutoPostBack=&amp;quot;true&amp;quot; AllowClearingResult=&amp;quot;true&amp;quot; LookupEntityName=&amp;quot;&lt;strong&gt;EntityName&lt;/strong&gt;&amp;quot; OverrideSeedOnSearch=&amp;quot;true&amp;quot; SeedProperty=&amp;quot;&lt;font color="#cc0000"&gt;&lt;strong&gt;Account.Id&lt;/strong&gt;&lt;/font&gt;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;LookupEntityTypeName=&amp;quot;Sage.Entity.Interfaces.I&lt;strong&gt;EntityName&lt;/strong&gt;, Sage.Entity.Interfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null&amp;quot; &amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;LookupProperties&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;SalesLogix:LookupProperty PropertyHeader=&amp;quot;&amp;lt;%$ resources: Lookup_&lt;strong&gt;Field1&lt;/strong&gt;.PropertyHeader %&amp;gt;&amp;quot; PropertyName=&amp;quot;&lt;strong&gt;Field1&lt;/strong&gt;&amp;quot; PropertyFormat=&amp;quot;None&amp;quot;&amp;nbsp; UseAsResult=&amp;quot;True&amp;quot;&amp;gt;&amp;lt;/SalesLogix:LookupProperty&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;SalesLogix:LookupProperty PropertyHeader=&amp;quot;&amp;lt;%$ resources: Lookup_&lt;strong&gt;Field2&lt;/strong&gt;.PropertyHeader %&amp;gt;&amp;quot; PropertyName=&amp;quot;&lt;strong&gt;Field2&lt;/strong&gt;&amp;quot; PropertyFormat=&amp;quot;None&amp;quot;&amp;nbsp; UseAsResult=&amp;quot;True&amp;quot;&amp;gt;&amp;lt;/SalesLogix:LookupProperty&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;SalesLogix:LookupProperty PropertyHeader=&amp;quot;&amp;lt;%$ resources: Lookup_&lt;strong&gt;Field3&lt;/strong&gt;.PropertyHeader %&amp;gt;&amp;quot; PropertyName=&amp;quot;&lt;strong&gt;Field3&lt;/strong&gt;&amp;quot; PropertyFormat=&amp;quot;None&amp;quot;&amp;nbsp; UseAsResult=&amp;quot;True&amp;quot;&amp;gt;&amp;lt;/SalesLogix:LookupProperty&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/LookupProperties&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;LookupPreFilters&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/LookupPreFilters&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/SalesLogix:LookupControl&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/span&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;%--End My Code --%&amp;gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;The code above&amp;nbsp;is&amp;nbsp;very similar to the code we added in part 2 but there are some differences.&amp;nbsp; Once the code is in place use the definitions from part 2 fill in FieldName, EntityName, and the Fields (1, 2, and 3). I tried to bold all of the values that need to be changed. You see with EntityName some of the&amp;nbsp;code has an&amp;nbsp;&amp;quot;I&amp;quot; before the EntityName, ensure you leave this &amp;quot;I&amp;quot; in place.&amp;nbsp; FYI, there is an assumption within this code that your Main Custom Entity has a relationship to the Account layer labeled&amp;nbsp;&amp;quot;Account&amp;quot;, if&amp;nbsp;this is not&amp;nbsp;true then you do not&amp;nbsp;include the SeedProperty=&amp;quot;&lt;font color="#cc0000"&gt;&lt;strong&gt;Account.Id&lt;/strong&gt;&lt;/font&gt;&amp;quot; in your code.&amp;nbsp; When you have completed this area make sure you save your work. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;The modifications to the ScheduleCompleteActivity.ascx.resx field are pretty much as we did yesterday.&amp;nbsp; Here we want to navigate near to the very&amp;nbsp;end of the file,&amp;nbsp;on line 326, hit enter and&amp;nbsp;paste in&amp;nbsp;the following lines:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600" face="arial,helvetica,sans-serif"&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;_lz.Text&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;LookupLabel&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;Lookup_&lt;strong&gt;Field1&lt;/strong&gt;.PropertyHeader&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;Field1Label&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;Lookup_&lt;strong&gt;Field2&lt;/strong&gt;.PropertyHeader&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;Field2Label&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;Lookup_&lt;strong&gt;Field3&lt;/strong&gt;.PropertyHeader&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;Field3Label&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Using your definitions&amp;nbsp;fill in&amp;nbsp;FieldName, LookupLabel, Fields (1, 2, and 3) and FieldLabels (for 1, 2, and 3).&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;When ready save your work and open the ScheduleCompleteActivity.ascx.cs file.&amp;nbsp; If you remember yesterday here we are updating already established events to work with our custom entity lookup.&amp;nbsp; You can search for these events with in the file&amp;nbsp;using the drop down field in the upper right hand corner.&amp;nbsp; Simply find and select the event and AA will take you to the correct spot in the code.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;First lets search for the &amp;quot;ResetForm&amp;quot; event.&amp;nbsp;&amp;nbsp; Look for a line that looks like this:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;Ticket.LookupResultValue = &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;null&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;Right under this line add the following line of code and then add your definition for FieldName to the code.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#006600"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;strong&gt;FieldName&lt;/strong&gt;.LookupResultValue = null;//Mine&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;Next&amp;nbsp;lets search for the &amp;quot;SetSeedValues&amp;quot; event.&amp;nbsp;&amp;nbsp; Look for a line that looks like this:&lt;/font&gt;&lt;/p&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;LeadId.InitializeLookup = &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;Right under this line add the following line of code and then add your definition for FieldName to the code.&amp;nbsp; The second line is only used if you have a relationship from your Main Entity to the Account Entity and that relationship is name Account.&amp;nbsp; If this does not exist then you may not want to use the second line.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#006600"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;strong&gt;FieldName&lt;/strong&gt;.InitializeLookup = true;//mine&lt;br /&gt;&lt;strong&gt;FieldName&lt;/strong&gt;.SeedValue = seedValue;//mine&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;Now this next section gets a little hairy so take your time.&amp;nbsp; Search for the btnContinue_Click event.&amp;nbsp; Look for a line that looks like this:&lt;/font&gt;&lt;/p&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt;string&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt; leadId = &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&amp;quot;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;This line is declaring a variable.&amp;nbsp; Directly below this line add the following code:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#006600"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;font color="#006600" face="arial,helvetica,sans-serif"&gt;string&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#006600"&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt; &lt;strong&gt;variable&lt;/strong&gt; = &amp;quot;&amp;quot;; &lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;//mine&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;The definition for&amp;nbsp;variable can be anything. I am going to use a shorten version of the definition for&amp;nbsp;my FieldName&amp;nbsp;and I will set&amp;nbsp;the text to all&amp;nbsp;lowercase,&amp;nbsp; so for me&amp;nbsp;variable = fxprojid.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;Staying in the same event you will a set of code that looks like this:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#000000"&gt;&lt;font color="#0000ff" face="arial,helvetica,sans-serif"&gt;if (LeadId.LookupResultValue != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Lead lead = LeadId.LookupResultValue as Lead;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (lead != null)&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;leadId = lead.Id;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#000000"&gt;&lt;font color="#000000" face="arial,helvetica,sans-serif"&gt;We need to add similar code right underneath this set, should look this:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600" face="arial,helvetica,sans-serif"&gt;if (&lt;strong&gt;FieldName&lt;/strong&gt;.LookupResultValue != null) //Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;EntityName&lt;/strong&gt; alias = &lt;strong&gt;FieldName&lt;/strong&gt;.LookupResultValue as &lt;strong&gt;EntityName&lt;/strong&gt;;//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (alias != null)//cfx&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;variable&lt;/strong&gt; = &lt;strong&gt;alias&lt;/strong&gt;.Id;//cfx&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;/font&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#000000"&gt;Again, add your definitions for EntityName, FieldName, and&amp;nbsp;then use&amp;nbsp;the variable we defined above.&amp;nbsp; Just like for variable you&amp;nbsp;need another definition for alias,&amp;nbsp;this can be anything so&amp;nbsp;I am going to use&amp;nbsp;a shorten version of my&amp;nbsp;definition for&amp;nbsp;EntityName&amp;nbsp;so for me&amp;nbsp;alias = fxproj.&lt;br /&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#000000"&gt;Still staying in the same event look for a line that looks like this. &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#0000ff"&gt;Dictionary&amp;lt;string, string&amp;gt; args = new Dictionary&amp;lt;string, string&amp;gt;();&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#000000"&gt;In this group of code we need to add&amp;nbsp;another&amp;nbsp;line similar to this:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;&lt;font color="#008000" size="2"&gt;args.Add(&amp;quot;&lt;strong&gt;alias2&lt;/strong&gt;&amp;quot;, &lt;strong&gt;variable&lt;/strong&gt;);//Mine&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;You can see the variable we defined is used again in this bit of code along with another alias.&amp;nbsp; For alias2 we will follow SalesLogix policy and use the first initial of our EntityName in lowercase - example alias2 = pid&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" size="2"&gt;That should do it for the Schedule Complete Activity set of files.&amp;nbsp; To test, save all files,&amp;nbsp;build your web platform, then redeploy your site.&amp;nbsp; When the website comes up go to the Schedule Menu Item, select &amp;quot;Complete an Activity&amp;quot; from the list.&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" size="2"&gt;Your view should come up with your field right below the Ticket Look up.&amp;nbsp;&amp;nbsp; Here is mine:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities011.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities011.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" size="2"&gt;Next up on our list is CompleteActivity.ascx.resx, CompleteActivity.ascx, and CompleteActivity.ascx.cs files.&amp;nbsp;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" size="2"&gt;Take care until then!&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="arial,helvetica,sans-serif"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" size="2"&gt;Geo&lt;br /&gt;&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=42088" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="SalesLogix Web" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Web/default.aspx" /><category term="Development" scheme="http://customerfx.com/pages/reporting/archive/tags/Development/default.aspx" /><category term="How To" scheme="http://customerfx.com/pages/reporting/archive/tags/How+To/default.aspx" /></entry><entry><title>Adding Activities and History to a Custom Main Entity in the Saleslogix Web Client (Part 2)</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/05/04/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client-part-2.aspx" /><id>http://customerfx.com/pages/reporting/2010/05/04/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client-part-2.aspx</id><published>2010-05-04T15:36:00Z</published><updated>2010-05-04T15:36:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://customerfx.com/pages/reporting/2010/05/03/adding-activities-and-history-to-a-custom-entity-in-the-saleslogix-web-client.aspx"&gt;Yesterday I started a series of post&lt;/a&gt; that will talk the reader through&amp;nbsp;giving&amp;nbsp;the ability to schedule activities and review history records for a custom main entity. Today we will continue on with the first set of modifications.&amp;nbsp; Before we get&amp;nbsp;in too deep&amp;nbsp;we need to define some elements to use in our code.&amp;nbsp; These&amp;nbsp;definitions will be used over and over again as we move through this process so keep a separate list handy for easy references.&amp;nbsp; One thing to remember while&amp;nbsp;determining these definitions is the use of proper case in C# code.&amp;nbsp; If you put a capital letter where a lowercase should be, C# will throw an error.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;In the last post I asked you to come up with the fields from your entity that will be used in your Activity lookup.&amp;nbsp; I will have three fields in my lookup, from the FXProject Entity I will have &amp;quot;Name&amp;quot; and &amp;quot;Status&amp;quot;, and through a relationship to the User Entity called ProjectManager I will also have the UserName field.&lt;/p&gt;
&lt;p&gt;Field1 = Name&lt;br /&gt;Field2 = Status&lt;br /&gt;Field3 = ProjectManager.UserName&lt;/p&gt;
&lt;p&gt;Now those are the names of the fields as they are created in the entities.&amp;nbsp; These may or may not be the names of the columns for your lookup.&amp;nbsp; So Lets define what the columns names are:&lt;/p&gt;
&lt;p&gt;Field1Label = Project Name&lt;br /&gt;Field2Label = Status&amp;nbsp;&lt;br /&gt;Field3Label = Project Manager&lt;/p&gt;
&lt;p&gt;When I look at the lookup on the Activity Detail page I want the field to have a label.&amp;nbsp;For me, my&amp;nbsp;lookup is for a project so in my case&amp;nbsp;LookupLabel = Project:&lt;/p&gt;
&lt;p&gt;Two other things to think about ahead of time are EntityName and FieldName. &lt;/p&gt;
&lt;p&gt;EntityName is easy, look at the tree control and find the exact spelling using proper case,&amp;nbsp;for my example I will use EntityName = FXProject.&lt;/p&gt;
&lt;p&gt;For the FieldName lets use the name of the field we added to the Activity and History tables (&lt;a href="http://customerfx.com/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=34&amp;amp;postid=42028"&gt;In Part 1&lt;/a&gt;)&amp;nbsp;as the name for the lookup field. This is consistent with the Account and Contact lookup already built on the pages we are going to modify.&amp;nbsp; The name I used was &amp;quot;FXProjectId&amp;quot;, so for todays code FieldName = FXProjectId&lt;/p&gt;
&lt;p&gt;Lets add some code.&lt;/p&gt;
&lt;p&gt;There are three areas we will modify today in the SalesLogix Application Architect(AA). &lt;/p&gt;
&lt;p&gt;ActivityDetails.ascx&amp;nbsp; (This holds the properties for the Activity Details Page)&lt;br /&gt;ActivityDetails.ascx.resx (This holds the definition for the labels)&lt;br /&gt;ActivityDetails.ascx.cs (This holds the code so the form reacts as expected)&lt;/p&gt;
&lt;p&gt;You can find these files in the AA under the Project Explorer Tab.&amp;nbsp; In the tree control look for and open the Portal Manager, then Sage SalesLogix, then Support Files, then Smart Parts, and then Activity.&lt;/p&gt;
&lt;p&gt;Right click and select &amp;quot;Open&amp;quot; on the following files:&lt;/p&gt;
&lt;p&gt;ActivityDetails.ascx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;br /&gt;ActivityDetails.ascx.cs&lt;/p&gt;
&lt;p&gt;Then open another folder just above Activity in the tree labeled &amp;quot;App_LocalResources&amp;quot;. Right click and select open a file named &amp;quot;ActivityDetails.ascx.resx&amp;quot;.&lt;/p&gt;
&lt;p&gt;The first file we will work with is ActivityDetails.ascx.&amp;nbsp; This file holds the code for the controls that make up the page that displays when you edit an activity. To add our code navigate to the end of line 247,&amp;nbsp;hit the enter button, and add the following lines:&lt;/p&gt;
&lt;p&gt;&amp;lt;%--Start My Code --%&amp;gt;&lt;br /&gt;&amp;lt;%--End My Code --%&amp;gt;&lt;/p&gt;
&lt;p&gt;I do this to help my find my code quicker especially when I am combing the use of Visual Studio with AA.&amp;nbsp; These should be lines 248 and 249. Now put a line between these two, this is where you can paste in the following code that builds your custom entity lookup:&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;&lt;font color="#006600"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tr class=&amp;quot;contact-row&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;td&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&amp;quot;lbl alignleft&amp;quot;&amp;gt;&amp;lt;asp:Label ID=&amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;_lz&amp;quot; AssociatedControlID=&amp;quot;&lt;font color="#006600"&gt;&lt;strong&gt;FieldName&lt;/strong&gt;&lt;/font&gt;&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;&amp;lt;%$ resources: &lt;strong&gt;FieldName&lt;/strong&gt;_lz.Text %&amp;gt;&amp;quot;&amp;gt;&amp;lt;/asp:Label&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;div class=&amp;quot;textcontrol&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SalesLogix:LookupControl runat=&amp;quot;server&amp;quot; ID= &amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;&amp;quot; AutoPostBack=&amp;quot;true&amp;quot; AllowClearingResult=&amp;quot;true&amp;quot; OverrideSeedOnSearch=&amp;quot;true&amp;quot; LookupBindingMode=&amp;quot;string&amp;quot; ReturnPrimaryKey=&amp;quot;true&amp;quot; LookupEntityName=&amp;quot;&lt;strong&gt;EntityName&lt;/strong&gt;&amp;quot; LookupEntityTypeName=&amp;quot;Sage.Entity.Interfaces.I&lt;strong&gt;EntityName&lt;/strong&gt;, Sage.Entity.Interfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null&amp;quot; SeedProperty=&amp;quot;Account.Id&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LookupProperties&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SalesLogix:LookupProperty PropertyHeader=&amp;quot;&amp;lt;%$ resources: Lookup_&lt;strong&gt;Field1&lt;/strong&gt;.PropertyHeader %&amp;gt;&amp;quot; PropertyName=&amp;quot;&lt;strong&gt;Field1&lt;/strong&gt;&amp;quot; PropertyFormat=&amp;quot;None&amp;quot;&amp;nbsp; UseAsResult=&amp;quot;True&amp;quot;&amp;gt;&amp;lt;/SalesLogix:LookupProperty&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SalesLogix:LookupProperty PropertyHeader=&amp;quot;&amp;lt;%$ resources: Lookup_&lt;strong&gt;Field2&lt;/strong&gt;.PropertyHeader %&amp;gt;&amp;quot; PropertyName=&amp;quot;&lt;strong&gt;Field2&lt;/strong&gt;&amp;quot; PropertyFormat=&amp;quot;None&amp;quot;&amp;nbsp; UseAsResult=&amp;quot;True&amp;quot;&amp;gt;&amp;lt;/SalesLogix:LookupProperty&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SalesLogix:LookupProperty PropertyHeader=&amp;quot;&amp;lt;%$ resources: Lookup_&lt;strong&gt;Field3&lt;/strong&gt;.PropertyHeader %&amp;gt;&amp;quot; PropertyName=&amp;quot;&lt;strong&gt;Field3&lt;/strong&gt;&amp;quot; PropertyFormat=&amp;quot;None&amp;quot;&amp;nbsp; UseAsResult=&amp;quot;True&amp;quot;&amp;gt;&amp;lt;/SalesLogix:LookupProperty&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LookupProperties&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LookupPreFilters&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LookupPreFilters&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/SalesLogix:LookupControl&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/div&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/td&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Read through the code and find and replace the FieldName, EntityName, and Fields (1, 2, and 3) as we defined above. I tried to bold all of the values that need to be changed. You see with EntityName some of the&amp;nbsp;code has an&amp;nbsp;&amp;quot;I&amp;quot; before the EntityName, ensure you leave this &amp;quot;I&amp;quot; in place.&amp;nbsp; When you have completed this area make sure you save your work.&lt;/p&gt;
&lt;p&gt;With that code in place move to the ActivityDetails.ascx.resx file.&amp;nbsp; This is where the field labels are defined. Here we want to navigate to the very bottom the file on line 263, hit enter and add the following lines:&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;_lz.Text&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;LookupLabel&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;Lookup_&lt;strong&gt;Field1&lt;/strong&gt;.PropertyHeader&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;Field1Label&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;Lookup_&lt;strong&gt;Field2&lt;/strong&gt;.PropertyHeader&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;Field2Label&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;data name=&amp;quot;Lookup_&lt;strong&gt;Field3&lt;/strong&gt;.PropertyHeader&amp;quot; xml:space=&amp;quot;preserve&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;value&amp;gt;&lt;strong&gt;Field3Label&lt;/strong&gt;&amp;lt;/value&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;lt;/data&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Reference your labeling defined above for the FieldName, LookupLabel, Fields (1, 2, and 3) and FieldLabels (for 1, 2, and 3)&amp;nbsp;and insert in the code. &lt;/p&gt;
&lt;p&gt;Next we will move to the ActivityDetails.ascx.cs file.&amp;nbsp; This holds code that defines how the page and all of it&amp;#39;s properties react when loading or when changes occur. This can be pretty complicated for the unexperienced developer so take your time. &lt;/p&gt;
&lt;p&gt;The first thing I did was to close all of the tree control items so my view looked like this.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities007.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities007.jpg" width="879" height="628" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you look up in the upper right hand corner of the screen shot you will see a field with a the value of &amp;quot;Page_PreRender&amp;quot;.&amp;nbsp; This field will help you find the code we are going to modify.&amp;nbsp; You simply look for the values I provide you and add code where indicated. &lt;/p&gt;
&lt;p&gt;The first item I am going to&amp;nbsp;search for&amp;nbsp;is the Page_PreRender event.&amp;nbsp; You might have to click on the plus sign to open to the code, when the code is visible look for a lint that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;quot;TicketId.InitializeLookup = (TicketId.SeedValue.Length == 12);&amp;quot;&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;Right under this line add the following line of code:&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&lt;strong&gt;FieldName&lt;/strong&gt;.InitializeLookup = (&lt;strong&gt;FieldName&lt;/strong&gt;.SeedValue.Length == 12);//MINE&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Add your definition for FieldName to the code and close up the tree.&amp;nbsp; Replace the word mine with your initials, again to help you find your code later if necessary.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Search for the &amp;quot;AccountId_LookupResultValueChanged&amp;quot; event.&amp;nbsp; Look for a line that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Activity.LeadId = null;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Right under this line add the following line of code and then add your definition for FieldName to the code.&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;Activity.&lt;strong&gt;FieldName&lt;/strong&gt; = null; //Mine&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Search for &amp;quot;LeadId_LookupResultValueChanged&amp;quot; event.&amp;nbsp; Look for a line that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Activity.AccountId = null;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Right under this line add the following line of code and then add your definition for FieldName to the code.&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;Activity.&lt;strong&gt;FieldName&lt;/strong&gt; = null;//Mine&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Search for the &amp;quot;SetTACODefaultsFromHistoryId&amp;quot; event.&amp;nbsp; Look for a line that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Activity.LeadId = hist.LeadId;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Right under this line add the following line of code and then add your definition for FieldName to the code.&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;Activity.&lt;strong&gt;FieldName&lt;/strong&gt; = hist.&lt;strong&gt;FieldName&lt;/strong&gt;; //Mine&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Search for the &amp;quot;SetTACODefaultsFromEntityHistory&amp;quot; event.&amp;nbsp; Here there are several Case statements. We will add our code to the end of these existing Case statements.&amp;nbsp; FYI, this area assumes that your main entity has a relationship built to the Account Entity and the the relationship name is Account. IF this is not the case I would leave the AccountId line out. &lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&amp;nbsp; case &amp;quot;IEntityName&amp;quot;://Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; found = true;//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I&lt;strong&gt;EntityName&lt;/strong&gt; &lt;strong&gt;EntityName&lt;/strong&gt; = EntityFactory.GetById&amp;lt;I&lt;strong&gt;EntityName&lt;/strong&gt;&amp;gt;(hist.EntityId.ToString());//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Activity.&lt;strong&gt;FieldName&lt;/strong&gt; = &lt;strong&gt;EntityName&lt;/strong&gt;.Id.ToString();//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Activity.AccountId = &lt;strong&gt;EntityNam&lt;/strong&gt;e.Account.Id.ToString();//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;//Mine&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Add your definition for EntityName and FieldName. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Search for the &amp;quot;OnAddEntityBindings&amp;quot; event.&amp;nbsp; Copy these lines any where within the brackets put in your definition for FieldName.&amp;nbsp; Here again is an assumption about a relationship to the Account.&amp;nbsp; If you do not have a relationship for the Account I would not use the second line. &lt;br /&gt;&lt;font color="#006600"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bs.Bindings.Add(new WebEntityBinding(&amp;quot;&lt;strong&gt;FieldName&lt;/strong&gt;&amp;quot;, &lt;strong&gt;FieldName&lt;/strong&gt;, &amp;quot;LookupResultValue&amp;quot;));//Mine&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bs.Bindings.Add(new WebEntityBinding(&amp;quot;AccountId&amp;quot;, &lt;strong&gt;FieldName&lt;/strong&gt;, &amp;quot;SeedValue&amp;quot;));//Mine&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#006600"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;With this last bit of code in place make sure you save your work.&amp;nbsp; Go ahead and build your platform and Deploy your Test environment to see if everything is working correctly.&amp;nbsp; The best place to test at this point is by editing an exisitng Activity.&amp;nbsp; Mine worked well, here is a screen shot. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/AddingActivities008.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/AddingActivities008.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I know this was a lot of information all at once,&amp;nbsp;the next post&amp;nbsp;should be a little less at once.&amp;nbsp; The next post will cover modifying the following custom smart parts:&lt;/p&gt;
&lt;p&gt;ScheduleCompleteActivity.ascx.&lt;/p&gt;
&lt;p&gt;ScheduleCompleteActivity.ascx.resx&lt;/p&gt;
&lt;p&gt;ScheduleCompleteActivity.ascx.cs&lt;/p&gt;
&lt;p&gt;Until then peace.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=42074" width="1" height="1"&gt;</content><author><name>George Jensen</name><uri>http://customerfx.com/members/George-Jensen.aspx</uri></author><category term="SalesLogix Web" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Web/default.aspx" /><category term="Development" scheme="http://customerfx.com/pages/reporting/archive/tags/Development/default.aspx" /><category term="How To" scheme="http://customerfx.com/pages/reporting/archive/tags/How+To/default.aspx" /></entry></feed>