<?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>2009-09-03T09:12:00Z</updated><entry><title>Simply Using Parameters in SalesLogix Crystal Reports</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/03/10/simply-using-parameters-in-saleslogix-crystal-reports.aspx" /><id>http://customerfx.com/pages/reporting/2010/03/10/simply-using-parameters-in-saleslogix-crystal-reports.aspx</id><published>2010-03-10T15:17:00Z</published><updated>2010-03-10T15:17:00Z</updated><content type="html">&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;</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>SalesLogix Crystal Reporting within a Daily Period of Time.</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/03/04/reporting-daily-within-a-specific-period-of-time.aspx" /><id>http://customerfx.com/pages/reporting/2010/03/04/reporting-daily-within-a-specific-period-of-time.aspx</id><published>2010-03-04T14:00:00Z</published><updated>2010-03-04T14:00:00Z</updated><content type="html">&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;</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>More to do with the SalesLogix Crystal Report - Side By Side Bar Graph</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/03/02/a-little-more-with-the-side-by-side-bar-graph.aspx" /><id>http://customerfx.com/pages/reporting/2010/03/02/a-little-more-with-the-side-by-side-bar-graph.aspx</id><published>2010-03-02T17:54:00Z</published><updated>2010-03-02T17:54:00Z</updated><content type="html">&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;</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" /><category term="Customer FX" scheme="http://customerfx.com/pages/reporting/archive/tags/Customer+FX/default.aspx" /></entry><entry><title>The Simple Bar Graph</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/02/24/the-simple-bar-graph.aspx" /><id>http://customerfx.com/pages/reporting/2010/02/24/the-simple-bar-graph.aspx</id><published>2010-02-24T15:10:00Z</published><updated>2010-02-24T15:10:00Z</updated><content type="html">&lt;p&gt;I have been very derelict in my blogging responsibilities for Customer FX.&amp;nbsp; Lately, during my commute,&amp;nbsp;I have been trying to figure&amp;nbsp;out why.&amp;nbsp; I have come up with two reasons for&amp;nbsp;my hesitation in writing&amp;nbsp;blogs:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;First&amp;nbsp;- We at Customer FX have been extremely busy.&lt;/p&gt;
&lt;p&gt;Second -&amp;nbsp;The need for a solid topic to write about.&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Being busy is not really an excuse for us at CFX&amp;nbsp;so I ignored the first reason and&amp;nbsp;concentrated thinking about&amp;nbsp;what a good topic would be, finally&amp;nbsp;I came up with graphs.&amp;nbsp; I have done very little on graphs.&amp;nbsp; Honestly,&amp;nbsp;I have not really worked with them all that much so blogging on this topic will provide me a&amp;nbsp;reason to really get to know and use the different graphs that come with Business Objects Crystal Report.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We will start with the simple bar graph.&lt;/p&gt;
&lt;p&gt;The goal today will be to build a small little bar graph that provides the total number of Accounts base on the ACCOUNT.TYPE field.&amp;nbsp; To start, build a report using report wizard that contains the SalesLogix Account table.&amp;nbsp; We will need the Account and Type fields from that table.&amp;nbsp; Also, we will want to build a report group using ACCOUNT.TYPE.&lt;/p&gt;
&lt;p&gt;For starters, let&amp;#39;s suppress the Group1 Header and Footer&amp;nbsp;along with the&amp;nbsp;Details sections of the report.&amp;nbsp; We are doing this just to avoid confusion.&amp;nbsp;&amp;nbsp;This is a group based chart so we need to display this graph in the layer above the group, in this case the header or footer.&amp;nbsp;Doing so&amp;nbsp;allows the&amp;nbsp;chart to roll up the data from the group.&lt;/p&gt;
&lt;p&gt;In the Report Footer section of the report, right click and select the &amp;quot;Insert Chart&amp;quot; value on the list that appears.&amp;nbsp; Immediately an orange box has attached itself to the cursor, to release just click on the location where you want the chart to display, in this case just click on the report footer again.&amp;nbsp; This will bring up Crystal&amp;#39;s Chart Expert.&amp;nbsp; You will already be on the Data tab because the action will automatically default you to the &amp;quot;Side By Side Bar Chart&amp;quot;.&amp;nbsp;&amp;nbsp;The tabs along the top change based on the type of chart.&amp;nbsp; With this bar chart you have the Data, Axes, Options, Color Highlight, and Text.&lt;/p&gt;
&lt;p&gt;For this chart instance,&amp;nbsp;on the Data tab, set the field below the&amp;nbsp;&amp;quot;On Change of&amp;quot; value&amp;nbsp;to ACCOUNT.TYPE and the field below the Show Value(s) label&amp;nbsp;to ACCOUNT.ACCOUNT.&lt;/p&gt;
&lt;p&gt;On the Options tab, check the box with the label &amp;quot;Show Value&amp;quot; located in&amp;nbsp;the Data Points section.&lt;/p&gt;
&lt;p&gt;On the Text tab, uncheck the Title Checkbox and change the Title to read &amp;quot;# Accounts by Type&amp;quot;.&amp;nbsp; Then uncheck the Group Title and change&amp;nbsp;to &amp;quot;Type&amp;quot; and the Data Title to &amp;quot;# Accounts&amp;quot;.&lt;/p&gt;
&lt;p&gt;Now select the OK button and view your chart.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Basic%20Bar%20Graph.bmp"&gt;&lt;img src="http://customerfx.com/blogs/reporting/Basic%20Bar%20Graph.bmp" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To bring the Chart Expert back simply right click on the chart and select &amp;quot;Chart Expert&amp;quot; from the list that appears. I encourage you to play around with the different setting on the tabs to see the effect on the graph&lt;/p&gt;
&lt;p&gt;On Friday we will play some more with the Bar type of chart. &lt;/p&gt;
&lt;p&gt;Thanks for reading,&amp;nbsp; Geo&lt;/p&gt;&lt;br /&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41497" 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>Working with Crystal Alerts</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/02/12/working-with-crystal-alerts.aspx" /><id>http://customerfx.com/pages/reporting/2010/02/12/working-with-crystal-alerts.aspx</id><published>2010-02-12T18:55:00Z</published><updated>2010-02-12T18:55:00Z</updated><content type="html">&lt;p&gt;I have often wondered about what the alerts functionality in Crystal Reports was all about so I though I would take a little time to figure it out today.&amp;nbsp; The scenario I will use&amp;nbsp;gives me an&amp;nbsp;alert that identifies when and if a certain Account record qualifies for a report&amp;nbsp;I have written.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;To get help with this functionality you can use Crystal Help, use the search word &amp;quot;Alert&amp;quot;.&amp;nbsp; This will provide you all of the detail you need to be successful. &lt;/p&gt;
&lt;p&gt;To start I will create the alert by selecting the Report&amp;gt;Alerts menu item,&amp;nbsp;the Create Alerts dialog comes into view.&amp;nbsp;&amp;nbsp; Here you can select to either add a new or edit an existing alert.&amp;nbsp; We will select the &amp;quot;Add&amp;quot; button and a new alert dialog will open.&amp;nbsp; I labeled my alert &amp;quot;Test&amp;quot;.&amp;nbsp;&amp;nbsp; You can insert a simple message in the Message field&amp;nbsp;or you can use the formula editor to create a rule based alert.&amp;nbsp; I entered the following into the message field and added:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;quot;The Account Customer FX is contained within this report.&amp;quot;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Next we need a formula to call the alert, this is done using the &amp;quot;Condition&amp;quot; button.&amp;nbsp; This opens the Alert Condition Formula Editor in which I added the following formula.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;If {ACCOUNT.ACCOUNT} = &amp;quot;Customer FX Corporation&amp;quot;&lt;/font&gt; .&lt;/p&gt;
&lt;p&gt;When the Formula Editor closes, ensure the alert is enabled and select the OK button.&amp;nbsp; You are returned to the Create Alerts dialog close and&amp;nbsp;your all set!&lt;/p&gt;
&lt;p&gt;When I refreshed the report by selecting the F5 key.&amp;nbsp; I received the following dialog.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Capture.JPG"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Capture.JPG" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Click in the View Records button and the report will filter down to just the record that qualified for the alert. &lt;/p&gt;
&lt;p&gt;Thats it.&amp;nbsp; I think this would be very useful in many instance to call records out.&amp;nbsp; Maybe with History records of certain type or Opportunities that meet a certain probability or complete a step in a sales&amp;nbsp;process.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Pretty cool way of identifying critical information with very little change to an existing report.&lt;/p&gt;
&lt;p&gt;Thanks for reading &lt;/p&gt;
&lt;p&gt;George&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41486" 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" /></entry><entry><title>Shading the the Background Color of a Section in Crystal</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/02/10/shading-the-the-background-color-of-a-section-in-crystal.aspx" /><id>http://customerfx.com/pages/reporting/2010/02/10/shading-the-the-background-color-of-a-section-in-crystal.aspx</id><published>2010-02-10T16:42:00Z</published><updated>2010-02-10T16:42:00Z</updated><content type="html">&lt;p&gt;I have done this in one or two of the SalesLogix Crystal reports I worked on&amp;nbsp;in previous posts to&amp;nbsp;help separate out records.&amp;nbsp; I recently had a client ask me how to do this and when I looked back through the posts I discovered that the information is buried deep in one of the many blogs I have written.&amp;nbsp; So the easy way to shade every other row in a report is as follows.&lt;/p&gt;
&lt;p&gt;For this task I use the RecordNumber function that comes with Crystal.&amp;nbsp; This function basically returns the record number in the order it is displayed in your report.&amp;nbsp; I want to shade every other record so I will use a formula to identify odd number records.&amp;nbsp; This is the formula I came up with:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;if right(Cstr(RecordNumber),4) in [&amp;quot;1.00&amp;quot;,&amp;quot;3.00&amp;quot;,&amp;quot;5.00&amp;quot;,&amp;quot;7.00&amp;quot;,&amp;quot;9.00&amp;quot;] then crSilver&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;else crWhite&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;In this formula I convert the RecordNumber function from a&amp;nbsp;float to a string.&amp;nbsp; I then take the forth number from the right side of the value, and see if it is in an Array of&amp;nbsp;odd numbers formated as string for the comparison.&amp;nbsp; If the number does match then color Silver will be given to the back ground.&amp;nbsp; If not the color white.&lt;/p&gt;
&lt;p&gt;This formula is added through the Section Expert in the details section of my report.&amp;nbsp; Remember that you can easily open the Section Expert by right clicking in the section you want to apply the formula to and selecting the &amp;quot;Section Expert&amp;quot; value from the list that appears.&amp;nbsp; When the expert opens you will see two tabs on the right side of the screen (&amp;quot;Common&amp;quot; and &amp;quot;Color&amp;quot;).&amp;nbsp; The &amp;quot;Color&amp;quot; provides you a place to add the formula.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Quick and easy.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Remember to get all of our &lt;a href="http://customerfx.com/pages/cfxproducts/2009/04/13/free-saleslogix-reports.aspx"&gt;&lt;font color="#3c3c3c"&gt;Free SalesLogix Reports here...&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Thanks for reading my blog. Until next time -&amp;nbsp;Be well! Do good things! Most of all&amp;nbsp; - Keep Smiling&lt;img alt="Smile" src="http://customerfx.com/emoticons/emotion-1.gif" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41478" 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>Using Crystal Reports "Next" and "Previous" Functions</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/01/22/using-crystal-reports-quot-next-quot-and-quot-previous-quot-functions.aspx" /><id>http://customerfx.com/pages/reporting/2010/01/22/using-crystal-reports-quot-next-quot-and-quot-previous-quot-functions.aspx</id><published>2010-01-22T18:40:00Z</published><updated>2010-01-22T18:40:00Z</updated><content type="html">&lt;p&gt;Today &amp;nbsp;I am going to&amp;nbsp;write about &amp;nbsp;the &amp;quot;Next&amp;quot; and &amp;nbsp;&amp;quot;Previous&amp;quot; Functions&amp;nbsp;available with Crystal Reports.&amp;nbsp; As their names describe the intent of these functions&amp;nbsp;is to provide you a&amp;nbsp;value&amp;nbsp;of your selected field&amp;nbsp;for either&amp;nbsp; the Next or the Previous record as shown in your report.&lt;/p&gt;
&lt;p&gt;For example if I wanted to determine the number of days it has been since a History record has been written against an Account in SalesLogix,&amp;nbsp; I could use these two&amp;nbsp;functions along with the DateDiff function&amp;nbsp; to organize our data.&amp;nbsp; Let me give you an idea of how!&lt;/p&gt;
&lt;p&gt;First, create a SalesLogix report with the History table.&amp;nbsp; Make sure to create two groups, group 1 is for the Account Name - sorted ascending, group 2 is by History Complete Date -&amp;nbsp;sorted ascending by second.&amp;nbsp; The group level fields are used in the report.&amp;nbsp; Use your Section Expert to have group1 overlay group2.&amp;nbsp; Set the fields in the two groups so they would line up into columns if they were next to each other.&amp;nbsp; Also, &amp;nbsp;I&amp;nbsp; suggest suppressing all group footers and the detail section in your report. &lt;/p&gt;
&lt;p&gt;Now&amp;nbsp;create a&amp;nbsp;formula field called &amp;quot;Next&amp;quot; and add the following formula:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;IF {HISTORY.ACCOUNTNAME} = Next ({HISTORY.ACCOUNTNAME}) then CSTR(Next ({HISTORY.COMPLETEDDATE})) else &amp;quot;&amp;quot;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&lt;font color="#000000"&gt;This formula states if the current&amp;nbsp;records Account Name does not equal the next records Account name then do not show the next records Complete date.&amp;nbsp;&amp;nbsp; If&amp;nbsp;you do not&amp;nbsp;include the account comparison&amp;nbsp;in the formula then &amp;quot;Next&amp;quot; will display a value for the next record even if&amp;nbsp;it is not from the same account.&lt;/font&gt;&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Add this field&amp;nbsp;anywhere in&amp;nbsp;History Group 2.&amp;nbsp; If you put this field by the complete date you will see that the&amp;nbsp;field displays the date of the next records complete date.&amp;nbsp; The last record under the group&amp;nbsp;for the Account&amp;nbsp;will be blank.&amp;nbsp; What I want is this&amp;nbsp;last&amp;nbsp;History record&amp;nbsp;that was&amp;nbsp;added for this Account and none of the others so I will use this blank field to my advantage.&amp;nbsp;&amp;nbsp;My group 2 suppression formula looks something like this. &lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;a href="mailto:%7B@Next"&gt;{@Next&lt;/a&gt;}&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;lt;&amp;gt;&amp;quot;&amp;quot;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This should bring you down to just one record per account.&amp;nbsp; Since none of the data showing has a&amp;nbsp;&amp;quot;Next&amp;quot; value so remove that field from the report.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s go ahead and create another field called &amp;quot;Previous&amp;quot; using the following formula:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;IF {HISTORY.ACCOUNTNAME} = Previous ({HISTORY.ACCOUNTNAME}) then CSTR(CDATE(Previous ({HISTORY.COMPLETEDDATE}))) else &amp;quot;&amp;quot;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This field is very similar to the &amp;quot;Next&amp;quot;.&amp;nbsp; Add this field to the report and you will see that you now have the date of the previous History record.&amp;nbsp; If the value is blank then there is not a previous record in the system&lt;/p&gt;
&lt;p&gt;So you now know the Complete&amp;nbsp;date of&amp;nbsp; the last History&amp;nbsp;record along with the Complete Date of&amp;nbsp; record prior to the last History record, but how long has it been since the last History record?&amp;nbsp; Create one final formula field called &amp;quot;Days Since&amp;quot; using this formula:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;DateDiff (&amp;quot;d&amp;quot;,{HISTORY.COMPLETEDDATE},CurrentDate)&lt;/font&gt;&lt;/p&gt;&lt;font color="#000000"&gt;
&lt;p&gt;Add this to your group 2 and you will have all the information you need to see what Accounts are in need of some attention. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thanks&lt;/p&gt;
&lt;p&gt;Geo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&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=41439" 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" /><category term="SalesLogix Report Downloads" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Report+Downloads/default.aspx" /></entry><entry><title>Displaying when a Crystal Report Was Last Modified</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/01/15/displaying-when-a-crystal-report-was-last-modified.aspx" /><id>http://customerfx.com/pages/reporting/2010/01/15/displaying-when-a-crystal-report-was-last-modified.aspx</id><published>2010-01-15T21:33:00Z</published><updated>2010-01-15T21:33:00Z</updated><content type="html">&lt;p&gt;There are two functions that come with SAP Business Objects Crystal Reports that can help you display on your reports when the report format was last modified.&amp;nbsp; These functions are found under Functions&amp;gt;Document Properties and are labeled ModificationDate and ModificationTime.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;For use, I created a new formula called ModificationDateTime and added the following syntax:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;&amp;quot;This Report Format Last Modified on &amp;quot;+Cstr(ModificationDate)+&amp;quot; at &amp;quot;+Cstr(ModificationTime)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;I put my formula field in light gray letters in the page footer, light enough for someone to just barely see it.&amp;nbsp; &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;This way when you get complaints about&amp;nbsp;one users report does not look like another users version of the same report&amp;nbsp;you can peek at the ModificationDate/Time displayed on the bottom and tell them they have an outdated report.&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;If you play around with some of the functions in the Functions&amp;gt;Document Properties of the tree, you will find several functions that could come in handy.&amp;nbsp; I will show you some of those in the next few days.&lt;/p&gt;
&lt;p&gt;Have a great weekend!&lt;/p&gt;
&lt;p&gt;Geo&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41420" 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>Using Functions to Look into the Future</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2010/01/13/using-functions-to-look-into-the-future.aspx" /><id>http://customerfx.com/pages/reporting/2010/01/13/using-functions-to-look-into-the-future.aspx</id><published>2010-01-13T14:41:00Z</published><updated>2010-01-13T14:41:00Z</updated><content type="html">&lt;p&gt;If you find yourself in a position&amp;nbsp;where you need to report into the future, Crystal provides a couple of functions that allow you control what data is displaying.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;First lets look at the&amp;nbsp;AllDatesFromToday and AllDatesFromTomorrow functions.&amp;nbsp; These functions are found under the DateRanges group of functions in the Functions tree found in&amp;nbsp;Crystal Formula Editor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AllDatesFromToday&lt;/strong&gt;, specifies a range of Date values that includes any date from the present day&amp;nbsp;to any future Date value that may appear in a field. AllDatesFromToday includes the present day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AllDatesFromTomorrow&lt;/strong&gt;, specifies a range of Date values that fall after the present day. AllDatesFromTomorrow does not include the present day, but does include any future date.&lt;/p&gt;
&lt;p&gt;The use of these functions are&amp;nbsp;simple enough, the syntax looks something like this.&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;{ACTIVITY.STARTDATE} in AllDatesFromToday&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The functions will provide all records that qualify no matter how far out.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;For this instances where you want to limit how far out&amp;nbsp;you could use functions like one called &amp;quot;Next30Days&amp;quot;.&amp;nbsp;There are actually a couple additional functions along the same lines to include Next31To60Days, Next61To90Days, and Next91To365Days.&amp;nbsp; The syntax looks like this:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;{ACTIVITY.STARTDATE} in Next30Days&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Have fun reporting.&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=41409" 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>The DateRange Functions</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/12/29/the-daterange-functions.aspx" /><id>http://customerfx.com/pages/reporting/2009/12/29/the-daterange-functions.aspx</id><published>2009-12-29T20:06:00Z</published><updated>2009-12-29T20:06:00Z</updated><content type="html">&lt;p&gt;Business Objects Crystal Reports comes with some really nice standard functions that make working with your data very easy.&amp;nbsp; I have been working on series of blog posts that introduces some of these functions&amp;nbsp;to&amp;nbsp;help SalesLogix report writers with their efforts.&amp;nbsp; Today I will focus on the start writing about function under the category of &amp;quot;Date Ranges&amp;quot;&amp;nbsp; The first set we will look at are the aging, more specifically Aged0to30Days, Aged31to60Days, and Aged61to90Days.&lt;/p&gt;
&lt;p&gt;The function looks at the current date and depending on the function being&amp;nbsp;used will return records that fall within the date range.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;The syntax for the formula is very basic:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;{Table.DateField} in Aged0to30Day&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;So in SalesLogix, if I wanted to create a quick report that list all of Accounts created within the last 30 days I could write this Record Selection formula:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;{ACCOUNT.CREATEDATE} in Aged0To30Days&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;To expand the functionality for my users,&amp;nbsp;I could&amp;nbsp;add a parameter with some choices like &amp;quot;0 - 30 Days&amp;quot; which will allow my users to select which of the three functions they want to use, my&amp;nbsp;Record Selection Formula will then look like this.&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;if {?DateRange} = &amp;quot;0 - 30 Days&amp;quot; then {ACCOUNT.CREATEDATE} in Aged0To30Days&lt;br /&gt;else&lt;br /&gt;if {?DateRange} = &amp;quot;31 - 60 Days&amp;quot; then {ACCOUNT.CREATEDATE} in Aged31To60Days&lt;br /&gt;else&lt;br /&gt;if {?DateRange} = &amp;quot;61 - 90 Days&amp;quot; then {ACCOUNT.CREATEDATE} in Aged61To90Days&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;We could even go a little bit farther and add to our parameter some values&amp;nbsp;like &amp;quot;Last 60 Days&amp;quot; and &amp;quot;Last 90 Days&amp;quot;.&amp;nbsp; Then&amp;nbsp;again edit our&amp;nbsp;Record Selection formula and add: &lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;else&lt;br /&gt;if {?DateRange} = &amp;quot;Last 60 Days&amp;quot; then {ACCOUNT.CREATEDATE} in Aged0To30Days or {ACCOUNT.CREATEDATE} in Aged31To60Days&lt;br /&gt;else&lt;br /&gt;if {?DateRange} = &amp;quot;Last 90 Days&amp;quot; then {ACCOUNT.CREATEDATE} in Aged0To30Days or {ACCOUNT.CREATEDATE} in Aged31To60Days or {ACCOUNT.CREATEDATE} in Aged61To90Days&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Nothing real fancy here.&amp;nbsp; I am sure there are other ways to get this same thing accomplished but&amp;nbsp;I hope this gives some of the new users out there an idea of how to use these functions.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Happy New Year! &lt;/p&gt;
&lt;p&gt;Please have a plan and Stay Safe&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41364" 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>Using Microsoft Excel as a delivery method for reporting</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/12/22/using-excel-in-your-reporting.aspx" /><id>http://customerfx.com/pages/reporting/2009/12/22/using-excel-in-your-reporting.aspx</id><published>2009-12-22T14:00:00Z</published><updated>2009-12-22T14:00:00Z</updated><content type="html">&lt;p&gt;There are many ways to get your data into a Microsoft Excel spread sheet for reporting purposes. Business Objects Crystal and Sage SalesLogix both offer an option to kick out report data to an Excel spread sheet.&amp;nbsp; Last week I worked with a client who wanted exactly that, a set of data exported to Excel so the users could manipulate it as they needed.&amp;nbsp; She came to me under the assumption that this could only be done through Crystal.&amp;nbsp;&amp;nbsp;Now the&amp;nbsp;benefit for going through Crystal is the parameters&amp;nbsp;established in the report are honored.&amp;nbsp;&amp;nbsp; But it is possible to export your data from the SalesLogix database directly into Excel and with a little help from SQL Views you are able to filter and organize your data for the export.&amp;nbsp; The best part is the data is able to be refreshed as often as required in excel and the users do not need to be in SalesLogix to run the report.&lt;/p&gt;
&lt;p&gt;The first step in this process&amp;nbsp;was to think about all of the data you would like to see in the final export.&amp;nbsp; In this instance my client had several version of the sheet she wanted to produce so&amp;nbsp;the first set of views brought all of the data together that could be used in any of the&amp;nbsp;Excel files, we did this without using&amp;nbsp;any filters.&amp;nbsp; This&amp;nbsp; allowed her to then customize additional SQL views&amp;nbsp;to support each&amp;nbsp;version of the&amp;nbsp;file she wanted.&amp;nbsp;&amp;nbsp;&amp;nbsp;Creating&amp;nbsp;the views&amp;nbsp;was really the toughest part, we ended up&amp;nbsp;rewriting our views a couple of times to support additional fields requested after user testing&amp;nbsp;of a sample file.&amp;nbsp; So I encourage you to really plan things out with your end users before sitting down to write the SQL views, hopefully&amp;nbsp;planning up front&amp;nbsp;will result in less overall work effort. &lt;/p&gt;
&lt;p&gt;For our example today we will use a view I created for&amp;nbsp;the Crystal Report writing class.&amp;nbsp; This view is a Contact based and provides the number of History, Activity, Opportunities, and Tickets related to each Contact in your system.&amp;nbsp; This view is nothing Fancy but will help prove our point.&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000cc"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;Create&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;View&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;VContactCounts&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="#0000cc"&gt;as&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000cc"&gt;SELECT&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&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; FirstName&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 size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000cc"&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;SELECT&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;COUNT&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;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;AS&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000cc"&gt; Expr1 &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&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&gt;&lt;font size="2"&gt;&lt;font color="#0000cc"&gt;HISTORY &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;WHERE&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;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; 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;AS&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; HistoryCount&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 size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000cc"&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;SELECT&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;COUNT&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;ACTIVITYID&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="#0000cc"&gt; Expr1 &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&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&gt;&lt;font size="2"&gt;&lt;font color="#0000cc"&gt;ACTIVITY &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;WHERE&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;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; 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;AS&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; ActivityCount&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 size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000cc"&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;SELECT&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;COUNT&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;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;AS&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000cc"&gt; Expr1 &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&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&gt;&lt;font size="2"&gt;&lt;font color="#0000cc"&gt;OPPORTUNITY_CONTACT &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;WHERE&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;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; 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;AS&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; OpportunityCount&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 size="2"&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000cc"&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;SELECT&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;COUNT&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;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;AS&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font color="#0000cc"&gt; Expr1 &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&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&gt;&lt;font size="2"&gt;&lt;font color="#0000cc"&gt;TICKET &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;WHERE&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;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; 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;AS&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; TicketCount&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="#0000cc"&gt;FROM&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&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;AS&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; c&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="#0000cc"&gt;GROUP&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000cc"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2"&gt;BY&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;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; FirstName&lt;/p&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p&gt;Once your view is giving you the data the way you want to see it the easy stuff begins.&amp;nbsp; I am&amp;nbsp;working with MS Office 2003 so please forgive me MS Office 2007 people.&amp;nbsp; The client I worked with had Office 2007 so this will work there also,&amp;nbsp; If I get access to a 2007 machine I will post the steps for you. &lt;/p&gt;
&lt;p&gt;The&amp;nbsp;items required to be successful at this are&amp;nbsp;the name of your SQL server, the sysdba password for SQL Server.&amp;nbsp; The name of your&amp;nbsp;SalesLogix database and of course the name of your SQL view.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Open a new MS Office Excel file.&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;Select the&amp;nbsp;&amp;nbsp;Data&amp;gt;Import External Data&amp;gt;Import Data menu item&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Test016.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Test016.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The following screen will appear:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Test017.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Test017.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here we are going to select New SQL Server Connection which brings up the following screen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Test017.jpg"&gt;&lt;a href="http://customerfx.com/blogs/reporting/Test019.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Test019.jpg" alt="" /&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is where you list out the SQL Server Name and sysdba password.&amp;nbsp;&amp;nbsp;On selection of the &amp;quot;Next&amp;quot; button&amp;nbsp;the following screen appears:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Test020.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Test020.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here we select the database name and then search for the SQL View.&amp;nbsp; This is a little tricky, the views are listed here first then tables.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Test021.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Test021.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You see here the check box for Save Password.&amp;nbsp; If you do not want the users to have access to this sysdba password then I suggest setting this to true.&amp;nbsp; They will have access only to the data released via this connection. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Test022.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Test022.jpg" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On this screen you see the cell where the export will start building the export.&amp;nbsp; You can click on the appropriate cell in the back ground to reset. Then click Finish and the export should run immediately.&amp;nbsp; IF there are more then one views providing you the data this process can take a few seconds. Moving forward, all the users has to do is hit the &lt;a href="http://customerfx.com/blogs/reporting/Test023.jpg"&gt;&lt;img border="0" src="http://customerfx.com/blogs/reporting/Test023.jpg" alt="" /&gt;&lt;/a&gt;&amp;nbsp;button, or Data Refresh Menu Item to update the file&lt;/p&gt;
&lt;p&gt;Now the data is in excel you can do anything you want with it to include&amp;nbsp;sorting or building formulas or graphs.&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;FYI, I played around with other methods of creating the connection to the database but this was the most straight forward. If I discover a better method I will update this post.&lt;/p&gt;
&lt;p&gt;Hope this helps someone.&amp;nbsp; Thanks for reading. Geo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41339" 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="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>Using Multiple Value Parameters to Select Records for your Crystal Reports</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/12/08/using-multi-value-parameters-to-select-records-for-your-crystal-reports.aspx" /><id>http://customerfx.com/pages/reporting/2009/12/08/using-multi-value-parameters-to-select-records-for-your-crystal-reports.aspx</id><published>2009-12-08T14:51:00Z</published><updated>2009-12-08T14:51:00Z</updated><content type="html">&lt;p&gt;I have often been asked to provide the ability to&amp;nbsp;allow users a multi select parameter, such as User Name, and then have that parameter limit the data in their Crystal&amp;nbsp;report.&amp;nbsp;&amp;nbsp;I have to admit this one&amp;nbsp;has always been one of the items I&amp;nbsp;always&amp;nbsp;have struggled through, coming up with one alternative or another to meet the client needs.&amp;nbsp; Recently I was asked this same question by a support client of ours.&amp;nbsp; Together, we can up with a pretty lengthy Record Selection formula to achieve the desired results.&amp;nbsp; Not happy with how hard it was to achieve this I decided to dig into this issue again this morning and my results were surprisingly a lot easier then I ever imagined. &lt;/p&gt;
&lt;p&gt;To prove my point follow along by creating a&amp;nbsp;new Crystal report connected to your SalesLogix database,&amp;nbsp; The only table you need to add to this report&amp;nbsp;is UserInfo&amp;nbsp;and we only need one field, UserName.&lt;/p&gt;
&lt;p&gt;There are three pieces to this puzzle.&amp;nbsp; The first is the parameter.&lt;/p&gt;
&lt;p&gt;The parameter I created was labeled UserName, I&amp;nbsp;changed&amp;nbsp;the &amp;quot;List of Values&amp;quot; field to&amp;nbsp;&lt;strong&gt;Dynamic&lt;/strong&gt;, &amp;quot;Prompt with group text&amp;quot; I typed in &lt;strong&gt;UserNameList&lt;/strong&gt; and then selected the UserName from the field drop down under the word Value.&amp;nbsp;Other settings are &amp;quot;Prompt Text&amp;quot; = &lt;strong&gt;Select the Users you want to display in this Report&lt;/strong&gt;, &amp;quot;Prompt with Description Only&amp;quot; is set to &lt;strong&gt;True,&lt;/strong&gt; and the most important is &amp;quot;Allow multiple values&amp;quot; is set to &lt;strong&gt;True.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Next let&amp;#39;s Create a formula field to see our results,&amp;nbsp; Name the field anything you would like and add the following&amp;nbsp;as the formula.&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Join({?UserName},&amp;quot;,&amp;quot;)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;Now drag your formula field onto your report.&amp;nbsp; You should now be prompted by the report to select some users to display on your report. Select two or three to prove the point. When you close the parameter you will find you formula field is now populated with the names of the individuals you selected.&amp;nbsp; Each value is separated by a comma.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;The final piece is the record selection criteria.&amp;nbsp; Remember the record selection criteria is set using the Report&amp;gt;Selections Formulas&amp;gt;Record menu item.&amp;nbsp; When the formula editor opens, add the following formula:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;{USERINFO.USERNAME} in &lt;a href="mailto:%7B@Test"&gt;{@Test&lt;/a&gt;}&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;For your version of the formula, &amp;quot;{@Test} should be replaced with the your formula field.&amp;nbsp; When you close the editor you immediately see your list of users drop to the two or thee you had selected. &lt;/p&gt;
&lt;p&gt;Embarrassingly&amp;nbsp;easy stuff.&amp;nbsp; I hope this helps someone down the road.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Thanks Geo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41205" 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" /><category term="SalesLogix Report Downloads" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Report+Downloads/default.aspx" /></entry><entry><title>Creating Lists in Merge froms</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/11/24/one-to-many-in-merge-froms.aspx" /><id>http://customerfx.com/pages/reporting/2009/11/24/one-to-many-in-merge-froms.aspx</id><published>2009-11-24T19:58:00Z</published><updated>2009-11-24T19:58:00Z</updated><content type="html">&lt;p&gt;We just had a client ask or support team how to display one to many data (or a&amp;nbsp;list) in merge forms.&amp;nbsp; This is very achievable, the process is pretty straight forward and&amp;nbsp;can really&amp;nbsp;expand the use of your merge forms.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;As is the Customer FX way we want to share with the SLX user community so&amp;nbsp;I though I could take a break from Crystal Functions and write up the how to for you. The scenario I will use today is you want to create a Contact Merge form that list all of the Opportunities&amp;nbsp;a contact has been involved in.&amp;nbsp; I am&amp;nbsp; assuming that you already have the Contact side of things developed in your merge form and are ready to add the list of opportunities.&lt;/p&gt;
&lt;p&gt;Open your merge form for editing by using the SalesLogix Write/Template menu item.&lt;/p&gt;
&lt;p&gt;Find the merge form in the list and select the Edit button at the top of the Manage Templates dialog.&amp;nbsp; Note, if the merge form is&amp;nbsp;in the&amp;nbsp;public folder the system will make save a copy for editing.&amp;nbsp; Find that merge form down in the Private Templates section of the tree control.&lt;/p&gt;
&lt;p&gt;With the Merge Form open find the location in the document where you want to add the table for your Opportunity information and&amp;nbsp;place your cursor.&lt;/p&gt;
&lt;p&gt;Select the &amp;quot;Insert Special Field&amp;quot; button, highlight the SQL menu item and then select table from the list that appears.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Test007.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/Test007.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You should see a &amp;quot;New SalesLogix SQL Field&amp;quot; added to your&amp;nbsp;merge form&amp;nbsp;and the SalesLogix Mail Merge Editor should appear.&amp;nbsp; If it does not you can select the Edit field located at the top of the Letter Editor.&lt;/p&gt;
&lt;p&gt;In the list you will find an icon that looks like a little table, the type will equal SQL.&amp;nbsp; Highlight the value in the list on the left and the properties will appear in the dialog on the right. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Test008.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/Test008.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;Field Identifier&lt;/strong&gt;&amp;nbsp;- &amp;nbsp;allows you to name this control on your form. &lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;SQL&lt;/strong&gt; field is where you add your SQL Statement that will collect the one to many opportunity data for your Contact.&amp;nbsp; You select the button on the right side of the SQL field to open&amp;nbsp;a dialog that allows you to enter your SQL Statement. You can use&amp;nbsp;SQL to help develop your statement.&amp;nbsp;&amp;nbsp;If you use SQL,&amp;nbsp;log in as sysdba, then you should be able to copy your statement directly into this dialog.&amp;nbsp;&amp;nbsp;My SQL Statement looks like this:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;SELECT OPPORTUNITY.DESCRIPTION&lt;br /&gt;, OPPORTUNITY.ACTUALAMOUNT&lt;br /&gt;, OPPORTUNITY.ACTUALCLOSE&lt;br /&gt;FROM&amp;nbsp; &lt;br /&gt;CONTACT left join OPPORTUNITY_CONTACT on CONTACT.CONTACTID = OPPORTUNITY_CONTACT.CONTACTID&lt;br /&gt;inner join&amp;nbsp; OPPORTUNITY on OPPORTUNITY_CONTACT.OPPORTUNITYID = OPPORTUNITY.OPPORTUNITYID&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Where CONTACT.CONTACTID = &lt;strong&gt;:&lt;/strong&gt;ContactID&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;Order By OPPORTUNITY.DESCRIPTION&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Notice the where statement contains&amp;nbsp;the&amp;nbsp;&amp;nbsp;&lt;strong&gt;= :ContactId.&amp;nbsp; &lt;/strong&gt;This sets your SQL up to run in the merge form.&amp;nbsp; The ContactID is passed through to the form when you run the merge process.&lt;/p&gt;
&lt;p&gt;When Your SQL statement is entered select the OK button.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Options:&lt;/strong&gt; This sets up the look of your list.&amp;nbsp; From top to bottom I usually keep the 1st item checked, I unchecked the 2nd and 3rd, &amp;nbsp;the 4th and 5th&amp;nbsp;stay checked, the rest are all unchecked.&amp;nbsp; Play around to format the table the way you like.&lt;/p&gt;
&lt;p&gt;Now for each column in your SQL Statement you need to format the column in the merged table.&amp;nbsp; This is done by selecting the &lt;strong&gt;Edit table Columns&lt;/strong&gt; button.&lt;/p&gt;
&lt;p&gt;If you look at my select statement I&amp;nbsp;used &lt;strong&gt;Description &lt;/strong&gt;(which is a Tex field), &lt;strong&gt;ActualAmount&lt;/strong&gt; (a Currency field), and &lt;strong&gt;ActualClose &lt;/strong&gt;(a DateTime).&amp;nbsp; So when the Edit Columns dialog opens I added the formatting for each in the same order as they are displaying through my SQL Statement. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/Test009.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/Test009.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For Description - I added word “Description” in as the Caption, I set the alignment to the left, and I had none for a type.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;For the ActualAmount - I added Actual Amount for the caption, right for the alignment, and currency for the type. &lt;/p&gt;
&lt;p&gt;For the ActualClose - I added Close date for the caption, Center for Alignment, and DateTime for Type. &lt;/p&gt;
&lt;p&gt;Now exit out of the Mail Merge Editor using the OK buttons and test your merge form. &lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41165" 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>Working with the DatePart Function in Crystal</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/11/19/working-with-the-datepart-function-in-crystal.aspx" /><id>http://customerfx.com/pages/reporting/2009/11/19/working-with-the-datepart-function-in-crystal.aspx</id><published>2009-11-19T14:57:00Z</published><updated>2009-11-19T14:57:00Z</updated><content type="html">&lt;p&gt;This function is very popular one that&amp;nbsp;allows you to organize your data based on Dates. &lt;/p&gt;
&lt;p&gt;The basic syntax for the function looks like this:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;DATEPART( Interval Type, InputDateTime)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;A more realistic example:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;DatePart (&amp;quot;m&amp;quot;,{ACTIVITY.STARTDATE})&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This will return the month of each Activity is scheduled in.&amp;nbsp; Please&amp;nbsp;note the interval type is surrounded by double quotes. &lt;/p&gt;
&lt;p&gt;Here is a list of the Interval Types from Crystal Report On line Help (Highlight the function and select the &lt;strong&gt;&lt;font color="#660066" size="3"&gt;?&lt;/font&gt;&lt;/strong&gt; from the Formula Workshop Tool bar)&lt;/p&gt;
&lt;table class="content" cellspacing="0" class="content"&gt;

