<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://customerfx.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Customer FX</title><link>http://customerfx.com/pages/</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2007 SP2 (Build: 20611.960)</generator><item><title>SageCRM v7 Release is Coming Soon</title><link>http://customerfx.com/pages/inbox/2010/03/18/sagecrm-v7-release-is-coming-soon.aspx</link><pubDate>Thu, 18 Mar 2010 15:40:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41575</guid><dc:creator>Brianna Tinjum</dc:creator><slash:comments>0</slash:comments><description> Find out what&amp;#39;s new.

If you are going to be purchasing SageCRM, or you plan on upgrading, you may what to check out the latest data sheet from Sage describing what is new in SageCRM v7.  I have attached the doc...(&lt;a href="http://customerfx.com/pages/inbox/2010/03/18/sagecrm-v7-release-is-coming-soon.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41575" width="1" height="1"&gt;</description><enclosure url="http://customerfx.com/pages/inbox/attachment/41575.ashx" length="1426432" type="application/pdf" /><category domain="http://customerfx.com/pages/inbox/archive/tags/SageCRM/default.aspx">SageCRM</category></item><item><title>SalesLogix Web Client- Marketing Campaigns Part II [Video]</title><link>http://customerfx.com/pages/saleslogix-training/2010/03/18/saleslogix-web-client-marketing-campaigns-part-ii.aspx</link><pubDate>Thu, 18 Mar 2010 13:31:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41511</guid><dc:creator>Dale Richter</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In this webinar, students will learn how to create Stages, Tasks and also how to create a Target List. Creating these items will help the Marketing Individual track budget numbers and also track the targets that have received this specific campaign.&lt;/p&gt;
&lt;object width="500" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/iuxMYbzeGw0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/iuxMYbzeGw0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1&amp;amp;border=1" mce_src="http://www.youtube.com/v/iuxMYbzeGw0&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41511" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/saleslogix-training/archive/tags/SalesLogix+Cloud/default.aspx">SalesLogix Cloud</category><category domain="http://customerfx.com/pages/saleslogix-training/archive/tags/SalesLogix+Web+Client/default.aspx">SalesLogix Web Client</category></item><item><title>Creating Pretty Prefixes and Suffixes in the SalesLogix web client</title><link>http://customerfx.com/pages/integrationblog/2010/03/17/creating-pretty-prefixes-and-suffixes-in-the-saleslogix-web-client.aspx</link><pubDate>Wed, 17 Mar 2010 10:16:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41561</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;In the SalesLogix web client you may run across a reason you need to generate a “Pretty Key”.&amp;nbsp; This is what the SalesLogix Ticket Number is.&amp;nbsp; This key is a combination of a Pretty Prefix and a Pretty Suffix.&amp;nbsp; The Prefix is an equivalent to a system’s site code and the Suffix is a numerical equivalent to a primary table ID.&lt;/p&gt;  &lt;p&gt;To generate these you can simply call the functions in the Sage.SalesLogix.System.dll for each.&amp;nbsp; Each function expects an input of the Primary ID of the record to generate a key based on, like this:&lt;/p&gt;    &lt;blockquote&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;Sage.SalesLogix.PrettyKey.GetPrettyKeyPrefix(account.Id.ToString());&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0000ff"&gt;Sage.SalesLogix.PrettyKey.GetPrettyKeySuffix(account.Id.ToString());&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;    &lt;p&gt;Be aware that the Sage.SalesLogix.System.dll is not a default assembly for C# Code Snippets so you may need to add it as a reference.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41561" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.1/default.aspx">SalesLogix 7.5.1</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>SalesLogix Cloud Edition Technical Details</title><link>http://customerfx.com/pages/saleslogix_cloud/2010/03/16/saleslogix-cloud-edition-technical-details.aspx</link><pubDate>Tue, 16 Mar 2010 13:37:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41566</guid><dc:creator>Scott Weber</dc:creator><slash:comments>0</slash:comments><description>On security, the SalesLogix Cloud solution has multiple levels of security, including Amazon’s security, SalesLogix environment security, and SalesLogix application security....(&lt;a href="http://customerfx.com/pages/saleslogix_cloud/2010/03/16/saleslogix-cloud-edition-technical-details.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41566" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/saleslogix_cloud/archive/tags/SalesLogix+Cloud/default.aspx">SalesLogix Cloud</category></item><item><title>Editing tables in SQL 2008</title><link>http://customerfx.com/pages/integrationblog/2010/03/16/editing-tables-in-sql-2008.aspx</link><pubDate>Tue, 16 Mar 2010 10:58:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41560</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I recently ran into an issue when trying to edit a SalesLogix table in the SQL Management Studio 2008.&amp;nbsp; I was trying to increase the length of a field while in a table’s design mode.&amp;nbsp; When I went to save my change I received this error:&lt;/p&gt;   &lt;i&gt;Saving changes is not permitted.&amp;nbsp; The changes you have made require the following tables to be dropped and re-created.&amp;nbsp; You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.&lt;/i&gt;  &lt;p&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/TableSaveError_40E1C658.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/TableSaveError_thumb_52BE5A25.png" style="border:0px none;display:inline;" title="Table Save Error" alt="Table Save Error" width="606" border="0" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now I have done this countless times in the past and wasnt sure what was going on but the last part of the error message pointed me in the direction I needed.&amp;nbsp; Turns out that a default option for the SQL 2008 management console prevents edits to tables like I wanted.&amp;nbsp; After a little digging I found where to turn this off.&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;In the Management Console, click the Tools drop down menu, then Options.&lt;/p&gt;      &lt;p&gt;This will open a dialog.&amp;nbsp; Expand out the Designers node in the left side tree, then click the Table and Database Designers.&amp;nbsp; That will show options to the right.&amp;nbsp; Clear the checkbox “Prevent saving changes that require table re-creation”.&lt;/p&gt;      &lt;p&gt;&amp;nbsp;&lt;img src="http://customerfx.com/blogs/integrationblog/TableChnagePoroperty._thumb_40759363.png" style="border:0px none;display:inline;" title="Table Chnage Poroperty." alt="Table Chnage Poroperty." width="644" border="0" height="379" /&gt;&lt;/p&gt;&amp;nbsp;&lt;p&gt;Click OK and that is it!&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41560" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix/default.aspx">SalesLogix</category></item><item><title>Adding an assembly reference to code files in the SalesLogix Application Architect</title><link>http://customerfx.com/pages/integrationblog/2010/03/15/adding-an-assembly-reference-to-code-files-in-the-saleslogix-application-architect.aspx</link><pubDate>Mon, 15 Mar 2010 18:22:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41563</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Often when adding custom code to SalesLogix you need to reference Assemblies that are not included by default in Code Snippets or action items.&amp;nbsp; This problem will often manifest itself with an error when building like “The type or namespace name &amp;#39;Data&amp;#39; does not exist in the namespace &amp;#39;System&amp;#39; (are you missing an assembly reference)”&lt;/p&gt;  &lt;p&gt;&amp;nbsp;This article will show you how to add an assembly reference to your code.&amp;nbsp; If you look at either a Business Rule/Event or a Code Snippet Action item, both have a Reference Assemblies property.&amp;nbsp; In the code editor within Application Architect you will see comments at the top of the code that show the included referenced assemblies like so:&lt;/p&gt;  &lt;p&gt;&amp;nbsp; &lt;/p&gt; &lt;a href="http://customerfx.com/blogs/integrationblog/ReferenceAssemblies_416FC923.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ReferenceAssemblies_thumb_3A508CAB.png" style="border:0px none;display:inline;" title="Reference Assemblies" alt="Reference Assemblies" width="644" border="0" height="363" /&gt;&lt;/a&gt;   &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;p&gt;So how does one add a referenced assembly?&amp;nbsp; Well it is fairly easy, though do to a glitch in the interface the actual process is kind of hidden. With the code page visible, open the properties window.&amp;nbsp; In the drop down at the top of the property window you should see Sage.Platform.Entities.Orm.Entities.CodeSnippetHeader.&amp;nbsp; If you choose this then you should see an AssembliesReference collection.&amp;nbsp; This is the avenue for adding assembly references.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;On some version of the Application Architect, the Sage.Platform.Entities.Orm.Entities.CodeSnippetHeader is not visible to be selected in the drop down.&amp;nbsp; To get it to appear, you need to do the following:&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;&amp;nbsp;Click the CodeSnippet property in the properties window (should be the first one)&lt;/li&gt;&lt;li&gt;&amp;nbsp;Click into the Code itself.&lt;/li&gt;&lt;li&gt;&amp;nbsp;Click on the drop down in the properties window.&amp;nbsp; You should now see the choice Sage.Platform.Entities.Orm.Entities.CodeSnippetHeader.&lt;/li&gt;&lt;/ol&gt;      &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Once you can correctly see the property window, click the Assembly References Collection property. (There should be an ellipse to choose.)&lt;/p&gt;   &lt;a href="http://customerfx.com/blogs/integrationblog/ReferenceAssembliesProperty_00CD7CB4.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ReferenceAssembliesProperty_thumb_4B54BA8E.png" style="border:0px none;display:inline;" title="Reference Assemblies Property" alt="Reference Assemblies Property" width="603" border="0" height="116" /&gt;&lt;/a&gt;     &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; This will open up the Assembly Reference dialog.&amp;nbsp; It should show you what the default assemblies that are included in every event/snippet are.&lt;/p&gt;      &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/ReferenceAssembliesDialog_11D1AA97.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ReferenceAssembliesDialog_thumb_3F52CA5A.png" style="border:0px none;display:inline;" title="Reference Assemblies Dialog" alt="Reference Assemblies Dialog" width="515" border="0" height="376" /&gt;&lt;/a&gt; &lt;/p&gt;        &lt;p&gt;If you click Add, you can add a new reference.&amp;nbsp; You will need to enter the AssemblyName at a minimum.&amp;nbsp; This should be the full file name of the assembly (i.e. System.Data.dll).&amp;nbsp; If the assembly is part of the .Net global assembly cache you should not need to enter a hint path.&amp;nbsp; If the assembly is not in the GAC, you will need to add the hint path which is the location the assembly is physically located so it can be accessed to validate during the build.&amp;nbsp; I would recommend using the base build path’s assemblies sub folder.&amp;nbsp; This requires copying your assembly into that location so it is available.&amp;nbsp; See &lt;a href="http://customerfx.com/pages/integrationblog/2009/12/17/sage-saleslogix-web-build-error-the-name-xxx-does-not-exist-in-the-current-context.aspx" target="_blank"&gt;this post&lt;/a&gt; for some more info on where assemblies need to be to build successfully. The HintPath should be the full path, plus the full file name.&amp;nbsp; &lt;/p&gt;        &lt;p&gt;While you are defining your assembly reference you may receive errors.&amp;nbsp; Just click OK.&amp;nbsp; They are basically just a warning that the assmbly reference isn’t fully defined (which it won’t be until you are done defining).&amp;nbsp; As long as you can build successfully after you add your reference you should be fine.&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41563" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/Application+Architect/default.aspx">Application Architect</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category></item><item><title>SalesLogix Web Client- Marketing Campaigns Part I [Video]</title><link>http://customerfx.com/pages/saleslogix-training/2010/03/15/saleslogix-web-client-marketing-campaigns-part-1.aspx</link><pubDate>Mon, 15 Mar 2010 14:30:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41533</guid><dc:creator>Dale Richter</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Marketing Campaigns are&amp;nbsp;an intregal part of any organization. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;In this video webinar the Marketing Professional will learn how to create a New Marketing Campaign in SalesLogix Cloud. Please make sure you also view parts II and III.&lt;/p&gt;
&lt;object width="500" height="405"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7DcFafBAh1A&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1&amp;amp;border=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/7DcFafBAh1A&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1&amp;amp;border=1" mce_src="http://www.youtube.com/v/7DcFafBAh1A&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;rel=0&amp;amp;hd=1&amp;amp;border=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="405"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41533" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/saleslogix-training/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/saleslogix-training/archive/tags/SalesLogix+Training/default.aspx">SalesLogix Training</category><category domain="http://customerfx.com/pages/saleslogix-training/archive/tags/SalesLogix+Web+Client/default.aspx">SalesLogix Web Client</category><category domain="http://customerfx.com/pages/saleslogix-training/archive/tags/SalesLogix/default.aspx">SalesLogix</category></item><item><title>The First Web Page in the History of the World</title><link>http://customerfx.com/pages/customer-fx/2010/03/15/the-first-web-page-in-the-history-of-the-world.aspx</link><pubDate>Mon, 15 Mar 2010 11:21:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41562</guid><dc:creator>David Tinjum</dc:creator><slash:comments>0</slash:comments><description>According to CNN in an article marking the 25 anniversary of the Web, this is the first web page ever . According to the site, Symbolics.com, they were the first domain name ever registered. Way back on March 15, 1985. I visited the site. Almost had a spiritual experience....(&lt;a href="http://customerfx.com/pages/customer-fx/2010/03/15/the-first-web-page-in-the-history-of-the-world.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41562" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/customer-fx/archive/tags/Web/default.aspx">Web</category><category domain="http://customerfx.com/pages/customer-fx/archive/tags/Internet/default.aspx">Internet</category></item><item><title>Get the Most from the SalesLogix Knowledge Base</title><link>http://customerfx.com/pages/inbox/2010/03/15/get-the-most-from-the-saleslogix-knowledge-base.aspx</link><pubDate>Mon, 15 Mar 2010 05:02:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41559</guid><dc:creator>Brianna Tinjum</dc:creator><slash:comments>0</slash:comments><description> Join us for today&amp;#39;s workshop.

Many SalesLogix users find the Knowledge Base to be a helpful tool when they need to search the database for tickets, history, items in the library, and also network folders.  Do you know how to use this helpful search engine?  Join us for...(&lt;a href="http://customerfx.com/pages/inbox/2010/03/15/get-the-most-from-the-saleslogix-knowledge-base.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41559" width="1" height="1"&gt;</description></item><item><title>Launching a report from a button in the SalesLogix web client</title><link>http://customerfx.com/pages/integrationblog/2010/03/12/launching-a-report-from-a-button-in-the-saleslogix-web-client.aspx</link><pubDate>Fri, 12 Mar 2010 12:49:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41558</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;As Jason mentioned in his article &lt;a href="http://customerfx.com/pages/customization/2010/02/17/using-the-reporting-api-enhancement-in-slx-7-5-2-web.aspx" target="_blank"&gt;here&lt;/a&gt;, starting in SalesLogix 7.5.1, Sage released an undocumented Reporting enhancement that allowed for interacting with the SalesLogix web reporting Server.&amp;nbsp; The SalesLogix 7.5.2 release had this API enhancement built in, however little documentation exists and now standard samples are used in the web client.&lt;/p&gt;  &lt;p&gt;Hopefully this article will help out those who are trying to figure this out.&lt;/p&gt;     &lt;p&gt;The core of the reporting functionality is contained in a standard javascript file “ShowReportUtil.js” that interacts with the built in SalesLogix web reporting functionality.&amp;nbsp; In order to use any of the functions in the above mentioned java script files you can just add a client click event to a control (like a button), a single line of code like:&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="margin-left:40px;"&gt;&lt;span&gt;ShowReportByName(&amp;#39;Contact:Contact Detail&amp;#39;);     &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/OnCLientClick_49C1BF48.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/OnCLientClick_thumb_22877613.png" style="border:0px none;display:inline;" title="On CLient Click" alt="On CLient Click" width="644" border="0" height="337" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now lets look at the javascript file.&amp;nbsp; The file can be found in the Application Architect under Portal Manager…Sage SalesLogix…Support Files…jscript.&lt;/p&gt;       &lt;a href="http://customerfx.com/blogs/integrationblog/ShowReportUtilJSFile_3059BC0E.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ShowReportUtilJSFile_thumb_7B4D2CDD.png" style="border:0px none;display:inline;" title="ShowReportUtil JS File" alt="ShowReportUtil JS File" width="302" border="0" height="484" /&gt;&lt;/a&gt;     &lt;p&gt;If you examine the java script file you can see the various exposed methods available they include:   &lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;ShowReport(ReportNameOrId, EntityTableName, EntityId) - Shows the report defined by ReportNameOrId using the EntityTableName and EntityId values.    &lt;/li&gt;&lt;li&gt;ShowReportByName(ReportName) - Displays a report by FAMILY:NAME. The report should be based on the main table associated with the current view.    &lt;/li&gt;&lt;li&gt;ShowReportById(ReportId) - Displays a report by PLUGIN.PLUGINID. The report should be based on the main table associated with the current view.    &lt;/li&gt;&lt;li&gt;GetReportId(S) - Returns the PLUGIN.PLUGINID associated with the report defined by the S parameter (In the FAMILY:NAME format).    &lt;/li&gt;&lt;li&gt;GetCurrentReport() - Returns the report associated with the current view, if any (Outputs in the FAMILY:NAME format).    &lt;/li&gt;&lt;li&gt;PopulateGlobals(ReportId, EntityTableName, EntityId) - Populates the global report variables used in ShowReport.ascx (in Sage.SalesLogix.Client.Reports.Helper.dll).    &lt;/li&gt;&lt;li&gt;ShowDefaultReport() -&amp;nbsp; Displays the default report for the current view and entity, if a report has been associated with the view.&amp;nbsp; Defaults are defined at the top of the java script file.&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41558" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+7.5.2/default.aspx">SalesLogix 7.5.2</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/Reporting/default.aspx">Reporting</category></item><item><title>Hiding Opportunities in the SalesLogix web client</title><link>http://customerfx.com/pages/integrationblog/2010/03/10/hiding-opportunities-in-the-saleslogix-web-client.aspx</link><pubDate>Wed, 10 Mar 2010 23:38:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41556</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Occasionally we have clients who do not use the Opportunity components of the SalesLogix web client.&amp;nbsp; They have asked us to remove the Opportunity visibility within the web client.&amp;nbsp; Since this is not a common occurrence, I usually end up having to go back and remember where all the places are I need to touch.&amp;nbsp; I decided to write this article for my own reference and to help others who may be looking to do this.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;The SalesLogix web architecture makes hiding opportunities pretty easy.&amp;nbsp; most of the configuration involves simply removing web parts from various portal pages, however there are a couple of smart parts you need to touch.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;Lets start with the easy ones, the portal items to remove:&lt;/p&gt;   &lt;blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;img src="http://customerfx.com/blogs/integrationblog/AccountDetails_thumb_33787952.png" style="border:0px none;display:inline;" title="Account Details" alt="Account Details" width="585" border="0" height="484" /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;On the Account Detail Page, remove the web parts “AccountOpportunities” and “AccountResellerOpportunities (Custom)” &lt;/p&gt;&lt;blockquote&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/ContactDetails_7E6BEA21.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/ContactDetails_thumb_73425FD7.png" style="border:0px none;display:inline;" title="Contact Details" alt="Contact Details" width="619" border="0" height="484" /&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;On the Contact Detail Page, remove the web part “ContactOpportunities”&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;    &lt;blockquote&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/MainPortal_5327531A.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/MainPortal_thumb_051EF3A5.png" style="border:0px none;display:inline;" title="Main Portal" alt="Main Portal" width="644" border="0" height="393" /&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt; On the main Sage SalesLogix portal, click the Navigation tab and under Navigation Bar, remove the item under “Sales” called “Opportunities” &lt;/p&gt;&lt;blockquote&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/MainPortalMenu_6503E6E7.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/MainPortalMenu_thumb_2BED09E5.png" style="border:0px none;display:inline;" title="Main Portal Menu" alt="Main Portal Menu" width="644" border="0" height="376" /&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;On the main Sage SalesLogix portal, click the Navigation tab and under Toolbar Menus, remove the item under “New” called “Opportunity…” &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;     &lt;blockquote&gt;&lt;a href="http://customerfx.com/blogs/integrationblog/Options_36AA613A.png"&gt;&lt;img src="http://customerfx.com/blogs/integrationblog/Options_thumb_2B80D6F0.png" style="border:0px none;display:inline;" title="Options" alt="Options" width="644" border="0" height="326" /&gt;&lt;/a&gt;&lt;/blockquote&gt;              &lt;p&gt;On the Options Page, remove the web parts “OpportunitiesOptionsPage (Custom)” and “DefaultOpportunityProduct (Custom)”&lt;/p&gt;    &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;    &lt;p&gt;Next we need to modify a few Activity and History forms.&amp;nbsp; Most of the forms are custom smart parts but there is one History Quickform.&lt;/p&gt;        &lt;ul&gt;&lt;li&gt;Under Entity Model…Packages…SalesLogix Activity Support…History…Forms, open History Details. Bring up the Properties for the Opportunity Lookup and set the Visible property = false.&amp;nbsp; Save the Quick form.&lt;/li&gt;&lt;li&gt;Under the Portal Manager…Sage SalesLogix…Support Files…Smart Parts…Activity open ActivityDetails.ascx.&amp;nbsp; Look for both the Opportunity label control and the Opportunity lookup control in the markup.&amp;nbsp; Add the attribute &lt;font color="#0000ff"&gt;Visible=”false”&lt;/font&gt; to both of these controls.&lt;/li&gt;&lt;li&gt;Under the Portal Manager…Sage SalesLogix…Support Files…Smart Parts…Activity open CompleteActivity.ascx.&amp;nbsp; Look for both the Opportunity label control and the Opportunity lookup control in the markup.&amp;nbsp; Add the attribute &lt;font color="#0000ff"&gt;Visible=”false”&lt;/font&gt; to both of these controls.&lt;/li&gt;&lt;li&gt;Under the Portal Manager…Sage SalesLogix…Support Files…Smart Parts…Activity open ScheduleCompleteActivity.ascx.&amp;nbsp; Look for both the Opportunity label control and the Opportunity lookup control in the markup.&amp;nbsp; Add the attribute &lt;font color="#0000ff"&gt;Visible=”false”&lt;/font&gt; to both of these controls.&lt;/li&gt;&lt;/ul&gt;                            &lt;br /&gt;That is all there is to it.&amp;nbsp; Opportunities no longer visible in the web client.  &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;ul&gt;     &lt;li&gt;       &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;            &lt;/li&gt;   &lt;/ul&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41556" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category></item><item><title>Mar 30, 2010 - Creating Groups - SalesLogix v6.2 and Above</title><link>http://customerfx.com/pages/events/2010/03/10/Mar-30_2C00_-2010-_2D00_-Creating-Groups-_2D00_-SalesLogix-v6.2-and-Above.aspx</link><pubDate>Wed, 10 Mar 2010 21:14:53 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41553</guid><dc:creator>Brianna Tinjum</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;b&gt;&lt;i&gt;Attend the Workshop - Creating Groups - SalesLogix v6.2 and Above!&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Event details:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Tuesday, March 30, 2010&lt;/li&gt;&lt;li&gt;From 2:00 PM Central to 2:30 PM Central&lt;br /&gt;&lt;i&gt;(8:00 PM GMT to 8:30 PM GMT)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://customerfx.com/pages/events/pages/creating-groups-saleslogix-v6-2-and-above.aspx" class="CommonTextButtonForward"&gt;See Workshop Details&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Register Today!&lt;/b&gt;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41553" width="1" height="1"&gt;</description></item><item><title>Simply Using Parameters in SalesLogix Crystal Reports</title><link>http://customerfx.com/pages/reporting/2010/03/10/simply-using-parameters-in-saleslogix-crystal-reports.aspx</link><pubDate>Wed, 10 Mar 2010 15:17:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41549</guid><dc:creator>George Jensen</dc:creator><slash:comments>1</slash:comments><description>&lt;p&gt;Recently I was asked to provide some help to a client on something that is very simple and very easy to accomplish.&amp;nbsp;&amp;nbsp;I have covered this same&amp;nbsp;topic in a lot&amp;nbsp;of my blogs posts but&amp;nbsp;this very simple task is buried in with a lot of other detail, so I thought it would be a good time to just simply&amp;nbsp;write about using &amp;nbsp;parameters in Crystal Reports to bring it out front and center for the reader to use.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The set up for this post is you have a report that you want to choose whether or not to display&amp;nbsp;certain information&amp;nbsp;when&amp;nbsp;the&amp;nbsp;document&amp;nbsp;is run.&amp;nbsp; In this instance we will use the detail section of the report. &lt;/p&gt;
&lt;p&gt;There are two items that work together to make this happen, a parameter and a formula.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The first step is to create the parameter because you need the name of the parameter for your formula. To add the parameter to your report open the Field Explorer, look for the label of Parameter fields in the tree control, right click and select &amp;quot;New&amp;quot; from the menu.&amp;nbsp; When the Edit Parameter&amp;nbsp;dialog appears, Name the parameter &amp;quot;&lt;strong&gt;ViewDetails&lt;/strong&gt;&amp;quot;, select from the Type drop down list&amp;nbsp;the value &amp;quot;&lt;strong&gt;Boolean&lt;/strong&gt;&amp;quot;, under the Value list in the center of the screen enter a description for the True value of &amp;quot;&lt;strong&gt;Yes&lt;/strong&gt;&amp;quot; and a description of &amp;quot;&lt;strong&gt;No&lt;/strong&gt;&amp;quot; for the &amp;quot;False&amp;quot; value.&amp;nbsp; Toward the bottom of the view you will see a list of Value Options, set the Prompt Text Setting to &amp;quot;&lt;strong&gt;Would you like to include the Details on this report?&lt;/strong&gt;&amp;quot;, set Prompt With Description Only setting to &amp;quot;&lt;strong&gt;True&lt;/strong&gt;&amp;quot;, and set the Default Value setting to &amp;quot;&lt;strong&gt;True&lt;/strong&gt;&amp;quot;.&amp;nbsp; Select OK and the Edit Parameter&amp;nbsp;dialog will close.&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Now we can&amp;nbsp;use this&amp;nbsp;parameter in a formula to suppress the details section of the report.&amp;nbsp; To do this the report should be in design mode. If you look along the left hand side of the report you should see a gray area with items like Report Header, Group Header, or Detail listed.&amp;nbsp; These are the sections of the report. Right click on the Details section of the report and select Section Expert from the menu that appears, find the Suppress check box and select the formula button directly across from the field.&amp;nbsp; When the Formula Workshop opens add the following: &lt;br /&gt;&lt;font color="#0000ff"&gt;&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;{?ViewDetails} = false&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;Save and close.&amp;nbsp; When you refresh the report it should ask you the question:&lt;/p&gt;
&lt;p&gt;Would you like to include the Details on this report?&lt;/p&gt;
&lt;p&gt;If you select &amp;quot;No&amp;quot; the Details section of your report will not display when the report is run. I will leave it to you to guess what happens when &amp;quot;Yes&amp;quot; is selected.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The formula can be used on sections, like in the example,&amp;nbsp;or individual fields.&amp;nbsp; For use on fields, right click on the targeted field and select &amp;quot;Format Field&amp;quot; from the list that appears, navigate to the &amp;quot;Common&amp;quot; tab, here you will find the Suppress Check box for the field, directly to the right of the check box you will see the formula button that launches the Formula Workshop.&lt;/p&gt;
&lt;p&gt;I hope this helps with your reporting challenges.&lt;/p&gt;
&lt;p&gt;Thanks for reading and have a great day&lt;/p&gt;
&lt;p&gt;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;img src="http://customerfx.com/aggbug.aspx?PostID=41549" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx">Report Writing</category><category domain="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx">Crystal Reports</category><category domain="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx">SalesLogix</category></item><item><title>Social Media Geeks [Video]</title><link>http://customerfx.com/pages/customer-fx/2010/03/09/Social-Media-Geeks.aspx</link><pubDate>Tue, 09 Mar 2010 16:02:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41532</guid><dc:creator>David Tinjum</dc:creator><slash:comments>0</slash:comments><description>A Pantless Knights spoof of Jay-Z and Alicia Keys Empire State of Mind...(&lt;a href="http://customerfx.com/pages/customer-fx/2010/03/09/Social-Media-Geeks.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41532" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/customer-fx/archive/tags/Social+Media/default.aspx">Social Media</category></item><item><title>Using SQL User defined functions and Cross Apply to parse SQL data</title><link>http://customerfx.com/pages/customization/2010/03/08/using-sql-user-defined-functions-and-cross-apply-to-parse-sql-data.aspx</link><pubDate>Mon, 08 Mar 2010 09:40:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41527</guid><dc:creator>Jason Buss</dc:creator><slash:comments>2</slash:comments><description>&lt;p&gt;Recently, I worked on an import where I spent a considerable amount of time working out how to effectively parse data from a SQL table, for insertion into another table.

&lt;/p&gt;&lt;p&gt;The table I was evaluating basically looked like this:

&lt;/p&gt;ID, Value&lt;br /&gt;------------------------------&lt;br /&gt;&amp;quot;1&amp;quot;, &amp;quot;ABC, DEF, HIJ&amp;quot;&lt;br /&gt;&amp;quot;2&amp;quot;, &amp;quot;KLM, NOP, QRS&amp;quot;&lt;br /&gt;&amp;quot;3&amp;quot;, &amp;quot;TUV, WXYZ&amp;quot; &lt;br /&gt;&lt;p&gt;I needed a row for each distinct value.  To parse the data, I created a user defined function with the following code:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;CREATE FUNCTION dbo.ParseData&lt;br /&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@RowData nvarchar(2000),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;@SplitOn nvarchar(5)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;) &amp;nbsp;&lt;br /&gt;RETURNS @RtnValue table &lt;br /&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Id int identity(1,1),&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Data nvarchar(100)&lt;br /&gt;) &lt;br /&gt;AS &amp;nbsp;&lt;br /&gt;BEGIN &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Declare @Cnt int&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Set @Cnt = 1&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;While (Charindex(@SplitOn,@RowData)&amp;gt;0)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Begin&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Insert Into @RtnValue (data)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Select &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Data = ltrim(rtrim(Substring(@RowData,1,Charindex(@SplitOn,@RowData)-1)))&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Set @RowData = Substring(@RowData,Charindex(@SplitOn,@RowData)+1,len(@RowData))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Set @Cnt = @Cnt + 1&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;End&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Insert Into @RtnValue (data)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Select Data = ltrim(rtrim(@RowData))&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Return&lt;br /&gt;END&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Now, this function works great when manually defining the values to parse, such as&amp;nbsp; &lt;b&gt;select * from dbo.ParseData(&amp;#39;123,456,123,456&amp;#39;, &amp;#39;,&amp;#39;)&lt;/b&gt;.&amp;nbsp; This would return&lt;/p&gt;&lt;p&gt;Id, Data&lt;br /&gt;-------------&lt;br /&gt;&amp;quot;1&amp;quot;, &amp;quot;123&amp;quot;&lt;br /&gt;&amp;quot;2&amp;quot;, &amp;quot;456&amp;quot;&lt;br /&gt;&amp;quot;3&amp;quot;, &amp;quot;123&amp;quot;&lt;br /&gt;&amp;quot;4&amp;quot;, &amp;quot;456&amp;quot;&lt;/p&gt;&lt;p&gt;as I expected, but when I try to use the function with my original table, I was getting an error:&amp;nbsp; &lt;b&gt;Cannot find either column &amp;quot;dbo&amp;quot; or the user-defined function or aggregate &amp;quot;dbo.Split&amp;quot;, or the name is ambiguous.&lt;/b&gt;&lt;/p&gt;&lt;p&gt;To get around this, I was able to use &amp;quot;Cross Apply&amp;quot; in my sql statement, to run the UDF against each row in my table.&amp;nbsp; Using Cross Apply result in this statement:&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;select ID, s.data from [table]&lt;br /&gt;cross apply&lt;br /&gt;dbo.ParseData([Table].Value, &amp;#39;,&amp;#39;) s&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;Which Returns:&lt;/p&gt;&lt;p&gt;Id, Data&lt;br /&gt;-------------&lt;br /&gt;&amp;quot;1&amp;quot;, &amp;quot;ABC&amp;quot;&lt;br /&gt;&amp;quot;1&amp;quot;, &amp;quot;DEF&amp;quot;&lt;br /&gt;&amp;quot;1&amp;quot;, &amp;quot;HIJ&amp;quot;&lt;br /&gt;&amp;quot;2&amp;quot;, &amp;quot;KLM&amp;quot;&lt;br /&gt;&amp;quot;2&amp;quot;, &amp;quot;NOP&amp;quot;&lt;br /&gt;&amp;quot;2&amp;quot;, &amp;quot;QRS&amp;quot;&lt;br /&gt;&amp;quot;3&amp;quot;, &amp;quot;TUV&amp;quot;&lt;br /&gt;&amp;quot;3&amp;quot;, &amp;quot;WXYZ&amp;quot; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Now I have my data parsed with the table ID, ready to be joined to my source data for import.&lt;br /&gt;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41527" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/customization/archive/tags/Development/default.aspx">Development</category><category domain="http://customerfx.com/pages/customization/archive/tags/How-To/default.aspx">How-To</category><category domain="http://customerfx.com/pages/customization/archive/tags/SQL/default.aspx">SQL</category><category domain="http://customerfx.com/pages/customization/archive/tags/Parsing+Data/default.aspx">Parsing Data</category><category domain="http://customerfx.com/pages/customization/archive/tags/User+Defined+Functions/default.aspx">User Defined Functions</category></item><item><title>Using Opportunities in SalesLogix Web</title><link>http://customerfx.com/pages/inbox/2010/03/08/using-opportunities-in-saleslogix-web.aspx</link><pubDate>Mon, 08 Mar 2010 06:02:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41513</guid><dc:creator>Brianna Tinjum</dc:creator><slash:comments>0</slash:comments><description>Today&amp;#39;s workshop.

Entering and tracking opportunities is an important skill for SalesLogix Web users, especially for those in a sales role.  Do you need a refresher on using opportunities?  Join us for the workshop, &amp;quot;SalesLogix Web - Creating a New Opportunity&amp;quot;, today...(&lt;a href="http://customerfx.com/pages/inbox/2010/03/08/using-opportunities-in-saleslogix-web.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41513" width="1" height="1"&gt;</description></item><item><title>A Look at Querying Data in SalesLogix using IRepository and the SQL Equivalents</title><link>http://customerfx.com/pages/crmdeveloper/2010/03/05/a-look-at-querying-data-in-saleslogix-using-irepository-and-the-sql-equivalents.aspx</link><pubDate>Fri, 05 Mar 2010 18:17:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41520</guid><dc:creator>Ryan Farley</dc:creator><slash:comments>8</slash:comments><description>&lt;p&gt;For some who have been working in the SalesLogix LAN client for years, the transition from using SQL queries to retrieving data using a repository with the entity model can be a difficult change. This post will look at some common data retrieval methods and the SQL equivalents to help you get your head around how to get work done using the entity model.&lt;/p&gt;
&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;br /&gt;Retrieving All Records from a Table&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The following is an example query to retrieve all records in a table.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SQL Equivalent&lt;br /&gt;&lt;/b&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;&lt;span style="color:Blue;"&gt;SELECT&lt;/span&gt; * &lt;span style="color:Blue;"&gt;FROM&lt;/span&gt; PRODUCT&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;&lt;b&gt;Code&lt;/b&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;Sage.Platform.Repository.IRepository&amp;lt;Sage.Entity.Interfaces.IProduct&amp;gt; repository &lt;span style="color:Navy;"&gt;=&lt;/span&gt; &lt;br /&gt;    Sage.Platform.EntityFactory.GetRepository&amp;lt;Sage.Entity.Interfaces.IProduct&amp;gt;();&lt;br /&gt;     &lt;br /&gt;&lt;span style="color:Green;"&gt;// returns an IList&amp;lt;IProduct&amp;gt;&lt;br /&gt;&lt;/span&gt;result &lt;span style="color:Navy;"&gt;=&lt;/span&gt; repository.FindAll();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;






&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;br /&gt;Sorting Query Results&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The following will retrieve all records from a table and sort the results.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SQL Equivalent&lt;br /&gt;&lt;/b&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;&lt;span style="color:Blue;"&gt;SELECT&lt;/span&gt; * &lt;span style="color:Blue;"&gt;FROM&lt;/span&gt; PRODUCT &lt;span style="color:Blue;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;"&gt;BY&lt;/span&gt; FAMILY &lt;span style="color:Blue;"&gt;ASC&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;&lt;b&gt;Code&lt;/b&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;Sage.Platform.Repository.IRepository&amp;lt;Sage.Entity.Interfaces.IProduct&amp;gt; repository &lt;span style="color:Navy;"&gt;=&lt;/span&gt; &lt;br /&gt;    Sage.Platform.EntityFactory.GetRepository&amp;lt;Sage.Entity.Interfaces.IProduct&amp;gt;();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// setup the query&lt;br /&gt;&lt;/span&gt;IQueryable query &lt;span style="color:Navy;"&gt;=&lt;/span&gt; (IQueryable)repository;&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// setup the expression factory&lt;br /&gt;&lt;/span&gt;IExpressionFactory ef &lt;span style="color:Navy;"&gt;=&lt;/span&gt; query.GetExpressionFactory();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// setup your criteria &lt;br /&gt;&lt;/span&gt;ICriteria criteria &lt;span style="color:Navy;"&gt;=&lt;/span&gt; query.CreateCriteria();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// add sort order&lt;br /&gt;&lt;/span&gt;criteria.AddOrder(ef.Asc(&lt;span&gt;&amp;quot;Family&amp;quot;&lt;/span&gt;));&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// returns an IList&amp;lt;IProduct&amp;gt;&lt;br /&gt;&lt;/span&gt;result &lt;span style="color:Navy;"&gt;=&lt;/span&gt; criteria.List&amp;lt;IProduct&amp;gt;();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;





&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;br /&gt;Query Using Where - Finding All Opportunities for an Account&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The following will add a condition to a query to retrieve all opportunities for an account and order results.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SQL Equivalent&lt;br /&gt;&lt;/b&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;&lt;span style="color:Blue;"&gt;SELECT&lt;/span&gt; * &lt;span style="color:Blue;"&gt;FROM&lt;/span&gt; OPPORTUNITY &lt;span style="color:Blue;"&gt;WHERE&lt;/span&gt; ACCOUNTID = &lt;span style="color:Navy;"&gt;&amp;#39;SOMEACCOUNTID&amp;#39;&lt;/span&gt; &lt;span style="color:Blue;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;"&gt;BY&lt;/span&gt; DESCRIPTION &lt;span style="color:Blue;"&gt;ASC&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;&lt;b&gt;Code&lt;/b&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;&lt;span style="color:Green;"&gt;// Using repository helper&lt;br /&gt;&lt;/span&gt;Sage.Platform.RepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt; repository &lt;span style="color:Navy;"&gt;=&lt;/span&gt; &lt;br /&gt;    Sage.Platform.EntityFactory.GetRepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt;();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// EF and PF are setup automatically&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// setup your criteria &lt;br /&gt;&lt;/span&gt;ICriteria criteria &lt;span style="color:Navy;"&gt;=&lt;/span&gt; repository.CreateCriteria();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// add condition for account&lt;br /&gt;&lt;/span&gt;criteria.Add(repository.EF.Eq(&lt;span&gt;&amp;quot;Account&amp;quot;&lt;/span&gt;, account));&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// add sort order&lt;br /&gt;&lt;/span&gt;criteria.AddOrder(repository.EF.Asc(&lt;span&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;));&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// returns an IList&amp;lt;IOpportunity&amp;gt;&lt;br /&gt;&lt;/span&gt;result &lt;span style="color:Navy;"&gt;=&lt;/span&gt; criteria.List&amp;lt;IOpportunity&amp;gt;();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;





&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;br /&gt;Query Conditions using AND&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The following will AND several query conditions together and order the results.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SQL Equivalent&lt;br /&gt;&lt;/b&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;&lt;span style="color:Blue;"&gt;SELECT&lt;/span&gt; * &lt;span style="color:Blue;"&gt;FROM&lt;/span&gt; OPPORTUNITY &lt;span style="color:Blue;"&gt;WHERE&lt;/span&gt; STATUS = &lt;span style="color:Navy;"&gt;&amp;#39;Closed - Won&amp;#39;&lt;/span&gt; &lt;span style="color:Blue;"&gt;AND&lt;/span&gt; DESCRIPTION = &lt;span style="color:Navy;"&gt;&amp;#39;Some Description&amp;#39;&lt;/span&gt; &lt;span style="color:Blue;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;"&gt;BY&lt;/span&gt; DESCRIPTION &lt;span style="color:Blue;"&gt;ASC&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;&lt;b&gt;Code&lt;/b&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;&lt;span style="color:Green;"&gt;// Using repository helper&lt;br /&gt;&lt;/span&gt;Sage.Platform.RepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt; repository &lt;span style="color:Navy;"&gt;=&lt;/span&gt; &lt;br /&gt;    Sage.Platform.EntityFactory.GetRepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt;();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// EF and PF are setup automatically&lt;br /&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// setup your criteria &lt;br /&gt;&lt;/span&gt;ICriteria criteria &lt;span style="color:Navy;"&gt;=&lt;/span&gt; repository.CreateCriteria();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// AND conditions together&lt;br /&gt;&lt;/span&gt;criteria.Add(repository.EF.Conjunction()&lt;br /&gt;    .Add(repository.EF.Eq(&lt;span&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Closed - Won&amp;quot;&lt;/span&gt;))&lt;br /&gt;    .Add(repository.EF.Eq(&lt;span&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Some Description&amp;quot;&lt;/span&gt;));&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// add sort order&lt;br /&gt;&lt;/span&gt;criteria.AddOrder(repository.EF.Asc(&lt;span&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;));&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// returns an IList&amp;lt;IOpportunity&amp;gt;&lt;br /&gt;&lt;/span&gt;result &lt;span style="color:Navy;"&gt;=&lt;/span&gt; criteria.List&amp;lt;IOpportunity&amp;gt;();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;





&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;br /&gt;Query Conditions using OR&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The following will OR several query conditions together and order the results.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SQL Equivalent&lt;br /&gt;&lt;/b&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;&lt;span style="color:Blue;"&gt;SELECT&lt;/span&gt; * &lt;span style="color:Blue;"&gt;FROM&lt;/span&gt; OPPORTUNITY &lt;span style="color:Blue;"&gt;WHERE&lt;/span&gt; STATUS = &lt;span style="color:Navy;"&gt;&amp;#39;Closed - Won&amp;#39;&lt;/span&gt; &lt;span style="color:Blue;"&gt;OR&lt;/span&gt; STATUS = &lt;span style="color:Navy;"&gt;&amp;#39;Open&amp;#39;&lt;/span&gt; &lt;span style="color:Blue;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;"&gt;BY&lt;/span&gt; DESCRIPTION &lt;span style="color:Blue;"&gt;ASC&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;&lt;b&gt;Code&lt;/b&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;&lt;span style="color:Green;"&gt;// Using repository helper (EF and PF are setup automatically)&lt;br /&gt;&lt;/span&gt;Sage.Platform.RepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt; repository &lt;span style="color:Navy;"&gt;=&lt;/span&gt; &lt;br /&gt;    Sage.Platform.EntityFactory.GetRepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt;();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// setup your criteria &lt;br /&gt;&lt;/span&gt;ICriteria criteria &lt;span style="color:Navy;"&gt;=&lt;/span&gt; repository.CreateCriteria();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// OR conditions together&lt;br /&gt;&lt;/span&gt;criteria.Add(repository.EF.Or(repository.EF.Eq(&lt;span&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Closed - Won&amp;quot;&lt;/span&gt;), &lt;br /&gt;                              repository.EF.Eq(&lt;span&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Open&amp;quot;&lt;/span&gt;)));&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// add sort order&lt;br /&gt;&lt;/span&gt;criteria.AddOrder(repository.EF.Asc(&lt;span&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;));&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// returns an IList&amp;lt;IOpportunity&amp;gt;&lt;br /&gt;&lt;/span&gt;result &lt;span style="color:Navy;"&gt;=&lt;/span&gt; criteria.List&amp;lt;IOpportunity&amp;gt;();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;





&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;br /&gt;Query Conditions using IN&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The following will IN several query conditions together and order the results.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SQL Equivalent&lt;br /&gt;&lt;/b&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;&lt;span style="color:Blue;"&gt;SELECT&lt;/span&gt; * &lt;span style="color:Blue;"&gt;FROM&lt;/span&gt; OPPORTUNITY &lt;span style="color:Blue;"&gt;WHERE&lt;/span&gt; STATUS &lt;span style="color:Blue;"&gt;IN&lt;/span&gt; (&lt;span style="color:Navy;"&gt;&amp;#39;Closed - Won&amp;#39;&lt;/span&gt;,&lt;span style="color:Navy;"&gt;&amp;#39;Open&amp;#39;&lt;/span&gt;,&lt;span style="color:Navy;"&gt;&amp;#39;Closed - Lost&amp;#39;&lt;/span&gt;) &lt;span style="color:Blue;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;"&gt;BY&lt;/span&gt; DESCRIPTION &lt;span style="color:Blue;"&gt;ASC&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;&lt;b&gt;Code&lt;/b&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;&lt;span style="color:Green;"&gt;// Using repository helper (EF and PF are setup automatically)&lt;br /&gt;&lt;/span&gt;Sage.Platform.RepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt; repository &lt;span style="color:Navy;"&gt;=&lt;/span&gt; &lt;br /&gt;    Sage.Platform.EntityFactory.GetRepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt;();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// setup your criteria &lt;br /&gt;&lt;/span&gt;ICriteria criteria &lt;span style="color:Navy;"&gt;=&lt;/span&gt; repository.CreateCriteria();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// IN conditions together&lt;br /&gt;&lt;/span&gt;criteria.Add(repository.EF.In(&lt;span&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;, &lt;span style="color:Blue;"&gt;new&lt;/span&gt; &lt;span style="color:Blue;"&gt;string&lt;/span&gt;[] {&lt;span&gt;&amp;quot;Closed - Won&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Open&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Closed - Lost&amp;quot;&lt;/span&gt;})); &lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// add sort order&lt;br /&gt;&lt;/span&gt;criteria.AddOrder(repository.EF.Asc(&lt;span&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;));&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// returns an IList&amp;lt;IOpportunity&amp;gt;&lt;br /&gt;&lt;/span&gt;result &lt;span style="color:Navy;"&gt;=&lt;/span&gt; criteria.List&amp;lt;IOpportunity&amp;gt;();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;





&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;br /&gt;Query Conditions using BETWEEN&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The following will BETWEEN several query conditions together and order the results.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SQL Equivalent&lt;br /&gt;&lt;/b&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;&lt;span style="color:Blue;"&gt;SELECT&lt;/span&gt; * &lt;span style="color:Blue;"&gt;FROM&lt;/span&gt; OPPORTUNITY &lt;span style="color:Blue;"&gt;WHERE&lt;/span&gt; STATUS &lt;span style="color:Blue;"&gt;BETWEEN&lt;/span&gt; 50000 &lt;span style="color:Blue;"&gt;AND&lt;/span&gt; 150000 &lt;span style="color:Blue;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;"&gt;BY&lt;/span&gt; DESCRIPTION &lt;span style="color:Blue;"&gt;ASC&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;&lt;b&gt;Code&lt;/b&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;&lt;span style="color:Green;"&gt;// Using repository helper (EF and PF are setup automatically)&lt;br /&gt;&lt;/span&gt;Sage.Platform.RepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt; repository &lt;span style="color:Navy;"&gt;=&lt;/span&gt; &lt;br /&gt;    Sage.Platform.EntityFactory.GetRepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt;();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// setup your criteria &lt;br /&gt;&lt;/span&gt;ICriteria criteria &lt;span style="color:Navy;"&gt;=&lt;/span&gt; repository.CreateCriteria();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// BETWEEN conditions together&lt;br /&gt;&lt;/span&gt;criteria.Add(repository.EF.Between(&lt;span&gt;&amp;quot;SalesPotential&amp;quot;&lt;/span&gt;, 50000, 150000)); &lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// add sort order&lt;br /&gt;&lt;/span&gt;criteria.AddOrder(repository.EF.Asc(&lt;span&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;));&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// returns an IList&amp;lt;IOpportunity&amp;gt;&lt;br /&gt;&lt;/span&gt;result &lt;span style="color:Navy;"&gt;=&lt;/span&gt; criteria.List&amp;lt;IOpportunity&amp;gt;();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;





&lt;p&gt;&lt;font size="4"&gt;&lt;b&gt;&lt;br /&gt;Query Conditions using LIKE&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The following will LIKE a query condition and order the results.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;SQL Equivalent&lt;br /&gt;&lt;/b&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;&lt;span style="color:Blue;"&gt;SELECT&lt;/span&gt; * &lt;span style="color:Blue;"&gt;FROM&lt;/span&gt; OPPORTUNITY &lt;span style="color:Blue;"&gt;WHERE&lt;/span&gt; STATUS &lt;span style="color:Blue;"&gt;LIKE&lt;/span&gt; &lt;span style="color:Navy;"&gt;&amp;#39;Closed%&amp;#39;&lt;/span&gt; &lt;span style="color:Blue;"&gt;ORDER&lt;/span&gt; &lt;span style="color:Blue;"&gt;BY&lt;/span&gt; DESCRIPTION &lt;span style="color:Blue;"&gt;ASC&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;&lt;b&gt;Code&lt;/b&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;&lt;span style="color:Green;"&gt;// Using repository helper (EF and PF are setup automatically)&lt;br /&gt;&lt;/span&gt;Sage.Platform.RepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt; repository &lt;span style="color:Navy;"&gt;=&lt;/span&gt; &lt;br /&gt;    Sage.Platform.EntityFactory.GetRepositoryHelper&amp;lt;Sage.Entity.Interfaces.IOpportunity&amp;gt;();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// setup your criteria &lt;br /&gt;&lt;/span&gt;ICriteria criteria &lt;span style="color:Navy;"&gt;=&lt;/span&gt; repository.CreateCriteria();&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// LIKE conditions together&lt;br /&gt;&lt;/span&gt;criteria.Add(repository.EF.Like(&lt;span&gt;&amp;quot;Status&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Closed%&amp;quot;&lt;/span&gt;)); &lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// add sort order&lt;br /&gt;&lt;/span&gt;criteria.AddOrder(repository.EF.Asc(&lt;span&gt;&amp;quot;Description&amp;quot;&lt;/span&gt;));&lt;br /&gt; &lt;br /&gt;&lt;span style="color:Green;"&gt;// returns an IList&amp;lt;IOpportunity&amp;gt;&lt;br /&gt;&lt;/span&gt;result &lt;span style="color:Navy;"&gt;=&lt;/span&gt; criteria.List&amp;lt;IOpportunity&amp;gt;();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;Hopefully that helps make the transition a bit easier. On this same topic, don&amp;#39;t forget to check out &lt;a href="http://customerfx.com/pages/integrationblog/2010/03/04/using-icriteria-and-not-to-exclude-records-in-saleslogix.aspx"&gt;Kris Halsrud&amp;#39;s post on using NOT to exclude conditions&lt;/a&gt;.&amp;nbsp; &lt;br /&gt;&lt;/p&gt;


&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41520" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/crmdeveloper/archive/tags/Development/default.aspx">Development</category><category domain="http://customerfx.com/pages/crmdeveloper/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/crmdeveloper/archive/tags/SalesLogix/default.aspx">SalesLogix</category><category domain="http://customerfx.com/pages/crmdeveloper/archive/tags/Entity+Model/default.aspx">Entity Model</category><category domain="http://customerfx.com/pages/crmdeveloper/archive/tags/Query/default.aspx">Query</category><category domain="http://customerfx.com/pages/crmdeveloper/archive/tags/IRepository/default.aspx">IRepository</category></item><item><title>Overview of SalesLogix v7.5.2</title><link>http://customerfx.com/pages/inbox/2010/03/04/overview-of-saleslogix-v7-5-2.aspx</link><pubDate>Thu, 04 Mar 2010 22:33:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41519</guid><dc:creator>Brianna Tinjum</dc:creator><slash:comments>0</slash:comments><description> An industry observation.

An industry analyst, Gabriel Gheorghiu, recently attended a SalesLogix v7.5.2 webinar and he wrote a blog about his experience.  Below are a couple of paragraphs from the blog:...(&lt;a href="http://customerfx.com/pages/inbox/2010/03/04/overview-of-saleslogix-v7-5-2.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41519" width="1" height="1"&gt;</description></item><item><title>Mar 22, 2010 - SalesLogix Web - Navigating the Web Client</title><link>http://customerfx.com/pages/events/2010/03/04/Mar-22_2C00_-2010-_2D00_-SalesLogix-Web-_2D00_-Navigating-the-Web-Client.aspx</link><pubDate>Thu, 04 Mar 2010 18:57:29 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41517</guid><dc:creator>Brianna Tinjum</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;&lt;b&gt;&lt;i&gt;Attend the Workshop - SalesLogix Web - Navigating the Web Client!&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Event details:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Monday, March 22, 2010&lt;/li&gt;&lt;li&gt;From 2:00 PM Central to 2:30 PM Central&lt;br /&gt;&lt;i&gt;(8:00 PM GMT to 8:30 PM GMT)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://customerfx.com/pages/events/pages/saleslogix-web-navigating-the-web-client.aspx" class="CommonTextButtonForward"&gt;See Workshop Details&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Register Today!&lt;/b&gt;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41517" width="1" height="1"&gt;</description></item><item><title>Using ICriteria and Not to exclude records in SalesLogix</title><link>http://customerfx.com/pages/integrationblog/2010/03/04/using-icriteria-and-not-to-exclude-records-in-saleslogix.aspx</link><pubDate>Thu, 04 Mar 2010 16:39:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41516</guid><dc:creator>Kris Halsrud</dc:creator><slash:comments>1</slash:comments><description>
&lt;p&gt;In SalesLogix you can use the Sage.Platform.Repository.ICriteria class to query the entity model using standard ICriteria.&amp;nbsp; One thing I have been asked in the past is how do you exclude certain conditions?&amp;nbsp; A common example might be show me all of the non-closed tickets for a contact, where being closed is denoted by a status=”Closed”.&amp;nbsp; In this scenario you only want a condition similar to status&amp;lt;&amp;gt;’closed’.&amp;nbsp; This can be done using the .Not method which accepts as an input a standard parameter to exclude.&amp;nbsp; Lets take a look at the code:&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;RepositoryHelper&amp;lt;Sage.Entity.Interfaces.ITicket&amp;gt; repository &lt;span style="color:Navy;"&gt;=&lt;/span&gt; EntityFactory.GetRepositoryHelper&amp;lt;Sage.Entity.Interfaces.ITicket&amp;gt;();

Sage.Platform.Repository.ICriteria criteria &lt;span style="color:Navy;"&gt;=&lt;/span&gt; repository.CreateCriteria();
criteria.Add(repository.EF.Eq(&lt;span&gt;&amp;quot;Contact.Id&amp;quot;&lt;/span&gt;, contact.Id.ToString()));
criteria.Add(repository.EF.Not(repository.EF.Eq(&lt;span&gt;&amp;quot;StatusCode&amp;quot;&lt;/span&gt;, &lt;span&gt;&amp;quot;Closed&amp;quot;&lt;/span&gt;)));
criteria.AddOrder(repository.EF.Desc(&lt;span&gt;&amp;quot;CreateDate&amp;quot;&lt;/span&gt;));

result &lt;span style="color:Navy;"&gt;=&lt;/span&gt; criteria.List&amp;lt;Sage.Entity.Interfaces.ITicket&amp;gt;();&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;You can see the entity factory EF.Not used above which has passed in a EF.Eq condition looking for “Closed“ statuses.&amp;nbsp; Now in this scenario I am using it assumes that StatusCode is storing “Closed” as text and not as the corresponding picklistid, which is not the standard OOTB SalesLogix behavior, but it should never the less demonstrate how to use the Not method to exclude a condition from your query result.&lt;/p&gt;
&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41516" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/integrationblog/archive/tags/SalesLogix+Web/default.aspx">SalesLogix Web</category><category domain="http://customerfx.com/pages/integrationblog/archive/tags/IRepository/default.aspx">IRepository</category></item><item><title>Video - Social Media Revolution or Evolution?</title><link>http://customerfx.com/pages/customer-fx/2010/03/04/Video-Social-Media-Revolution-or-Evolution.aspx</link><pubDate>Thu, 04 Mar 2010 14:35:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41515</guid><dc:creator>David Tinjum</dc:creator><slash:comments>1</slash:comments><description>I was going through my YouTube favorites the other day and came across this video from last fall. It got me thinking about the evolution of &amp;quot;Social Media&amp;quot; from Compuserve, Prodigy, Bulletin Board systems and such, to blogs and forums, and the mass market social sites of today like, YouTube, Facebook, Twitter and the rest. It really has been evolving for more than 2 decades. Maybe more of an explosion than revolution, but the numbers in this video are pretty mind blowing. Some of the facts...(&lt;a href="http://customerfx.com/pages/customer-fx/2010/03/04/Video-Social-Media-Revolution-or-Evolution.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41515" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/customer-fx/archive/tags/twitter/default.aspx">twitter</category><category domain="http://customerfx.com/pages/customer-fx/archive/tags/Facebook/default.aspx">Facebook</category><category domain="http://customerfx.com/pages/customer-fx/archive/tags/Social+Media/default.aspx">Social Media</category><category domain="http://customerfx.com/pages/customer-fx/archive/tags/YouTube/default.aspx">YouTube</category></item><item><title>SalesLogix Crystal Reporting within a Daily Period of Time.</title><link>http://customerfx.com/pages/reporting/2010/03/04/reporting-daily-within-a-specific-period-of-time.aspx</link><pubDate>Thu, 04 Mar 2010 14:00:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41509</guid><dc:creator>George Jensen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Today I worked with a reader of this blog to help with&amp;nbsp;a challenge.&amp;nbsp; The company&amp;nbsp;wanted a Crystal Report filtered to only display data&amp;nbsp;with the&amp;nbsp;current date with a time equal to or&amp;nbsp;after 10:00 PM and include records for next day with the&amp;nbsp;time being equal to or&amp;nbsp;before 7:00 AM.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The final Report Selection formula looked similar to this:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;(DateDiff (&amp;quot;d&amp;quot;,{ACTIVITY.STARTDATE} ,CurrentDate ) = 0 and Time({HISTORY.CREATEDATE}) &amp;gt;= TimeSerial (22, 00,00))&lt;br /&gt;or&lt;br /&gt;(DateDiff (&amp;quot;d&amp;quot;,{ACTIVITY.STARTDATE} ,CurrentDate ) = 1 and Time({HISTORY.CREATEDATE}) &amp;lt;= TimeSerial (07, 00,00))&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;If you want to play with this you could use your Sage SalesLogix Activity table.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It was kind of a fun challenge and I thought some others would benefit from seeing&amp;nbsp;the&amp;nbsp;result.&amp;nbsp; If you have similar challenges please feel to write me directly at &lt;a href="mailto:george.jensen@customerfx.com"&gt;george.jensen@customerfx.com&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks for reading.&lt;/p&gt;
&lt;p&gt;Geo&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41509" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx">Report Writing</category><category domain="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx">Crystal Reports</category><category domain="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx">SalesLogix</category></item><item><title>SalesLogix Cloud offering - $20 per user per month promotion ending soon</title><link>http://customerfx.com/pages/saleslogix_cloud/2010/03/02/saleslogix-cloud-offering-20-per-user-per-month-promotion-ending-soon.aspx</link><pubDate>Tue, 02 Mar 2010 20:08:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41510</guid><dc:creator>Scott Weber</dc:creator><slash:comments>0</slash:comments><description>Time is running out to get in on the SalesLogix Cloud Edition .5 release at the $20 per user per month promotional pricing. ...(&lt;a href="http://customerfx.com/pages/saleslogix_cloud/2010/03/02/saleslogix-cloud-offering-20-per-user-per-month-promotion-ending-soon.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41510" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/saleslogix_cloud/archive/tags/SalesLogix+Cloud/default.aspx">SalesLogix Cloud</category></item><item><title>More to do with the SalesLogix Crystal Report - Side By Side Bar Graph</title><link>http://customerfx.com/pages/reporting/2010/03/02/a-little-more-with-the-side-by-side-bar-graph.aspx</link><pubDate>Tue, 02 Mar 2010 17:54:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41507</guid><dc:creator>George Jensen</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;SAP Business Objects Crystal Reports (Crystal Reports) is the report writer for Sage SalesLogix (SalesLogix).&amp;nbsp; I am a developer that works for the best CRM Consulting and Service Provider in the world and we primarily work with SalesLogix.&amp;nbsp; This blog focuses on writing Crystal Reports for&amp;nbsp;SalesLogix and helping you, the reader, learn and get more from both tools.&amp;nbsp;I am currently blogging about&amp;nbsp;the graphs that come with Crystal Reports.&amp;nbsp; &lt;a href="http://customerfx.com/pages/reporting/2010/02/24/the-simple-bar-graph.aspx"&gt;In&amp;nbsp;a previous post&lt;/a&gt;&amp;nbsp;I discussed the simple side by side bar graph that Crystal Reports provides standard.&amp;nbsp; Today&amp;nbsp;we are going to take that graph to the next level and show you more things you can do to make your graph look a little better with a little more data.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The graph we&amp;nbsp;are working with&amp;nbsp;currently provides&amp;nbsp;the number of accounts by type.&amp;nbsp; I am going to change this graph to also show me the same detail but include the status of the Accounts also. To do this I open the report with my bar graph, I right click on the upper corner of the graph and select&amp;nbsp;&amp;quot;Chart Expert&amp;quot; from the list that appears.&amp;nbsp; This will open the Chart Expert dialog defaulted to the &amp;quot;Type&amp;quot; tab with the &amp;quot;Side By Side Bar Graph&amp;quot; selected.&amp;nbsp; To add a little dimension to this&amp;nbsp;chart select the &amp;quot;Use Depth effect&amp;quot;&amp;nbsp;check box on the bottom of this tab.&amp;nbsp; You can also selct if you want the graph to display Horizontally or Vertically.&lt;/p&gt;
&lt;p&gt;Next, navigate to the &amp;quot;Data&amp;quot; tab and add in the Account.Status field&amp;nbsp;under the Account.Type in the upper right hand corner of the tab.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;On the &amp;quot;Text&amp;quot; tab, change the Title of the Graph to &amp;quot;# Accounts by Type and Status&amp;quot;, and the group title to Status.&amp;nbsp; Just so you can see you do have control over the fonts on your graph, go down to the format section and set size of&amp;nbsp;the Title font&amp;nbsp;to 9.&lt;/p&gt;
&lt;p&gt;Select &amp;quot;OK&amp;quot; which closes the dialog and allows you to again see your graph.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/MoreBarGraph5.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/MoreBarGraph5.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a little messy, to clean up our data to really just focus on&amp;nbsp;those items that are important to us like,&amp;nbsp; I really do not want to see any accounts that have a status of &amp;quot;Purge&amp;quot; and&amp;nbsp;I want to remove accounts with a type of Competitor, Partner, or Vendor.&amp;nbsp; To limit the data for this report, I will&amp;nbsp;go up to the Report Menu, find Selection Formulas, and then select Record form the list.&amp;nbsp; When the formula editor opens I created this formula:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;{ACCOUNT.ACCOUNT}&amp;gt;&amp;quot;&amp;quot;&amp;nbsp; &lt;/font&gt;&lt;font color="#3399ff"&gt;// This one was already in the formula&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;and&lt;br /&gt;{ACCOUNT.STATUS} &amp;lt;&amp;gt; &amp;quot;Purge&amp;quot;&lt;br /&gt;and &lt;br /&gt;Not({ACCOUNT.TYPE} in MakeArray(&amp;quot;Competitor&amp;quot;,&amp;quot;Partner&amp;quot;,&amp;quot;Vendor&amp;quot;))&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Now when I view my report things are cleaned up a little. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/MoreBarGraph3.bmp"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/MoreBarGraph.4.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/MoreBarGraph.4.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;FYI, there are more chart options available to you by right clicking on the chart and selecting the&amp;nbsp;&amp;quot;Chart Options&amp;quot; menu item.&amp;nbsp; This will open up a dialog that allows you to play around with the chart properties.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Next time we will get into the Stacked Bar Chart.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Thanks for reading!&lt;/p&gt;
&lt;p&gt;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;img src="http://customerfx.com/aggbug.aspx?PostID=41507" width="1" height="1"&gt;</description><category domain="http://customerfx.com/pages/reporting/archive/tags/Report+Writing/default.aspx">Report Writing</category><category domain="http://customerfx.com/pages/reporting/archive/tags/Crystal+Reports/default.aspx">Crystal Reports</category><category domain="http://customerfx.com/pages/reporting/archive/tags/SalesLogix/default.aspx">SalesLogix</category><category domain="http://customerfx.com/pages/reporting/archive/tags/Customer+FX/default.aspx">Customer FX</category></item><item><title>Are You Registered for the SalesLogix Training Workshop Today?</title><link>http://customerfx.com/pages/inbox/2010/03/01/are-you-registered-for-the-saleslogix-training-workshop-today.aspx</link><pubDate>Mon, 01 Mar 2010 06:02:00 GMT</pubDate><guid isPermaLink="false">e15581aa-2787-4c59-a940-524c09f5d256:41499</guid><dc:creator>Brianna Tinjum</dc:creator><slash:comments>0</slash:comments><description> I hope your answer is yes.

Today at 2pm CST we will hold the workshop, &amp;quot;Creating a Contact Process - SalesLogix v6.2 and Above&amp;quot;.  This workshop is one of our most popular and with good reason - done correctly a contact process can take the activities that...(&lt;a href="http://customerfx.com/pages/inbox/2010/03/01/are-you-registered-for-the-saleslogix-training-workshop-today.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41499" width="1" height="1"&gt;</description></item></channel></rss>