&lt;tr&gt;
&lt;th class="content" class="content"&gt;&lt;a class="" name="1000697401"&gt;&lt;/a&gt;&lt;b class="cellheading"&gt;Interval type value&lt;/b&gt;&lt;/th&gt;
&lt;th class="content" class="content"&gt;&lt;a class="" name="1000697403"&gt;&lt;/a&gt;&lt;b class="cellheading"&gt;Description&lt;/b&gt;&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697405"&gt;&lt;/a&gt;yyyy&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697781"&gt;&lt;/a&gt;Extracts the year&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697409"&gt;&lt;/a&gt;q&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697411"&gt;&lt;/a&gt;Quarter (the result is 1, 2, 3 or 4)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697413"&gt;&lt;/a&gt;m&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697800"&gt;&lt;/a&gt;Month (the result is from 1 to 12)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697417"&gt;&lt;/a&gt;y&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697804"&gt;&lt;/a&gt;Day of year (1 to 365 or 366 in a leap year)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697421"&gt;&lt;/a&gt;d&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697808"&gt;&lt;/a&gt;Day part of the date (1 to 31)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697425"&gt;&lt;/a&gt;w&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697427"&gt;&lt;/a&gt;Day of week (1 to 7 with the result depending on firstDayOfWeek)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697429"&gt;&lt;/a&gt;ww&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697735"&gt;&lt;/a&gt;Week of year (1 to 53 with firstDayOfWeek and firstWeekOfYear determining the exact days of the first calendar week of the year)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697433"&gt;&lt;/a&gt;h&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697717"&gt;&lt;/a&gt;Extracts the hour part of the given DateTime (0 to 23)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697437"&gt;&lt;/a&gt;n&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697711"&gt;&lt;/a&gt;Minute part (0 to 59)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697441"&gt;&lt;/a&gt;s&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" name="1000697689"&gt;&lt;/a&gt;Second part (0 to 59)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;So if I wanted to create a record for all of the Activities scheduled for this week and the next week, I could write the following as a select Criteria. &lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff"&gt;DatePart(&amp;quot;yyyy&amp;quot;,{ACTIVITY.STARTDATE}) = datepart(&amp;quot;yyyy&amp;quot;,CurrentDate)&lt;br /&gt;and &lt;br /&gt;(DatePart(&amp;quot;ww&amp;quot;,{ACTIVITY.STARTDATE}) = datepart(&amp;quot;ww&amp;quot;,CurrentDate)&lt;br /&gt;or&lt;br /&gt;DatePart(&amp;quot;ww&amp;quot;,{ACTIVITY.STARTDATE}) = datepart(&amp;quot;ww&amp;quot;,CurrentDate)+1)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Cool stuff, More next week.&amp;nbsp; Thanks for reading.&lt;/p&gt;
&lt;p&gt;See a list of&amp;nbsp;SalesLogix Reports updated by Customer FX, follow this &lt;a class="" href="http://customerfx.com/pages/cfxproducts/2009/04/13/free-saleslogix-reports.aspx"&gt;&lt;font color="#3c3c3c"&gt;link&lt;/font&gt;&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41130" 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" /><category term="SalesLogix Report Downloads" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Report+Downloads/default.aspx" /></entry><entry><title>Working with Crystals DateDiff Function</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/11/06/working-with-crystals-datediff-functions.aspx" /><id>http://customerfx.com/pages/reporting/2009/11/06/working-with-crystals-datediff-functions.aspx</id><published>2009-11-06T13:25:00Z</published><updated>2009-11-06T13:25:00Z</updated><content type="html">&lt;p&gt;I have been spending some time writing about the Functions that come with Business Objects Crystal Report.&amp;nbsp; Today I thought I would start some posts on the Date and Time Functions.&amp;nbsp;These functions are mostly used for helping the user dissect any DateTime fields in your database.&amp;nbsp; The first one I will work with is the DateDiff.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The DateDiff is used to provide us a value that represents the difference in time between to dates.&amp;nbsp; Crystal has help available for this function by navigating&amp;nbsp;to the Function Tree, find the Date and Time group, and DateDiff group, then&amp;nbsp;highlight one of the options for DateDiff&amp;nbsp;and&amp;nbsp;highlight and select the ? in the Formula&amp;nbsp;Workshop Toolbar.&lt;/p&gt;
&lt;p&gt;An example&amp;nbsp;of this function being used would be if&amp;nbsp;wanted to know how many months an Account has been with your company, for this&amp;nbsp;you might use:&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000cc"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DateDiff (&amp;quot;m&amp;quot;,{ACCOUNT.CREATEDATE},CurrentDateTime)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;font color="#000000"&gt;Obviously the &amp;quot;m&amp;quot; is the argument for month.&amp;nbsp;&amp;nbsp;Notice the formula required double parenthesis around the argument.&amp;nbsp; &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#000000"&gt;&lt;font color="#000000"&gt;Below&amp;nbsp;is a list of other arguments that can&amp;nbsp;be used with this functions: &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;table class="content" cellspacing="0" class="content"&gt;

&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697309" name="1000697309"&gt;&lt;/a&gt;yyyy &lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697311" name="1000697311"&gt;&lt;/a&gt;Year&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697313" name="1000697313"&gt;&lt;/a&gt;q&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697315" name="1000697315"&gt;&lt;/a&gt;Quarter &lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697317" name="1000697317"&gt;&lt;/a&gt;m&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697319" name="1000697319"&gt;&lt;/a&gt;Month&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697321" name="1000697321"&gt;&lt;/a&gt;y&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697323" name="1000697323"&gt;&lt;/a&gt;Day of year&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697325" name="1000697325"&gt;&lt;/a&gt;d&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697327" name="1000697327"&gt;&lt;/a&gt;Day (both &amp;quot;y&amp;quot; and &amp;quot;d&amp;quot; find the difference in days)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697329" name="1000697329"&gt;&lt;/a&gt;w&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697331" name="1000697331"&gt;&lt;/a&gt;Number of weeks between startDateTime and endDateTime&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697333" name="1000697333"&gt;&lt;/a&gt;ww&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697335" name="1000697335"&gt;&lt;/a&gt;Number of firstDayOfWeek&amp;#39;s between startDateTime and endDateTime&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697337" name="1000697337"&gt;&lt;/a&gt;h&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697339" name="1000697339"&gt;&lt;/a&gt;Hour&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697341" name="1000697341"&gt;&lt;/a&gt;n&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697343" name="1000697343"&gt;&lt;/a&gt;Minute&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697345" name="1000697345"&gt;&lt;/a&gt;s&lt;/p&gt;&lt;/td&gt;
&lt;td class="content" align="left" class="content"&gt;
&lt;p&gt;&lt;a class="" title="1000697347" name="1000697347"&gt;&lt;/a&gt;Second&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;You can see this functions used in many of the standard SalesLogix Reports,&amp;nbsp;most commonly in History and Tickets.&amp;nbsp; If you want to see a list of updated SalesLogix Reports provided by Customer FX follow this &lt;a class="" href="http://customerfx.com/pages/cfxproducts/2009/04/13/free-saleslogix-reports.aspx"&gt;link&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In Minnesota, it is time to go out do the deed of helping our over populated deer herd survive the cold hard winter by removing the weak and feeble minded.&amp;nbsp; It is rough duty but I am up to the task.&amp;nbsp; The best thing about this weekend is I have the privilege of hunting with both of my daughters and my lovely wife.&amp;nbsp; Until next week be safe and have fun.&lt;/p&gt;
&lt;p&gt;geo&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41088" 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" /><category term="SalesLogix Report Downloads" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Report+Downloads/default.aspx" /></entry><entry><title>Conversion Functions in Crystal</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/11/04/conversion-functions-in-crystal.aspx" /><id>http://customerfx.com/pages/reporting/2009/11/04/conversion-functions-in-crystal.aspx</id><published>2009-11-04T14:33:00Z</published><updated>2009-11-04T14:33:00Z</updated><content type="html">&lt;p&gt;In all forms of development there are times when you need to convert data types for use in formulas.&amp;nbsp; In Business&amp;nbsp;Objects Crystal Reports, I often use data with labels control to display totals in my report footers.&amp;nbsp; To do this in my SalesLogix&amp;nbsp;Reports,&amp;nbsp;I often have to convert the total from a double to a string. For our benefit Crystal Reports offers many conversions functions.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I found most of the information for this post in the&amp;nbsp;Crystal help.&amp;nbsp; To view Help&amp;nbsp;on these functions all you have to do is highlight the function of interest&amp;nbsp;in the function tree control and select the ? button in the Formula Workshop tool bar.&lt;/p&gt;
&lt;p&gt;The Boolean - Labeled CBool - is only used with numbers or currency,&amp;nbsp; This action returns a true if the referenced field is anything but 0, if it is 0 then it returns a false.&amp;nbsp; The syntax looks something like this:&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;font color="#0000cc"&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; CBool ({OPPORTUNITY.SALESPOTENTIAL}) &lt;/font&gt;&lt;font color="#000000"&gt;would return True or False&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Currency -&amp;nbsp; Labeled CCur - converts number, currency or string values to a currency.&amp;nbsp; This action returns a currency value.&amp;nbsp; So instead of formatting a field to display a currency you could just use this function through a formula field.&amp;nbsp; The syntax looks something like this:&amp;nbsp;&lt;/p&gt;
&lt;p&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; &lt;font color="#0000cc"&gt;CCur({OPPORTUNITY.SALESPOTENTIAL}) &lt;/font&gt;&lt;font color="#000000"&gt;returns $327,323.00&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Date and Time - Labeled CDateTime, CDate, or CTime - all three will convert DateTime, number or string values to and return a Date and/or Time.&amp;nbsp; Here&amp;nbsp;is some example syntax:&lt;/p&gt;
&lt;p&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; &lt;font color="#0000cc"&gt;CDate({OPPORTUNITY.CREATEDATE})&lt;/font&gt; returns 2/26/2009&lt;/p&gt;
&lt;p&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;&lt;font color="#0000cc"&gt;&amp;nbsp; CTime({OPPORTUNITY.CREATEDATE})&lt;/font&gt; returns 11:47:21 PM&lt;/p&gt;
&lt;p&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; &lt;font color="#0000cc"&gt;CDateTime (2009,10 ,18, 13, 55, 21)&lt;/font&gt; returns 10/18/2009&amp;nbsp;&amp;nbsp; 1:55:21PM&lt;/p&gt;
&lt;p&gt;String - Labeled CStr, Basically converts any other data type to a string value.&amp;nbsp;Basic syntax looks something like this. &lt;/p&gt;
&lt;p&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; &lt;font color="#0000cc"&gt;&amp;quot;The Total Sales Potential for this Opportunity is $&amp;quot; + CStr ({OPPORTUNITY.SALESPOTENTIAL}) &lt;/font&gt;&lt;/p&gt;
&lt;p&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Would return &lt;/font&gt;&lt;/p&gt;
&lt;p&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color="#0000cc"&gt;&lt;font color="#000000"&gt;The&lt;/font&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#000000"&gt;Total Sales Potential for this Opportunity is $327,323.00&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;I hope this blog is of help to someone.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can benefit from this blog by downloading our many re-worked SalesLogix Crystal Reports, see a list by following this &lt;a class="" href="http://customerfx.com/pages/cfxproducts/2009/04/13/free-saleslogix-reports.aspx"&gt;link&lt;/a&gt; and 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=41074" 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" /><category term="SalesLogix Report Downloads" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Report+Downloads/default.aspx" /></entry><entry><title>Crystals Length Function</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/10/30/crystals-length-function.aspx" /><id>http://customerfx.com/pages/reporting/2009/10/30/crystals-length-function.aspx</id><published>2009-10-30T12:32:00Z</published><updated>2009-10-30T12:32:00Z</updated><content type="html">&lt;p&gt;I have seen the Length function that comes with Business Objects Crystal Reports used a lot in the standard Sage SalesLogix reports.&amp;nbsp; Mostly you see this function used in the formula fields&amp;nbsp;created for displaying phone numbers in true false statements.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The first rule for this function is it&amp;nbsp;works&amp;nbsp;only with string fields so be prepared to convert if neccessary.&amp;nbsp; The syntax for this function&amp;nbsp;is simple:&lt;/p&gt;
&lt;p&gt;If Length {field} = number &amp;nbsp;then formula.&lt;/p&gt;
&lt;p&gt;Here is an example of how the function is used from one of the many&amp;nbsp;&lt;a class="" href="http://customerfx.com/pages/cfxproducts/2009/04/13/free-saleslogix-reports.aspx"&gt;Customer FX Improved SalesLogix Reports&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If&amp;nbsp; &lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;Length ({ACCOUNT.MAINPHONE}) = 10&lt;/font&gt; and &lt;a href="mailto:%7B@Telephone_Country"&gt;{@Telephone_Country&lt;/a&gt;} = &amp;quot;Standard&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;(&amp;quot; + {ACCOUNT.MAINPHONE}[1 to 3] + &amp;quot;) &amp;quot; + {ACCOUNT.MAINPHONE}[4 to 6] + &amp;quot;-&amp;quot; + {ACCOUNT.MAINPHONE}[7 to 10]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;If&amp;nbsp; Length ({ACCOUNT.MAINPHONE}) &amp;gt; 14&lt;/font&gt; or Length ({ACCOUNT.MAINPHONE}) &amp;lt; 10&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {ACCOUNT.MAINPHONE}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="BACKGROUND-COLOR:#ffff00;"&gt;if Length ({ACCOUNT.MAINPHONE}) = 14&lt;/font&gt; and &amp;quot;(&amp;quot; in {ACCOUNT.MAINPHONE}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;(&amp;quot; + {ACCOUNT.MAINPHONE}[2 to 4] + &amp;quot;) &amp;quot; + {ACCOUNT.MAINPHONE}[7 to 9] + &amp;quot;-&amp;quot; + {ACCOUNT.MAINPHONE}[11 to 14]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font style="BACKGROUND-COLOR:#ffff00;"&gt; if Length ({ACCOUNT.MAINPHONE}) = 14&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;(&amp;quot; + {ACCOUNT.MAINPHONE}[1 to 3] + &amp;quot;) &amp;quot; + {ACCOUNT.MAINPHONE}[4 to 6] + &amp;quot;-&amp;quot; + {ACCOUNT.MAINPHONE}[7 to 10] + &amp;quot; &amp;quot; + {ACCOUNT.MAINPHONE}[11 to 14]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {ACCOUNT.MAINPHONE}&lt;/p&gt;
&lt;p&gt;FYI, this formula fields requires the use of another formula field called Telephone_Country which simply is looking at the Address.Country field to help determine the formatting for the phone number. &lt;/p&gt;
&lt;p&gt;I hope everyone has great weekend.&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=41066" 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" /><category term="SalesLogix Report Downloads" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Report+Downloads/default.aspx" /><category term="Customer FX" scheme="http://customerfx.com/pages/reporting/archive/tags/Customer+FX/default.aspx" /></entry><entry><title>Working with the Like Function</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/10/27/working-with-the-like-function.aspx" /><id>http://customerfx.com/pages/reporting/2009/10/27/working-with-the-like-function.aspx</id><published>2009-10-27T19:32:00Z</published><updated>2009-10-27T19:32:00Z</updated><content type="html">&lt;p&gt;The next topic in our write- up of the Functions that come with Business Objects Crystal Report is the Like function.&amp;nbsp; I use the &amp;quot;Like&amp;quot; function a lot in my record selection criteria.&amp;nbsp; Double parenthesis and&amp;nbsp;the star character&amp;nbsp;is the key to this function.&lt;/p&gt;
&lt;p&gt;The basic syntax looks like this:&lt;/p&gt;
&lt;p&gt;{Field} like (&amp;quot;*a*&amp;quot;)&lt;/p&gt;
&lt;p&gt;This will return any value in the field that contains an &amp;quot;a&amp;quot;.&lt;/p&gt;
&lt;p&gt;{Field} like (&amp;quot;a*&amp;quot;)&lt;/p&gt;
&lt;p&gt;This will return any value in the field that&amp;nbsp;starts with&amp;nbsp;an &amp;quot;a&amp;quot;.&lt;/p&gt;
&lt;p&gt;{Field} like (&amp;quot;*a&amp;quot;)&lt;/p&gt;
&lt;p&gt;This will return any value in the field that&amp;nbsp;ends with&amp;nbsp;an &amp;quot;a&amp;quot;.&lt;/p&gt;
&lt;p&gt;If there is character set that the middle character you can use a ? in the syntax.&lt;/p&gt;
&lt;p&gt;{Field} like (&amp;quot;*s?n&amp;quot;)&lt;/p&gt;
&lt;p&gt;This will provide us all names that the third to the last&amp;nbsp;characters contain the &amp;quot;s&amp;quot;, the second to the last character contains anything, and the last character is an &amp;quot;n&amp;quot;. &lt;/p&gt;
&lt;p&gt;Simple but useful little function. &lt;/p&gt;
&lt;p&gt;Remember our list of &lt;a class="" href="http://customerfx.com/pages/cfxproducts/2009/04/13/free-saleslogix-reports.aspx"&gt;&lt;font color="#3c3c3c"&gt;free SalesLogix Reports&lt;/font&gt;&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41048" 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>Working with Left and Right String Functions</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/10/20/working-with-left-and-right-string-functions.aspx" /><id>http://customerfx.com/pages/reporting/2009/10/20/working-with-left-and-right-string-functions.aspx</id><published>2009-10-20T13:28:00Z</published><updated>2009-10-20T13:28:00Z</updated><content type="html">&lt;p&gt;Continuing on working with the functions in Business Objects Crystal Reports I thought we could look at the Left and Right functions.&amp;nbsp;&amp;nbsp;I know to some of the readers this may be some simple stuff but remember I try to write to new users of Crystal and SalesLogix reporting.&lt;/p&gt;
&lt;p&gt;When I think of working with these function the first thing that comes to my mind is the military.&amp;nbsp; While serving in the National Guard&amp;nbsp;I have had the opportunity to use these functions in script in creating reports.&amp;nbsp; By regulation a Soldiers&amp;nbsp;social security number&amp;nbsp;is used as a&amp;nbsp;unique identifier.&amp;nbsp;&amp;nbsp;The military is trying to be smart and not throw this important id number on the many lists they deal with everyday so they often use what is called a laundry mark.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;A laundry mark is&amp;nbsp;a combination of the soldiers first initial of the last name and the last four of the SSN.&amp;nbsp; To programmable call the laundry mark out of data we can use the Left and Right String functions.&amp;nbsp; For our example we will use the Sage SalesLogix Contact tables Last Name and Work Phone.&amp;nbsp; To display this data in Crystal we would create a formula field called Laundry Mark.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When the Field Formula Workshop opens look for the Function Tree.&amp;nbsp; If the Function&amp;nbsp;Tree&amp;nbsp;is not displaying select the Alt and U keys.&amp;nbsp; Navigate to the String Value in the Function Tree and click on the plus sign next to it.&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews051.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews051.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;You can see the Left value in the list, the right is a little further down but the process is the same for each.&lt;/p&gt;
&lt;p&gt;Left (str, length)&lt;/p&gt;
&lt;p&gt;There are two parameters for these function, the first is the string.&amp;nbsp; If you are using a integer or double field type you would have to convert the field to a string.&amp;nbsp; Both of our fields are string fields. &lt;/p&gt;
&lt;p&gt;The second parameter is the number of characters from the left you want to collect.&amp;nbsp; For lastname we only need&amp;nbsp;first character&amp;nbsp;but for the workphone we will use the last four characters. &lt;/p&gt;
&lt;p&gt;Our formula for LaundryMark field would look something like. &lt;/p&gt;
&lt;p&gt;Left(lastname, 1) &amp;amp; Right(workphone, 4)&lt;/p&gt;
&lt;p&gt;The data will look something like this when inserted into your report.&lt;/p&gt;
&lt;p&gt;J0214&lt;/p&gt;
&lt;p&gt;We will go into the Conversion next.&lt;/p&gt;
&lt;p&gt;Remember our list of &lt;a class="" href="http://customerfx.com/pages/cfxproducts/2009/04/13/free-saleslogix-reports.aspx"&gt;free SalesLogix Reports&lt;/a&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;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=41008" 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>Working with Null or Empty Characters in Crystal</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/10/13/working-with-null-or-zero-character-in-crystal.aspx" /><id>http://customerfx.com/pages/reporting/2009/10/13/working-with-null-or-zero-character-in-crystal.aspx</id><published>2009-10-13T14:28:00Z</published><updated>2009-10-13T14:28:00Z</updated><content type="html">&lt;p&gt;This is the start of a series of post working with the many functions used in the &lt;a class="" href="http://customerfx.com/pages/reporting/2009/10/06/business-object-crystal-formulas-the-formula-workshop.aspx"&gt;Formula Workshop&lt;/a&gt;&amp;nbsp;of&amp;nbsp;Business Objects Crystal Reports.&amp;nbsp; These functions are often used while&amp;nbsp;reporting out of Sage SalesLogix database.&amp;nbsp; Today I thought I would start out with a Null values. &lt;/p&gt;
&lt;p&gt;What is a &amp;quot;Null&amp;quot; character? &lt;a href="http://www.iwebtool.com/"&gt;www.iwebtool.com&lt;/a&gt;&amp;nbsp;defines a null character as:&lt;/p&gt;
&lt;p&gt;&lt;font color="#242424"&gt;A null character is a character with all its bits set to zero. Therefore, it has a numeric value of zero and can be used to represent the end of a string of characters, such as a word or phrase. This helps programmers determine the length of strings. In practical applications, such as database and spreadsheet programs, null characters are used as fillers for spaces.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Put simply and in reference to Crystal Reporting, it is when nothing is displaying in your report field.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Most of the time this occurs when records, such as an Account record, is created&amp;nbsp;in a table.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;For example, the Insert New Account/Contact screen collects the data your company has chosen&amp;nbsp;to be&amp;nbsp;required for the creating of an Account in your system.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews041.jpg"&gt;&lt;img style="WIDTH:601px;HEIGHT:562px;" height="524" src="http://customerfx.com/blogs/reporting/DistributingViews041.jpg" width="510" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The data fields that are not populated or not included on&amp;nbsp;that screen&amp;nbsp;are populated with a Null value.&amp;nbsp;&amp;nbsp;We can look at the raw data in SQL&amp;nbsp;to see all of the null values that&amp;nbsp;are sitting in the database fields as place holders.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews042.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews042.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One other thing to look for are records were a value was added but then removed.&amp;nbsp;&amp;nbsp;These empty fields are basically the same thing as Null&amp;nbsp;Characters but they are called out separately in formulas.&lt;/p&gt;
&lt;p&gt;In my example today I will use the Account Division field.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;When dealing with Null or Empty values in&amp;nbsp;Crystal&amp;#39;s Formula Workshop, this is the Syntax&amp;nbsp;I often use&amp;nbsp;where I want to call out records where the condition exists :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IsNull({ACCOUNT.DIVISION}) or {ACCOUNT.DIVISION} = &amp;quot;&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I also use this&amp;nbsp;to help me suppress records from a group or the detail sections of my reports.&amp;nbsp; In those times where a value is needed then you could use this formula in a Custom Formula field&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If IsNull({ACCOUNT.DIVISION}) or {ACCOUNT.DIVISION} = &amp;quot;&amp;quot; then &amp;quot;Unknown&amp;quot; else {ACCOUNT.DIVISION}&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now if I want to go the opposite way where I am only looking for records where there is data in the field&amp;nbsp;I often just use the following:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;{ACCOUNT.DIVISION}&amp;gt;&amp;quot;&amp;quot;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Some times you absolutely&amp;nbsp;need to use the &amp;quot;is not null&amp;quot; and that is written.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Not(IsNull({ACCOUNT.DIVISION}) )&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With this you would get the empty values in your list. &lt;/p&gt;
&lt;p&gt;Well there it is, the first of many to come. I look forward to learning and writing more about functions in Crystal Reporting. &lt;/p&gt;
&lt;p&gt;Hey, do not forget all of those &lt;a class="" href="http://customerfx.com/pages/cfxproducts/2009/04/13/free-saleslogix-reports.aspx"&gt;free download of reports&lt;/a&gt;.&amp;nbsp; These are great way of getting a good start on whatever report you are working on. &lt;/p&gt;
&lt;p&gt;Take care - Geo&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=40981" 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" /><category term="SalesLogix Report Downloads" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Report+Downloads/default.aspx" /></entry><entry><title>Business Object Crystal Formulas - The Formula Workshop</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/10/06/business-object-crystal-formulas-the-formula-workshop.aspx" /><id>http://customerfx.com/pages/reporting/2009/10/06/business-object-crystal-formulas-the-formula-workshop.aspx</id><published>2009-10-06T20:08:00Z</published><updated>2009-10-06T20:08:00Z</updated><content type="html">&lt;p&gt;During the SalesLogix Report Writing Class, I was asked where is a good place to find syntax&amp;nbsp;for Crystal formulas.&amp;nbsp; My answer is of course the web, or the many books that provide information about Business Objects Crystal Reports.&amp;nbsp; While thinking of what I would like to write about in my next series of posts I realized that it might be a good idea&amp;nbsp;to blog&amp;nbsp;about writing formulas.&amp;nbsp;&amp;nbsp;&amp;nbsp;As stated before the intent of my blogs are to teach to the lowest level so I thought the first post should be reviewing the Formula Workshop&lt;/p&gt;
&lt;p&gt;The formulas written in Crystal Reports can be used for limiting the data that is being brought into a report, to actually do math,&amp;nbsp;or&amp;nbsp;can help&amp;nbsp;make&amp;nbsp;your data display the way you want it to.&amp;nbsp; There are three main areas where the Formula Workshop is launched from. &lt;/p&gt;
&lt;p&gt;The first is of course the &amp;quot;Formula Fields&amp;quot; listing in the Field Explorer window.&amp;nbsp; Right click and select &amp;quot;New&amp;quot; to start a new formula.&amp;nbsp; To Edit right click on the formula and select &amp;quot;Edit&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews036.jpg"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews037.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews037.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Next is the Selection Formulas which can be accessed through Report &amp;gt; Selection Formulas &amp;gt; Record (or Group)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews038.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews038.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And finally any where you see one of these icons &lt;a href="http://customerfx.com/blogs/reporting/DistributingViews039.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews039.jpg" border="0" alt="" /&gt;&lt;/a&gt;.&amp;nbsp; This icon is seen when you are formatting fields through the Format Editor&amp;nbsp;or working with the Section Expert. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;When you use any of the methods described above the Formula Workshop will open.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews040.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews040.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The section to the left&amp;nbsp;is called the the Workshop Tree&amp;nbsp;which provides you access to any formula that may already be written in your report.&lt;/p&gt;
&lt;p&gt;The section center left is the Field Tree. This displays all of the fields that are either already selected in your report or&amp;nbsp;are available through the tables selected for your report.&amp;nbsp; To get a field to display in the formula&lt;/p&gt;
&lt;p&gt;The section center right it the Function Tree.&amp;nbsp; This lists any and all functions that are available to you in Crystal.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;All the way to the right is the Operators Tree which of course list all of the Operators available to you.&lt;/p&gt;
&lt;p&gt;Formula window is at the bottom center and is where we build our formulas.&amp;nbsp; As we go through our post we will visit this view a lot. &lt;/p&gt;
&lt;p&gt;First up is dealing with Null or empty sting values in our formulas.&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=40954" 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>The Absolute Best Way to Sync Views Out to Remotes</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/09/29/the-absolute-best-way-to-sync-views-out-to-remotes.aspx" /><id>http://customerfx.com/pages/reporting/2009/09/29/the-absolute-best-way-to-sync-views-out-to-remotes.aspx</id><published>2009-09-29T18:20:00Z</published><updated>2009-09-29T18:20:00Z</updated><content type="html">&lt;p&gt;Well this topic is dead, or at least it will be after this post.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/pages/reporting/2009/09/18/sync-views-out-to-remotes.aspx"&gt;I wrote about this topic&lt;/a&gt; just prior to The Crystal Report Writing class.&amp;nbsp; During the class the question was asked &lt;/p&gt;
&lt;p&gt;&amp;quot;What about using the Execute SQL tool in the SalesLogix Administrator for syncing out SQL views to remotes?&amp;quot;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;As a development team we have looked at this before and always found that it&amp;nbsp;just did not work.&amp;nbsp; But we had not tested it&amp;nbsp;in quite a while so we decided to try&amp;nbsp;it again, and this time it worked.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So here for the final time as a topic on the Report Writing&amp;nbsp;blog is the &amp;quot;Best way to Sync SQL views out to Remotes&amp;quot;.&lt;/p&gt;
&lt;p&gt;To accomplish this we need a SQL view.&amp;nbsp; A SQL view for those who do not know is an excellent way of organizing data for a report.&amp;nbsp; When your view is complete the view will act like a database table.&amp;nbsp;The biggest issue with using SQL views in reports is the Remote database issue.&amp;nbsp; Just creating a view in SQL does not synchronize it out to the SalesLogix Remote Databases. &lt;/p&gt;
&lt;p&gt;Here is a simple SQL&amp;nbsp;selected statement that counts records related to an Account. &lt;/p&gt;
&lt;p&gt;SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.ACCOUNTID, a.ACCOUNT, COUNT(c.CONTACTID) AS ContactCount,&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;(SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COUNT(HISTORYID) AS Expr1&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;sysdba.HISTORY&amp;nbsp;WHERE&amp;nbsp;(ACCOUNTID = a.ACCOUNTID)) AS HistoryCount,&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; (SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COUNT(ACTIVITYID) AS Expr1&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;sysdba.ACTIVITY&amp;nbsp;WHERE&amp;nbsp;(ACCOUNTID = a.ACCOUNTID)) AS ActivityCount,&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;(SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COUNT(OPPORTUNITYID) AS Expr1&amp;nbsp;FROM&amp;nbsp;&amp;nbsp;sysdba.OPPORTUNITY&amp;nbsp;WHERE&amp;nbsp;&amp;nbsp;(ACCOUNTID = a.ACCOUNTID)) AS OpportunityCount,&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;(SELECT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; COUNT(TICKETID) AS Expr1&amp;nbsp;FROM&amp;nbsp;sysdba.TICKET&amp;nbsp;WHERE&amp;nbsp;(ACCOUNTID = a.ACCOUNTID)) AS TicketCount&lt;br /&gt;FROM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sysdba.ACCOUNT AS a LEFT OUTER JOIN&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; sysdba.CONTACT AS c ON a.ACCOUNTID = c.ACCOUNTID&lt;br /&gt;GROUP BY a.ACCOUNTID, a.ACCOUNT&lt;/p&gt;
&lt;p&gt;To make it a view we add the text of:&lt;/p&gt;
&lt;p&gt;&lt;font&gt;CREATE VIEW sysdba.vACCOUNCOUNTs&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font&gt;AS&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;This is entered right above the select statement.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;When you combine the view&amp;nbsp;with other tables we can get some excellent roll up information.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews015.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews015.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This data can even be used&amp;nbsp;with the group builder in SalesLogix&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews016.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews016.jpg" border="0" height="547" width="631" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;To get this view synchronized out to the remotes, log into the SalesLogix Administrator.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Once the interface is open use the Tools&amp;gt; Execute SQL menu selection to open the Execute SQL tool. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews017.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews017.jpg" border="0" height="560" width="692" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When the Execute SQL interface opens, right click and select Add from the list that appears. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews018.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews018.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When the Edit SQL view appears copy in the SQL View you wish to synchronize out.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews019.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews019.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When you are ready, select OK.&amp;nbsp; You are returned to the Execute SQL interface.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Next we must identify the users who will receive this view.&amp;nbsp; On the lower half of the Execute SQL interface we see a list of names on the Left, find and highlight the name of the people the view should be synchronized out to and select the right pointing arrow. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews023.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews023.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once all of the target users&amp;nbsp;are selected,&amp;nbsp;click on&amp;nbsp;the &amp;quot;Execute&amp;quot; button on the upper right side of the view. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews024.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews024.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You will receive the following message box. Simply click on the &amp;quot;Yes&amp;quot; button....&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews025.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews025.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;....and the SQL Script will run.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews026.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews026.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Select OK and close out of the SalesLogix Administrator. &lt;/p&gt;
&lt;p&gt;The next time the Sync Serve Synchronizes it will pick up the view and ship it off to your selected users. &lt;/p&gt;
&lt;p&gt;A lot easier then writing all of that script.&amp;nbsp; God Bless.&lt;/p&gt;
&lt;p&gt;Geo&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=40901" 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" /><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" /><category term="Synchronization" scheme="http://customerfx.com/pages/reporting/archive/tags/Synchronization/default.aspx" /></entry><entry><title>Sync Views out To Remotes</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/09/18/sync-views-out-to-remotes.aspx" /><id>http://customerfx.com/pages/reporting/2009/09/18/sync-views-out-to-remotes.aspx</id><published>2009-09-18T15:44:00Z</published><updated>2009-09-18T15:44:00Z</updated><content type="html">&lt;p&gt;The scenario is you have created a SQL view for use in a Crystal Report.&amp;nbsp; Your end users are excited about the report but then you started getting phone calls from your remote users that the report will not run.&amp;nbsp; You realize that the view you used to help organize your data did not synchronize out to your remote user base.&amp;nbsp; After some looking around on CustomerFX.com you realize that views do not Synchronize out Remote databases.&amp;nbsp; Your options are Cut New Remote databases or some how get the views to sync out.&amp;nbsp; Then you discovered Kris Halsrud&amp;#39;s blog on this exact topic written on&amp;nbsp;May 13th called &lt;a class="" href="http://customerfx.com/pages/integrationblog/2009/05/13/distributing-sql-views-to-remote-saleslogix-databases.aspx"&gt;Distributing SQL Views to Remote SalesLogix Databases&lt;/a&gt;.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Kris&amp;#39;s post provided the answer to what I was looking for in preparation for the SalesLogix Reporting class I am preparing.&amp;nbsp;&amp;nbsp;This issue is something I have been trying to overcome&amp;nbsp;throughout my SalesLogix reporting career.&amp;nbsp; Since&amp;nbsp;my goal is to&amp;nbsp;write to the &amp;quot;Beginner&amp;quot;&amp;nbsp;level of&amp;nbsp;SalesLogix reporting I thought&amp;nbsp;I would break&amp;nbsp;down the process&amp;nbsp;that Kris describes for the new Administrator or Report Writer.&lt;/p&gt;
&lt;p&gt;The concept of&amp;nbsp;what&amp;nbsp;Kris writes about&amp;nbsp;is that&amp;nbsp;since&amp;nbsp;changes to a detail view in SalesLogix synchronize out to remote databases, we can write a script that runs whenever a detail view opens.&amp;nbsp; This script&amp;nbsp;basically checks to make sure&amp;nbsp;the view exists.&amp;nbsp; If the view&amp;nbsp;does not, the script creates the view.&amp;nbsp; Once the change is saved and released, the script will synchronize out to the remotes and your report will run.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In order to accomplish what I am writing about today you must have access to the Sage SalesLogix Architect and the tables that support the view must be available in the remote database.&lt;/p&gt;
&lt;p&gt;Our&amp;nbsp;target detail view is the SLX Crystal Report Viewer.&amp;nbsp; This is the&amp;nbsp;screen that comes up when you select the report button on your nav bar. &lt;/p&gt;
&lt;p&gt;You can&amp;nbsp;open this view in the Architect using the File&amp;gt;Open Plugin menu item. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews002.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews002.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;When the &amp;quot;Choose Plugin&amp;quot; screen opens, click on the System listing in the tree control on the left side of the view, and look for and select the the &amp;quot;SLX Crystal Report Viewer&amp;quot; from the list on the right.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews004.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews004.jpg" border="0" alt="" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When the form opens in the Architect look for and select&amp;nbsp;the Script Tab.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews005.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews005.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;There is some form information&amp;nbsp;in gray&amp;nbsp;text on the top of the script.&amp;nbsp; Just below you see the word &amp;quot;Globals&amp;quot;.&amp;nbsp; Insert the following text under that word. &lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;Const SLXPW = &amp;quot;your_sysdba_password&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The phrase in the script, &amp;quot;your_sysdba_password&amp;quot;, &amp;nbsp;will need to be changed to match&amp;nbsp;your SQL server sysdba password. &lt;/p&gt;
&lt;p&gt;Scroll down the script and search for the&amp;nbsp;sub &amp;quot;AxFormOpen&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/DistributingViews006.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/DistributingViews006.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Directly under the &amp;quot;AXFormOpen&amp;quot;&amp;nbsp;line enter the following text:&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;FXCheckViews &lt;br /&gt;application.BasicFunctions.ProcessWindowMessages&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;Any existing text will come after these two lines. If more then one view is required to be created then you could use different versions of the FXCheckViews text.&amp;nbsp; It could look something like this:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;FXCheckViews&lt;br /&gt;&amp;nbsp;FXCheckViews2&lt;br /&gt;&amp;nbsp;application.BasicFunctions.ProcessWindowMessages&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;&amp;nbsp;Now scroll all the way to the bottom of the script and insert the following code:&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:0.5in;"&gt;&lt;span style="COLOR:#333399;"&gt;&lt;font face="Arial" color="#0000ff"&gt;&amp;#39; CFX Begin Script&lt;br /&gt;Sub FXCheckViews &lt;br /&gt;dim objrs &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objrs = GetNewRecordset() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objrs.Open &amp;quot;select id from sysobjects where name = &amp;#39;NAMEOFVIEW&amp;#39; and type=&amp;#39;V&amp;#39;&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(objrs.eof or objrs.bof) then ExecuteNativeSQL(&amp;quot;CREATE view NAMEOFVIEW as SELECTSTATEMENT&amp;quot;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objrs = nothing &lt;br /&gt;End Sub&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:0.5in;"&gt;&lt;span style="COLOR:#333399;"&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:0.5in;"&gt;&lt;span style="COLOR:#333399;"&gt;&lt;font face="Arial" color="#0000ff"&gt;Function GetNewRecordset() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set GetNewRecordset = CreateObject(&amp;quot;ADODB.Recordset&amp;quot;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set GetNewRecordset.ActiveConnection = GetNativeConnection() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetNewRecordset.CursorLocation = 3 &amp;#39;adUseClient &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetNewRecordset.CursorType = 3 &amp;#39;adOpenStatic &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetNewRecordset.LockType = 3 &amp;#39;adLockOptimistic &lt;br /&gt;End Function&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:0.5in;"&gt;&lt;span style="COLOR:#333399;"&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:0.5in;"&gt;&lt;span style="COLOR:#333399;"&gt;&lt;font face="Arial" color="#0000ff"&gt;Function ExecuteNativeSQL(ByVal SQL) &lt;br /&gt;Dim objConn &lt;br /&gt;Dim lRecs &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; On Error Resume Next &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lRecs = -1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objConn = GetNativeConnection &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; objConn.Execute SQL, lRecs, 128 &amp;#39;adExecuteNoRecords &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Err.Number &amp;lt;&amp;gt; 0 Then RaiseError &amp;quot;executing SQL statement&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; On Error Goto 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objConn = Nothing &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ExecuteNativeSQL = lRecs &lt;br /&gt;End Function&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:0.5in;"&gt;&lt;span style="COLOR:#333399;"&gt;&lt;font color="#0000ff"&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:0.5in;"&gt;&lt;span style="COLOR:#333399;"&gt;&lt;font face="Arial" color="#0000ff"&gt;Function GetNativeConnection() &lt;br /&gt;Dim objRS &lt;br /&gt;Dim connstring &lt;br /&gt;Dim cn &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objRS = Application.GetNewConnection.Execute(&amp;quot;slx_getNativeConnInfo()&amp;quot;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; connstring = objRS.Fields(0).Value &amp;amp; &amp;quot;;Password=&amp;quot; &amp;amp; SLXPW &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; objRS.Close &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objRS = Nothing &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set cn = CreateObject(&amp;quot;ADODB.Connection&amp;quot;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; With cn &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; .ConnectionString = connstring &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; .Open &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End With &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If Err.Number &amp;lt;&amp;gt; 0 Then RaiseError &amp;quot;opening ADO connection object&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; On Error Goto 0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set GetNativeConnection = cn &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set cn = nothing &lt;br /&gt;End Function&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;The first sub in the script you just&amp;nbsp;inserted needs some adjustment.&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;Sub FXCheckViews &lt;br /&gt;dim objrs &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objrs = GetNewRecordset() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objrs.Open &amp;quot;select id from sysobjects where name = &amp;#39;&lt;font style="BACKGROUND-COLOR:#ff99ff;"&gt;NAMEOFVIEW&lt;/font&gt;&amp;#39; and type=&amp;#39;V&amp;#39;&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(objrs.eof or objrs.bof) then ExecuteNativeSQL(&amp;quot;CREATE view &lt;font style="BACKGROUND-COLOR:#ff99ff;"&gt;NAMEOFVIEW&lt;/font&gt; as &lt;font style="BACKGROUND-COLOR:#ff99ff;"&gt;SELECTSTATEMENT&lt;/font&gt;&amp;quot;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objrs = nothing &lt;br /&gt;End Sub &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;The text&amp;nbsp;&lt;font color="#0000ff"&gt;&amp;#39;NAMEOFVIEW&amp;#39;&lt;/font&gt; appears twice in the sub routine and should be replaced with name of the view as it appears in the SQL database. &lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;The text &lt;/font&gt;&lt;font face="Times New Roman" color="#0000ff"&gt;SELECTSTATEMENT &lt;span style="COLOR:blue;"&gt;&lt;font face="Arial" color="#000000"&gt;should be replaced with&amp;nbsp;the actual&amp;nbsp;SQL statement used in the view.&amp;nbsp; This needs to be&amp;nbsp;formatted&amp;nbsp;to display on one line.&amp;nbsp; I&amp;nbsp;formated&amp;nbsp;this by copying the SQL Statement into a text document&amp;nbsp;and deleted out all of the carriage returns.&amp;nbsp; &amp;nbsp;Then I pasted the formatted text into the script making sure to just replace the &lt;font face="Times New Roman" color="#0000ff"&gt;SELECTSTATEMENT&amp;nbsp; &lt;font face="Arial" color="#000000"&gt;text.&amp;nbsp; Here is an example:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;Sub FXCheckViews &lt;br /&gt;dim objrs &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objrs = GetNewRecordset() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objrs.Open &amp;quot;select id from sysobjects where name = &amp;#39;vAccountDescription&amp;#39; and type=&amp;#39;V&amp;#39;&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(objrs.eof or objrs.bof) then ExecuteNativeSQL(&amp;quot;CREATE view vAccountDescription as &lt;font color="#0000ff"&gt;SELECT a.ACCOUNTID, a.DESCRIPTION&amp;nbsp;from ACCOUNT&lt;/font&gt;&amp;quot;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objrs = nothing &lt;br /&gt;End Sub&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;Notice how the word SELECTSTATEMENT is gone, the SQL Statement is on one line only.&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;If you have more then one view being created you want to create a sub routine for each.&amp;nbsp; So in the example of above where there is the FXCheckViews and FXCheckViews2, we want the sub FXCheckViews and another sub for FXCheckViews2.&amp;nbsp; Together these would look something like this.&amp;nbsp;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;Sub FXCheckViews &lt;br /&gt;dim objrs &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objrs = GetNewRecordset() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objrs.Open &amp;quot;select id from sysobjects where name = &amp;#39;vAccountDescription&amp;#39; and type=&amp;#39;V&amp;#39;&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(objrs.eof or objrs.bof) then ExecuteNativeSQL(&amp;quot;CREATE view vAccountDescription as SELECT ACCOUNTID, DESCRIPTION&amp;nbsp;from ACCOUNT&amp;quot;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objrs = nothing &lt;br /&gt;End Sub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;Sub FXCheckViews2&lt;br /&gt;dim objrs &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objrs = GetNewRecordset() &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objrs.Open &amp;quot;select id from sysobjects where name = &amp;#39;vContactType&amp;#39; and type=&amp;#39;V&amp;#39;&amp;quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(objrs.eof or objrs.bof) then ExecuteNativeSQL(&amp;quot;CREATE view vContactType as SELECT ContactID,&amp;nbsp;Type&amp;nbsp;from Contact&amp;quot;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objrs = nothing &lt;br /&gt;End Sub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#330000"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;Any good SQL script will work.&amp;nbsp; This really opens up you ability to use SQL to organize your data for use in SalesLogix reporting or Group building.&amp;nbsp; &lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:blue;"&gt;&lt;font color="#000000"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=40874" 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" /><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" /><category term="Synchronization" scheme="http://customerfx.com/pages/reporting/archive/tags/Synchronization/default.aspx" /></entry><entry><title>Planning a SalesLogix Crystal Report</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/09/09/planning-a-report.aspx" /><id>http://customerfx.com/pages/reporting/2009/09/09/planning-a-report.aspx</id><published>2009-09-09T20:23:00Z</published><updated>2009-09-09T20:23:00Z</updated><content type="html">&lt;p&gt;One of the most common errors in developing Crystal Report in Sage SalesLogix&amp;nbsp;is the failure to plan.&amp;nbsp; A lot of times we just jump in without any fore thought and then&amp;nbsp;spend a lot of time back tracking and making&amp;nbsp;the report&amp;nbsp;work after the fact.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;I suggest the creation of a&amp;nbsp;internal scope&amp;nbsp;or blueprint document.&amp;nbsp; Most consulting firms use scope documents to define projects, Why not use this practice internally?&amp;nbsp; A scope document like I suggest is&amp;nbsp;created&amp;nbsp;by&amp;nbsp;you&amp;nbsp;for your&amp;nbsp;end user.&amp;nbsp; The document&amp;nbsp;allows you and the end user a place to layout your ideas&amp;nbsp;and agree&amp;nbsp;upon them before you&amp;nbsp;start on&amp;nbsp;the report.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The bullet points below are from a&amp;nbsp;document I developed for the &lt;a class="" href="http://customerfx.com/pages/events/pages/crystal-report-writing-for-saleslogix.aspx" target="_blank"&gt;Crystal Report Writing for SalesLogix&lt;/a&gt; class taking place at the end of this month.&amp;nbsp;If you are familiar with the Business Object Crystal Reports - Report Creation Wizard, you will&amp;nbsp;notice that this layout is set up so you can get a great start on your report. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Purpose &lt;/strong&gt;- What is the Purpose of the Report? &amp;nbsp;This might seem like a no brainer but this is really important to know and agree upon.&amp;nbsp; This keeps you and your End User on the same page throughout the development of the report. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Report Name:&lt;/strong&gt;&amp;nbsp;- This is important for obvious reasons.&amp;nbsp; There is three things come to mind when I think of a report name.&amp;nbsp; The file name, the Report Header Label, and then name that appears in the SalesLogix Reports List. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Family&lt;/strong&gt; -&amp;nbsp;Does this report belong in the family of&amp;nbsp;Account, Contact, Opportunity, History, Activity, Ticket, Contract, Personal.&amp;nbsp; This is&amp;nbsp;required for adding the report into SalesLogix.&amp;nbsp; This is agreed upon by both so you know where to put&amp;nbsp;the report&amp;nbsp;and the end user will know how to find it.&amp;nbsp; This is also a good time to think about Condition Filter fields for User and Date.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fields -&lt;/strong&gt;&amp;nbsp; What are the fields that are important for this report.&amp;nbsp; Start by using the interface names of the fields for the end user but be sure to look into the database and find the actual database name of the fields.&amp;nbsp; You would be surprised how often a field is used for something it was not intended for especially in older systems that have been internally managed for years.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tables -&lt;/strong&gt;&amp;nbsp; While you search for the field names keep a good list of the tables the fields are located in.&amp;nbsp;&amp;nbsp;Having a list of the exact tables you need really speeds up the process of creating a report. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Table Linking - &lt;/strong&gt;How do the tables you have chosen above relate to one another?&amp;nbsp; After you select the tables the next step is Linking.&amp;nbsp; You need to know how to set up the links between tables before you can go any further in your Report Development.&amp;nbsp; Then think about the Join Type&amp;nbsp;(Inner, &amp;nbsp;Left Outer, or Right Outer).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Layout &lt;/strong&gt;-&amp;nbsp; This is probably the most important one for the End User.&amp;nbsp; They are your customers, if they do not like the layout, your development work will go on and on.&amp;nbsp; Drawing out the layout in pencil will go a long way to making sure you are on track with your end users idea and set proper expectations of what the report will look like when it is done. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Grouping -&lt;/strong&gt; How is your data organized? by Createdate? By first or last Name? By User? Or maybe all of these.&amp;nbsp; Then you have to think about the order of the groups.&amp;nbsp;&amp;nbsp;Other things to think about, Does the group need to display or can you suppress it from view.&amp;nbsp; If it is displaying then what fields do want visible supporting your grouping. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Summaries - &lt;/strong&gt;Most Reports provide some type of roll ups.&amp;nbsp; Whether it be counts, averages, or sums you need to really think and plan out summaries&amp;nbsp;prior to building your report.&amp;nbsp; The Crystal Report Writing Wizard can really make this easy for you if you are well prepared.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Record Selection Criteria -&lt;/strong&gt; What data do you want to see?&amp;nbsp; An example here is&amp;nbsp;the History table, In SalesLogix,&amp;nbsp;this table is filled with a lot of change to database&amp;nbsp;records.&amp;nbsp;Do you want to see those records in your report?&amp;nbsp; If not what is the criteria you are going to use to eliminate those records from your report?&lt;/p&gt;
&lt;p&gt;I hope you see my&amp;nbsp;point, that a&amp;nbsp;lot&amp;nbsp;of&amp;nbsp;planning with your end user&amp;nbsp;goes along way.&amp;nbsp; Taking the time&amp;nbsp;to plan&amp;nbsp;out the report to the smallest detail possible prior to sitting down and opening up Crystal will allow you to use the Crystal Report Creation Wizard to it&amp;#39;s maximum efficiency leaving you with nothing to do but formulas and formating.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;If you want to learn more about Developing Crystal Reports consider taking the &lt;a class="" target="_blank"&gt;Crystal Report Writing for SalesLogix&lt;/a&gt; class, registration is going on now.&lt;/p&gt;
&lt;p&gt;I hope this post helps some one plan an upcoming report.&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;img src="http://customerfx.com/aggbug.aspx?PostID=40850" 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>The Unknown SalesLogix Calendar Report</title><link rel="alternate" type="text/html" href="http://customerfx.com/pages/reporting/2009/09/03/saleslogix-calendar-report.aspx" /><id>http://customerfx.com/pages/reporting/2009/09/03/saleslogix-calendar-report.aspx</id><published>2009-09-03T14:12:00Z</published><updated>2009-09-03T14:12:00Z</updated><content type="html">&lt;p&gt;I am going through and reviewing to make sure we have&amp;nbsp;covered all of the&amp;nbsp;standard&amp;nbsp;Crystal Reports that come with Sage SalesLogix.&amp;nbsp; I think I am almost done but I want to make sure I have covered them all.&amp;nbsp;If I find any that are not covered I will make sure to write.&amp;nbsp; Today we will discuss a standard SalesLogix capability that some people may not know about. &lt;/p&gt;
&lt;p&gt;Recently a client, and a friend, contacted me about creating a Calendar Report for SalesLogix.&amp;nbsp; He showed me an example of the report and I thought he was kidding me.&amp;nbsp; I said, you know this report is already available for use in SalesLogix.&amp;nbsp; He honestly did not know that the report existed so I thought I would write to try and ensure&amp;nbsp;that&amp;nbsp;others are aware of this valuable report.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;To run&amp;nbsp;the SalesLogix&amp;nbsp;Calendar report, navigate to the SalesLogix &amp;quot;File&amp;quot; menu and select &amp;quot;Print Calendar Reports...&amp;quot; from the list. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://customerfx.com/blogs/reporting/CalendarReport001.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/CalendarReport001.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This opens&amp;nbsp;the&amp;nbsp;&amp;quot;Print Calendar Reports&amp;quot; view, the fields selected in the picture above are set&amp;nbsp;as the defaults.&amp;nbsp;&amp;nbsp;You have the ability to select Activities or History (or both) type of records.&amp;nbsp; You can also multi select the Activity Types and&amp;nbsp;the&amp;nbsp;fields you want displayed in your report.&amp;nbsp; In the center you have the ability to select a date range or use&amp;nbsp;eleven standards such as &amp;quot;Today&amp;quot;, &amp;quot;Year to Date&amp;quot; and the &amp;quot;Last Month&amp;quot;.&amp;nbsp;&amp;nbsp;You also have the ability to report on other users calendars, but only the users that you are allowed calendar access to through the SalesLogix Administrator.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;You can play around with what settings work best for you, the important thing is to know it is out there.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Here is an example:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://customerfx.com/blogs/reporting/CalendarReport002.jpg"&gt;&lt;img src="http://customerfx.com/blogs/reporting/CalendarReport002.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;FYI, this is not a Crystal Report that can be modified.&amp;nbsp; Pretty&amp;nbsp;cool capability&amp;nbsp;thoung and valuable for that busy Sales or Service personal. &lt;/p&gt;
&lt;p&gt;Remember to look for any of our updated reports for free download here under &amp;quot;&amp;nbsp;&lt;a href="http://customerfx.com/pages/cfxproducts/2009/04/13/free-saleslogix-reports.aspx"&gt;&lt;font color="#3c3c3c"&gt;Free SalesLogix Reports&lt;/font&gt;&lt;/a&gt;&amp;quot; &lt;/p&gt;
&lt;p&gt;Also remember we have a class coming up. &lt;a class="" href="http://customerfx.com/pages/events/pages/crystal-report-writing-for-saleslogix.aspx"&gt;&lt;font color="#3c3c3c"&gt;Crystal Report Writing for SalesLogix&lt;/font&gt;&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;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;&amp;nbsp;&lt;/p&gt;&lt;img src="http://customerfx.com/aggbug.aspx?PostID=40837" 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 Report Downloads" scheme="http://customerfx.com/pages/reporting/archive/tags/SalesLogix+Report+Downloads/default.aspx" /></entry></feed>