<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cogniza &#187; Date/Time</title>
	<atom:link href="http://cogniza.com/wordpress/tag/datetime/feed/" rel="self" type="application/rss+xml" />
	<link>http://cogniza.com/wordpress</link>
	<description>Business-Intelligence Specialists</description>
	<lastBuildDate>Sat, 30 Apr 2011 13:22:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Sql Server: DateRanges() Function</title>
		<link>http://cogniza.com/wordpress/2006/05/25/sql-server-dateranges-function/</link>
		<comments>http://cogniza.com/wordpress/2006/05/25/sql-server-dateranges-function/#comments</comments>
		<pubDate>Thu, 25 May 2006 16:37:08 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Functions]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Date/Time]]></category>
		<category><![CDATA[Transact-SQL]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=79</guid>
		<description><![CDATA[This user-defined function creates a table of date ranges.]]></description>
			<content:encoded><![CDATA[<p>This user-defined function creates a table of date ranges.<span id="more-79"></span></p>
<p><code> --================================================================================<br />
--Author:    Craig <a href="mailto:Buchanan;craig.buchanan@cogniza.com" title="Linkification: mailto:Buchanan;craig.buchanan@cogniza.com" class="linkification-ext" style="color: #ffcc33">Buchanan;craig.buchanan@cogniza.com</a><br />
--Purpose:    Generates a table of data ranges (the most recent 12 months, plus<br />
--        three of Crystal Reports named-date ranges: MonthToDate,LastFullMonth<br />
--        and YearToDate<br />
--Parameters:    None<br />
--Returns:    a table of date range values<br />
--================================================================================<br />
DROP FUNCTION dbo.DateRanges<br />
GO<br />
CREATE FUNCTION dbo.DateRanges ()<br />
RETURNS @DateRangeTable TABLE (<br />
[Sequence]    decimal,<br />
StartDate    smalldatetime,<br />
EndDate        smalldatetime,<br />
Value        varchar(25),<br />
[Description]    varchar(20)<br />
)<br />
AS<br />
BEGIN<br />
--grab the system's date/time (using a view)<br />
DECLARE @EndDate    Datetime<br />
SELECT    @EndDate = Now<br />
FROM    dbo.GetNow<br />
--calculate the first date of the current month<br />
DECLARE @FirstOfMonth    Datetime<br />
SET @FirstOfMonth = CONVERT(VARCHAR,DatePart(m,@EndDate)) + '/1/' + CONVERT(CHAR(4),DatePart(yyyy,@EndDate))<br />
--calculate the first day of the month, 12 months ago<br />
DECLARE @StartDate    Datetime<br />
SET @StartDate = DateAdd(m,-12,@FirstOfMonth)<br />
--create a sequence number generator<br />
DECLARE @i        int<br />
SET @i = 1<br />
--insert 12 months of data<br />
WHILE @StartDate &lt; @FirstOfMonth<br />
BEGIN<br />
INSERT INTO @DateRangeTable (<br />
[Sequence],<br />
StartDate,<br />
EndDate,<br />
Value,<br />
[Description]<br />
)<br />
VALUES    (<br />
@i,<br />
@StartDate,<br />
DateAdd(m,1,@StartDate)-1,<br />
--create a value in the format i;StartDate:EndDate<br />
--ensure i is 0 padded<br />
Right( '0' + convert(varchar, @i), 2) + ';' +<br />
CONVERT(CHAR(10),@StartDate,110) + ':' +<br />
CONVERT(CHAR(10),DateAdd(m,1,@StartDate)-1,110),<br />
DATENAME(mm, @StartDate) + ' ' + CONVERT(VARCHAR,DATEPART(yyyy, @StartDate))<br />
)<br />
--add a month; increment counter<br />
SET @StartDate = DateAdd(m,1,@StartDate)<br />
SET @i = @i + 1<br />
END<br />
--add crystal report data ranges in the format index;DateRange<br />
--'Year to Date'<br />
INSERT INTO @DateRangeTable ([Sequence],StartDate,EndDate,Value,[Description])<br />
VALUES    (<br />
@i,<br />
'1/1/' + CONVERT(CHAR(4),DatePart(yyyy, @EndDate)),<br />
CONVERT(CHAR(10),@EndDate,110),<br />
Right( '0' + convert(varchar, @i), 2) + ';YearToDate','Year To Date'<br />
)<br />
SET @i = @i + 1<br />
--'Last Full Month'<br />
INSERT INTO @DateRangeTable ([Sequence],StartDate,EndDate,Value,[Description])<br />
VALUES    (<br />
@i,<br />
CONVERT(CHAR(10),DateAdd(m,-1,@FirstOfMonth),110),<br />
CONVERT(CHAR(10),@FirstOfMonth-1,110),<br />
Right( '0' + convert(varchar, @i), 2) + ';LastFullMonth','Last Full Month'<br />
)<br />
SET @i = @i + 1<br />
--'Month to Date'<br />
INSERT INTO @DateRangeTable ([Sequence],StartDate,EndDate,Value,[Description])<br />
VALUES    (<br />
@i,<br />
CONVERT(VARCHAR,DatePart(m, @EndDate)) + '/1/' + CONVERT(CHAR(4),DatePart(yyyy, @EndDate)),<br />
CONVERT(CHAR(10),@EndDate,110),<br />
Right( '0' + convert(varchar, @i), 2) + ';MonthToDate','Month To Date'<br />
)<br />
SET @i = @i + 1<br />
RETURN<br />
END<br />
GO<br />
GRANT SELECT ON dbo.DateRanges TO PUBLIC<br />
GO</code></p>
<p><a href="/wordpress/wp-content/uploads/2006/05/DateRanges.sql.txt" id="p80">DateRanges SQL Script</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2006/05/25/sql-server-dateranges-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Business Objects Enterprise: Create a Dynamic List of Date Ranges</title>
		<link>http://cogniza.com/wordpress/2006/05/24/business-objects-enterprise-create-a-dynamic-list-of-date-ranges/</link>
		<comments>http://cogniza.com/wordpress/2006/05/24/business-objects-enterprise-create-a-dynamic-list-of-date-ranges/#comments</comments>
		<pubDate>Wed, 24 May 2006 17:38:23 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Business Objects Enterprise]]></category>
		<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[Business View]]></category>
		<category><![CDATA[Date/Time]]></category>
		<category><![CDATA[Parameters]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=61</guid>
		<description><![CDATA[Add a dynamic, date-range parameter to a report which includes the most recent 12 months, plus Crystal Reports' Month-to-Date and Year-to-Date ranges.]]></description>
			<content:encoded><![CDATA[<p>Add a dynamic, date-range parameter to a report which includes the most recent 12 months, plus Crystal Reports&#8217; Month-to-Date and Year-to-Date ranges.</p>
<p><a href="/wordpress/wp-content/uploads/2006/05/Date-Range%20Parameter.png" target="_new"><img src="/wordpress/wp-content/uploads/2006/05/Date-Range%20Parameter.png" alt="Date-Range Parameter" id="image62" border="0" height="90" width="128" /></a><span id="more-61"></span></p>
<h2>Objective</h2>
<p>Give the report</p>
<h2>Instructions</h2>
<h3>Create the Sql Server Components</h3>
<p>A Sql Server user-defined function (see <a href="http://www.cogniza.com/wordpress/2006/05/25/sql-server-dateranges-function" target="_new">Sql Server: DateRanges Function</a>) will dynamically create the values that are needed for the this project. This function needs a Sql Server view (see <a href="http://www.cogniza.com/wordpress/2006/05/25/sql-server-getnow-view" target="_new">Sql Server: GetNow View</a>) to generate the system&#8217;s current date/time.</p>
<h3>Create Data Connection</h3>
<ol>
<li>Open the Business View Manager and log in.</li>
<li>Create a new Data Connection.</li>
<li>Configure the Data Connection to attach to the appropriate Sql Server database.</li>
<li>Save the Data Connection as &#8216;Sql Server DC&#8217;.</li>
</ol>
<h3>Create a Data Foundation</h3>
<ol>
<li>In the Business View Manager, create a Data Foundation.</li>
<li>Select &#8216;Sql Server DC&#8217; as the Data Connection.</li>
<li>Save the Data Foundation as &#8216;Sql Server DF&#8217;.</li>
</ol>
<h3>Create a Business View</h3>
<ol>
<li>In the Business View Manager, create a Business View.</li>
<li>Save the Business View as &#8216;Sql Server BV&#8217;.</li>
</ol>
<h3>Create a Command Object</h3>
<ol>
<li>Create a Command Object in the Data Foundation. Add the following text to the Command Object:</li>
<p><code>SELECT *<br />
FROM dbo.DateRanges()<br />
ORDER BY Sequence DESC </code></p>
<li>Save the Command Object as &#8216;DateRanges&#8217;.</li>
</ol>
<p><a href="/wordpress/wp-content/uploads/2006/05/Create%20Command%20Object.png" target="_new"><img src="/wordpress/wp-content/uploads/2006/05/Create%20Command%20Object.thumbnail.png" alt="Create Command Object" id="image65" border="0" height="80" width="128" /></a></p>
<p><a href="/wordpress/wp-content/uploads/2006/05/Data%20Foundation.png" target="_new"><img src="/wordpress/wp-content/uploads/2006/05/Data%20Foundation.thumbnail.png" alt="Data Foundation" id="image75" border="0" height="94" width="128" /></a></p>
<h3>Create a Business Element</h3>
<ol>
<li>Create a new Business Element in the Business View Manager.</li>
<li>Add the Description and Value fields from the &#8216;DateRanges&#8217; Command Object.</li>
<li>Save the Business Element as &#8216;DateRanges&#8217;.</li>
</ol>
<p><a href="/wordpress/wp-content/uploads/2006/05/Business%20Element.png" target="_new"><img src="/wordpress/wp-content/uploads/2006/05/Business%20Element.thumbnail.png" alt="Business Element" id="image63" border="0" height="94" width="128" /></a></p>
<h3>Add Business Element to Business View</h3>
<ol>
<li>Open the Business View.</li>
<li>From the &#8216;Insert&#8217; menu, select &#8216;Insert Business Elements&#8230;&#8217;.</li>
<li>Locate and select the &#8216;DateRanges&#8217; Business Element, click &#8216;Add&#8217;, then &#8216;Close&#8217;.</li>
</ol>
<p><a href="/wordpress/wp-content/uploads/2006/05/Business%20View.png" target="_new"><img src="/wordpress/wp-content/uploads/2006/05/Business%20View.thumbnail.png" alt="Business View" id="image64" border="0" height="94" width="128" /></a></p>
<h3>Create the List of Values</h3>
<ol>
<li>Create a new List of Value in the Business View Manager.</li>
<li>Select the desired Business View from the &#8216;Select Business View&#8217; window.</li>
<li>Enter &#8216;Date Range LoV&#8217; in the &#8216;Name&#8217; textbox.</li>
<li>Expand the &#8216;DateRanges&#8217; Business Element in the &#8216;Available Fields&#8217; list.</li>
<li>Select &#8216;Value&#8217;, then click the &#8216;&gt;&#8217; button.</li>
<li>Check &#8216;Sort by Value in Descending Order&#8217;.</li>
<li>Choose &#8216;Description&#8217; from the &#8216;Description Field&#8217; dropdown list.</li>
<li>Click &#8216;OK&#8217; to save the List of Values.</li>
</ol>
<p><a href="/wordpress/wp-content/uploads/2006/05/Create%20List%20of%20Values.png" target="_new"><img src="/wordpress/wp-content/uploads/2006/05/Create%20List%20of%20Values.thumbnail.png" alt="Create List of Values" id="image66" border="0" height="96" width="112" /></a></p>
<h3>Examine Repository</h3>
<p>Open the Repository Explorer in the Business View Manager.  The list of objects for the Date Range Parameter should resemble this list:</p>
<p><a href="/wordpress/wp-content/uploads/2006/05/Repository%20Explorer.png" target="_new"><img src="/wordpress/wp-content/uploads/2006/05/Repository%20Explorer.thumbnail.png" alt="Repository Explorer" id="image76" border="0" height="96" width="111" /></a></p>
<h3>Create the Dynamic Parameter</h3>
<ol>
<li>Create a new report using Crystal Reports XI.</li>
<li>Connect to the Repository that contains the &#8216;Sql Server BV&#8217; Business View.</li>
<li>Create a new parameter, named &#8216;Date Range&#8217;.  Leave the &#8216;Prompt Group Text&#8217; textfield blank.</li>
<li>Select &#8216;Dynamic&#8217; from the &#8216;List of Values&#8217; dropdown list.</li>
<li>Select the Existing radio button and choose &#8216;Date Range LoV&#8217; from the list.</li>
<li>Click &#8216;Create Parameter&#8217; in the &#8216;Parameters&#8217; column of the &#8216;Choose a Data Source&#8217; group.</li>
<li>Set &#8216;Prompt Text&#8217; to &#8216;Choose Date Range&#8217;.</li>
<li>Set &#8216;Sort Order&#8217; to &#8216;Descending by Value&#8217;.</li>
<li>Set &#8216;Prompt With Description Only&#8217; to &#8216;True&#8217;.</li>
<li>Click &#8216;OK&#8217; to save the parameter.</li>
</ol>
<p><a href="/wordpress/wp-content/uploads/2006/05/Create%20Parameter.png" target="_new"><img src="/wordpress/wp-content/uploads/2006/05/Create%20Parameter.Thumbnail.png" alt="Create Parameter" id="image67" border="0" height="96" width="114" /></a></p>
<h3>Modify the Report</h3>
<ol>
<li>Add the CDateTime Custom Function to the report (see <a href="http://www.cogniza.com/blog/?p=77" title="Crystal Reports: CDateRange Function">Crystal Reports: CDateTime</a>).</li>
<li>Add a Custom Function named &#8216;getDateRange&#8217; (see below) to the report.</li>
<li>Edit the Record Selection Formula. Add the following code:<br />
<code>//set the database field to the value that is extracted from the 'Date Range' parameter<br />
{table.date_field} IN getDateRange({?Date Range})</code></li>
<li>Add a formula field to display the date range.  Add the following code to the formula:<br />
<code>CStr(Minimum(getDateRange ({?Date Range}))) + " - " + CStr(Maximum(getDateRange ({?Date Range})))</code><br />
Add the formula field to the report.</li>
</ol>
<h2>Summary</h2>
<p>When the report is run, the parameter form will resemble:</p>
<p><a href="/wordpress/wp-content/uploads/2006/05/Date-Range%20Parameter.png" target="_new"><img src="/wordpress/wp-content/uploads/2006/05/Date-Range%20Parameter.png" alt="Date-Range Parameter" id="image62" border="0" height="90" width="128" /></a></p>
<p><a href="/wordpress/wp-content/uploads/2006/05/Dynamic%20Date-Range%20Parameter.zip" id="p70">Dynamic Date-Range Parameter Sample</a></p>
<h2>getDateRange Custom Function</h2>
<p><code> '--------------------------------------------------------------------------------<br />
'Author:        Craig <a href="mailto:Buchanan;craig.buchanan@cogniza.com" style="color: #ffcc33" class="linkification-ext" title="Linkification: mailto:Buchanan;craig.buchanan@cogniza.com">Buchanan;craig.buchanan@cogniza.com</a><br />
'Purpose:       Convert a string value into its equivalent Date Range<br />
'Parameters:    text - a string in the format index;startDate:endDate<br />
'               or index;NamedDateRange<br />
'               e.g. 1;1/1/2006:12/31/2006 or 2;MonthToDate<br />
'Returns:       Date Range<br />
'--------------------------------------------------------------------------------<br />
Function getDateRange (text as string) As Date Range<br />
If Instr(text,";")=0 Then Exit Function<br />
Dim value as string: value = Split(text,";")(2)<br />
If Instr(value,":")=0 Then<br />
getDateRange = CDateRange (value)<br />
Else<br />
Dim startDate as Date: startDate = Cdate(Split(value,":")(1))<br />
dim endDate as Date: endDate = cdate(Split(value,":")(2))<br />
getDateRange = startDate to endDate<br />
End If<br />
End Function</code></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2006/05/24/business-objects-enterprise-create-a-dynamic-list-of-date-ranges/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Crystal Reports: FirstMonday() Function</title>
		<link>http://cogniza.com/wordpress/2006/05/08/crystal-reports-firstmonday-function/</link>
		<comments>http://cogniza.com/wordpress/2006/05/08/crystal-reports-firstmonday-function/#comments</comments>
		<pubDate>Mon, 08 May 2006 16:30:15 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Functions]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Date/Time]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=51</guid>
		<description><![CDATA[Finds the the first Monday in the current month.
Function FirstMonday (Value As Date) As Date
'first day of the specified month
Dim FirstOfMonth As Date
FirstOfMonth= DateValue(Year(Value), Month(Value), 1)
'Convert the first day to the Monday of the same week
Dim Monday As Date
Monday = FirstOfMonth + (2-DayOfWeek(FirstOfMonth))
'make sure Monday is still in the same month as the first day [...]]]></description>
			<content:encoded><![CDATA[<p>Finds the the first Monday in the current month.</p>
<p><span id="more-51"></span><code>Function FirstMonday (Value As Date) As Date<br />
'first day of the specified month<br />
Dim FirstOfMonth As Date<br />
FirstOfMonth= DateValue(Year(Value), Month(Value), 1)<br />
'Convert the first day to the Monday of the same week<br />
Dim Monday As Date<br />
Monday = FirstOfMonth + (2-DayOfWeek(FirstOfMonth))<br />
'make sure Monday is still in the same month as the first day of the month.  If not, adjust.<br />
If Month(Monday) &lt;&gt; Month(FirstOfMonth) Then Monday=Monday+7<br />
'return date<br />
FirstMonday=Monday<br />
End Function<br />
</code></p>
<h3>Parameters</h3>
<dl>
<dt><em>Value</em></dt>
<dd>The specified month.</dd>
</dl>
<h3>Return Value</h3>
<p>A date</p>
<h3>Remarks</h3>
<p>none</p>
<h3>Example</h3>
<p><code>'finds the first monday of the current month<br />
FirstMonday(CurrentDate)<br />
</code></p>
<h3>Requirements</h3>
<p>This function requires the use of Basic Syntax.</p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2006/05/08/crystal-reports-firstmonday-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crystal Reports: ElapsedTime() Function</title>
		<link>http://cogniza.com/wordpress/2005/11/29/crystal-reports-elapsedtime-function/</link>
		<comments>http://cogniza.com/wordpress/2005/11/29/crystal-reports-elapsedtime-function/#comments</comments>
		<pubDate>Tue, 29 Nov 2005 19:52:18 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Functions]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Date/Time]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=31</guid>
		<description><![CDATA[Converts a number of seconds into a string in the format of days.hours:minutes:seconds.]]></description>
			<content:encoded><![CDATA[<p>Converts a number of seconds into a string in the format of days.hours:minutes:seconds.</p>
<p><span id="more-31"></span> <code> Function (NumberVar interval)<br />
NumberVar Days := Truncate(interval / 86400);<br />
NumberVar Hours := Truncate(Remainder(interval, 86400) / 3600);<br />
NumberVar Minutes := Truncate(Remainder(interval, 3600) / 60);<br />
NumberVar Seconds := Remainder(interval, 60);<br />
Totext(Days,'##') +'.'+ Totext(Hours,'00') +':'+ Totext(Minutes,'00') +':'+ Totext(Seconds,'00')<br />
</code></p>
<h3>Parameters</h3>
<dl>
<dt><em>interval</em></dt>
<dd>The number of seconds to be converted.</dd>
</dl>
<h3>Return Value</h3>
<p>A string in the format of days.hours:minutes:seconds</p>
<h3>Remarks</h3>
<p>none</p>
<h3>Example</h3>
<p><code> //returns 0.00:02:12<br />
ElapsedTime(132)</code></p>
<p><code>//formats the difference between two datetime values.<br />
ElapsedTime ((CurrentDateTime-DateTime(2006,1,1,0,0,0))*86400)</code></p>
<p><code>//formats the difference between two datetime values.<br />
ElapsedTime (DateDiff("s", {TABLE.FIELD}, CurrentDateTime))</code></p>
<h3>Requirements</h3>
<p>This function requires the use of Crystal Syntax.</p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2005/11/29/crystal-reports-elapsedtime-function/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Crystal Reports: Named-Date-Range Parameters</title>
		<link>http://cogniza.com/wordpress/2005/11/24/advanced-parameter-usage-in-crystal-reports/</link>
		<comments>http://cogniza.com/wordpress/2005/11/24/advanced-parameter-usage-in-crystal-reports/#comments</comments>
		<pubDate>Thu, 24 Nov 2005 17:39:41 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Date/Time]]></category>
		<category><![CDATA[Parameters]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=18</guid>
		<description><![CDATA[This article demonstrates the use of named-date-range parameters in Crystal Reports.]]></description>
			<content:encoded><![CDATA[<p>Often it&#8217;s useful to be able to use date ranges that are relative to the date the report was run, like &#8216;Month to Date&#8217;, when running a report.  While Crystal Reports&#8217; parameters do not possess this level of flexibility, it is fairly simple to approximate this capability.  This approach uses two parameters and Crystal Reports&#8217; date ranges to do so.</p>
<p><span id="more-18"></span></p>
<h3>Date-Range Parameter</h3>
<p>The first parameter, named &#8216;Date Range&#8217;, will allow an individual to choose one of these values: Yesterday, Last Full Week, Last Full Month, Month To Date or Custom Date Range.  Add these values to the parameter&#8217;s Default Values by clicking the &#8216;Default Values&#8230;&#8217; button.</p>
<h3>Custom Date-Range Parameter</h3>
<p>The second parameter, named &#8216;Custom Date Range&#8217;, will allow an individual to choose specific starting and ending dates.  Ensure that the parameter&#8217;s &#8216;Range Values&#8217; option is chosen.  NOTE: the value &#8216;Custom Date Range&#8217; needs to be chosen from the Date Range parameter, otherwise the value entered in this field is ignored.</p>
<h3>Record Selection Formula</h3>
<p>The record selection will use the selected value from the Date Range parameter to choose between one of Crystal Reports built-in date ranges or the value entered in the Custom Date Range parameter.<br />
<code><br />
//replace {TABLE.FIELD} with the desired value<br />
{TABLE.FIELD} IN (<br />
IF {?Date Range}= "Last Full Month" THEN LastFullMonth<br />
ELSE IF {?Date Range}= "Month To Date" THEN MonthToDate<br />
ELSE IF {?Date Range}="Last Full Week" THEN LastFullWeek<br />
ELSE IF {?Date Range}= "Yesterday" THEN DataDate-1<br />
ELSE {?Custom Date Range}<br />
)<br />
</code></p>
<p>NOTE: DataDate is immutable once a report&#8217;s data has been generated, unlike PrintDate.  Even with saved data, PrintDate will be refreshed each time a report is viewed.  This distinction is important if the report will be deployed in Crystal Enterprise.</p>
<h3>Display the Date Range</h3>
<p>If you would like to display the actual starting and ending dates from the chosen parameter combination on the report, create a formula name &#8216;Date Range&#8217;.  Add the following to the formula&#8217;s text:<br />
<code><br />
select {?Date Range}<br />
case "Yesterday":<br />
CStr(DataDate-1)<br />
case "Last Full Week":<br />
CStr(Minimum(LastFullWeek)) + "-"+ CStr(Maximum(LastFullWeek))<br />
case "Last Full Month":<br />
CStr(Minimum(LastFullMonth)) + "-"+ CStr(Maximum(LastFullMonth))<br />
case "Month To Date":<br />
CStr(Minimum(MonthToDate)) + "-"+ CStr(Maximum(MonthToDate))<br />
case "Custom Date Range":<br />
CStr(Minimum({?Custom Date Range})) + "-"+ CStr(Maximum({?Custom Date Range}))<br />
</code></p>
<h2>Summary</h2>
<p>In addition to making your report more flexible, this technique will make it easier to deploy, manage and schedule your report in Crystal Enterprise.</p>
<h2>Samples</h2>
<p><a href="/wordpress/wp-content/uploads/2006/05/AdvancedParameters.10.zip" title="Advanced Parameter Sample">Crystal Reports 10 &#8211; Advanced Parameter Sample</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2005/11/24/advanced-parameter-usage-in-crystal-reports/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Considerations For Reporting Against Remedy ARS Based Applications</title>
		<link>http://cogniza.com/wordpress/2005/11/03/considerations-for-reporting-against-remedy-ars-based-applications/</link>
		<comments>http://cogniza.com/wordpress/2005/11/03/considerations-for-reporting-against-remedy-ars-based-applications/#comments</comments>
		<pubDate>Thu, 03 Nov 2005 16:11:42 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Remedy ARS]]></category>
		<category><![CDATA[Access]]></category>
		<category><![CDATA[Date/Time]]></category>
		<category><![CDATA[Timezone]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=23</guid>
		<description><![CDATA[Applications built with the Remedy® Action Request System™ (ARS) client/server workflow engine are wonderful online transaction processing (OLTP) environments.  When it comes to getting meaningful information back out of ARS environments, the users and application designers get a bit befuddled on what is available to them; what’s right for their organization.]]></description>
			<content:encoded><![CDATA[<p>Applications built with the Remedy® Action Request System™ (ARS) client/server workflow engine are wonderful online transaction processing (OLTP) environments.  When it comes to getting meaningful information back out of ARS environments, the users and application designers get a bit befuddled on what is available to them; what’s right for their organization.</p>
<p><span id="more-23"></span>This paper takes an approach to enlighten those who wonder what options are available and to those who want more information from their ARS based applications.  They also want to know what the underlying considerations on each option are.</p>
<p>As someone, and it couldn’t have been a salesman, once said, “…you don’t get nothing for nothing.”   And it’s true!</p>
<p>So we’ll start with reporting and analysis options built right into the Remedy/ARS environment.  Then we’ll venture outside of the ARS environment and look at some other innovative ways to report and analyze information from any Remedy/ARS application.</p>
<h2>Remedy® User Tool Native Reporting Subsystem</h2>
<h3>Background</h3>
<p>The out-of-the-box method for reporting from an ARS environment comes with the installation of the Remedy User Tool, typically run from a client side workstation.</p>
<p>This “native reporting” capability is built off the results of a User Tool search capabilities.</p>
<p>With an ARS form open in “Search Mode”, there are three methods of searching records (tickets) in ARS applications.<br />
•	Search By Example<br />
•	Advanced Search<br />
•	Combination of both Search By Example and Advanced Search</p>
<p>When any one of the search methods is applied, a resulting returned set of records (zero to many) presented in the User Tool in a “split screen” form called the “Matching / Modify” panes.</p>
<p>With returned records in view, any or all of the returned records can be made available to the native reporting subsystem, by highlighting them in the matching pane.  The native reporting system is then evoked to perform report design or to apply a set of previously saved formatting specifications.</p>
<p>The native reporting specifications do not contain a rich set of capabilities.  However, simple calculations, sorting, grouping and summarization can be performed.  Stock reporting, with headers, detail and footers can be achieved.</p>
<p>All fields on or hidden on the searched form the user has access to are available to used in native report presentation specifications.  Once the specifications have been made, the presentation report can be executed and previewed, printed, saved to ASCII text file, or exported into comma separated value (CSV).  Using CSV allow other presentation tools outside the User Tool, such as MS-Excel, to be used for final presentation.  There is also a proprietary object structural export format, called “ARX”.  This format is used for portable transporting data between ARS systems and is typically not used for any presentation.</p>
<p>The report presentation specifications can be saved for later use.  The storage format has a file extension of AR Report (ARR) and, by default, is stored in the same location as Remedy User Tool macros, which have extensions of ARQ.  These ARR report definitions are ASCII text files with a proprietary translated specifications.  They can be viewed with an editor but it is not recommended to alter them outside the User Tool native reporting subsystem.</p>
<p>The ARR files, as like the ARQ macro files can alternatively be placed on a file server and shared between multiple ARS users.  The location of reports and macros are controlled by User Tool option setting “Search Path”.</p>
<p>As like old MS-DOS path environment variable, you can extend the places the User Tool looks for Remedy macros and reports by listing them in the Search Path separated by semi-colon (;).  This option setting can be found under Tools ? Options from the User Tool menubar.  Since version 5 of User Tool, both drive letter and Microsoft Universal Naming Convention (UNC) formats are supported.  UNC format is the recommended method.</p>
<p>Example Search Path showing local and a shared file server using UNC format:</p>
<p>C:\Program Files\AR System\HOME\ARCmds;\\MyServer\PublicShare\ARCmds</p>
<p>The native reporting subsystem is highly documented in the Remedy User Tool’s Help subsystem.  You can open the help document by selecting Help ? Contents and Index on the menubar.  Then select the “Reports” chapter.  The Help contains sections with tutorials including instructions on how to search, how to run reports, how to design specifications, and all the report features.</p>
<h3>Advantages</h3>
<p>•	Price; Built right into the Remedy User Tool; no other software nor licensing needed to use it.<br />
•	Even novices can quickly start generating reports.  With little training, end users are able to accomplish reporting.  Users can be self-trained from tutorials in the Help subsystem of the User Tool.<br />
•	Report execution (including the search portion) can be simplified by recording them a Remedy macro.  End users can simply pick the report macros from a list in the macro playback subsystem.  The resulting report can be presented on screen, printed, or saved to disk.<br />
•	Central design and availability of reports can be accomplished.  If using a shared storage (ie. “file server” environments) with Remedy macros and native report definitions, reports can be centrally designed and deployed without touching the users client workstations after pointing users search path to the shared environment.</p>
<h3>Disadvantages</h3>
<p>•	Performance.  The searching capability in a typical designed ARS application is usually satisfactory.  However, when passing records to the reporting subsystem there is a significantly noticeable delay in processing even as few as several hundred records.  Though the reporting system is almost entirely client side processing, more CPU power and/or more memory doesn’t increase performance.<br />
•	Limited report design features and functions, as mentioned earlier.<br />
•	Access to report objects are limited to the data the user has access from the searched form, only.  Data can’t be linked or joined with associated data.  In complex and well normalized ARS applications this becomes a problem because the fields on the form are just id fields for other forms/tables.  To compensate for this, data has to be de-normalized by the application designer which causes application growth of the size of the ARS application as stored on the ARS Server.<br />
•	No graphic capability; ASCII text representation only.  Charts, graphs, images, logos, background formatting such as “grey bar” are not possible.<br />
•	No cut/paste from “report preview”.  This is annoying when you just want to grab a portion of reported data for other presentation or quick communication, like to add to an email.</p>
<p>You are forced to report it to disk, open it with an ASCII text editor, then do cut/paste.  Annoying!</p>
<p>•	No search resulting previewed report.  No jump-to-page positioning on previewed report.  You can only scroll through it.<br />
•	Reports can’t be scheduled.  The native reporting subsystem is demand reporting only.  Reports can only be invoked by user running the User Tool and performing the steps needed to open a form, search for records, go into report subsystem, select the report formatting definitions, and execute the report.</p>
<h2>Remedy® Flashboards™</h2>
<h3>Background</h3>
<p>Remedy/Flashboards was a companion product (pre ARS version 6) now integrated in version 6, or greater, which allows a Remedy developer using the Remedy Administrator Tool, to design real time and historical charts, graphs, gauges, diagrams forms called “Flashboards”.  Flashboards can be viewed standalone, or added to existing Remedy forms to enhance the usability and functionality of ARS designed applications.</p>
<p>With a licensed version 6 of ARS Server, you are allowed to design up to three free Flashboards (a Flashboard is considered any one chart, graph, gauge or diagram).  When over three 3, additional licensing is required.  The system will not run the 4th Flashboard without a valid license pack.</p>
<p>The Flashboard design definitions are performed in the Remedy Administrator Tool.  They follow an extended feature and function set but are very much in line with designing Remedy ARS applications forms and workflow.</p>
<p>Therefore, the skill set of your existing application Remedy Administrator(s) is the target audience to build Remedy/Flashboards for ARS applications.  Training for Flashboards is available where you get your Remedy Administrator training classes.</p>
<h3>Advantages</h3>
<p>•	Integration with the ARS Framework.  Both Flashboard definitions and resulting aggregated data collected are stored in the ARS datastore.<br />
•	No issues with data types or availability of data.  Flashboards are inside the ARS product bubble.<br />
•	Flashboard design skills are an extension of the Remedy developer/Administrator skill sets.  Skilled Remedy Administrators pick up Flashboard design quickly.<br />
•	Flashboards can present real time information out of the ARS datastore.  All other reporting methods can only obtain, near real time.<br />
•	Flashboards can present long term historical information.  Other reporting methods may have to extract and store subsets of data to accomplish the same resulting in more systems and disk storage needs, in turn, creating more complexity.  With Flashboards, it all exists in the ARS datastore.</p>
<h3>Disadvantages</h3>
<p>•	Cost of Server components in the way of additional Flashboard based licenses and license maintenance adds up quickly.  Licenses are where Remedy makes their money; Contact your Remedy sales represetative.<br />
•	Additional ARS server capacity required.  Including size larger requirements of the ARS datastore because Flashboard definitions and aggregations are stored within and additional processing needs Flashboard server processes increase as you design and activate more Flashboards.<br />
•	Flashboards are not an end user reporting environment.  They require Flashboard developer skills.  Learning curve for non-skilled in Remedy/ARS development is significant.<br />
•	Flashboard design is application development; This can take time, especially if the organization doesn’t have the skill sets and must seek/contract from outside.<br />
•	Intent of Flashboards is real time and historical trending analysis.  The environment is not good for stock, list and form (like invoices, mailing labels, etc.) reporting.<br />
•	Poor Flashboard design can have significant impact ARS online transaction processing (OLTP) applications, which ARS environments are typically OLTP.</p>
<h2>Remedy® User Tool Native Reporting Enhanced by Crystal Reports®</h2>
<h3>Background</h3>
<p>The Remedy User Tool comes bundled with a run time version of the Crystal Reports Viewer and a Remedy supplied open database connectivity (ODBC) driver.</p>
<p>There are special hooks in the User Tool’s native reporting subsystem, to use report definitions created from a Crystal Reports Designer tool for presentation portion of the native reporting.</p>
<p>With a separately purchased Crystal Reports Designer tool license(s), all the rich report design feature sets of Crystal Reports is available.  You can then create the presentation portion, including graphs, charts, pivot tables, pivot charts, imbedded images, colors, fonts, and so on enable you to tie it into the User Tool native reporting subsystem by designing the presentation specification with Crystal Reports.</p>
<p>This implies having the skill sets to create those Crystal Report definitions.</p>
<p>How it works is very much an extension of the native reporting subsystem.  Instead of using the ARR report definition creator, the Crystal Reports (RPT) definitions developed using the Crystal Reports Designer Tool using the supplied Remedy ODBC are placed in the same folder as the ARR reports.</p>
<p>Report execution follows the same sequence in Searching to obtain a Matching / Modify list, then highlighting desired entries to be reported, then invoking the reporting subsystem.  Next, with the Crystal RPT definitions in place, instead of using ARR definitions, an RPT definition is selected for presentation.  The result launches the Crystal Report Viewer, processes the records against the definitions, and presents them in the viewer.</p>
<p>The resulting presentation allows all the functionality of the Crystal Reports Viewer, including zooming, searching text on the report, printing options, printer selection, saving to other formats such as MS-Word and Excel, and more.</p>
<p>The report designer must use a copy of the Crystal Report Designer Tool and the Remedy ODBC to contact the ARS datastore.  In designing the report, the Remedy ODBC used the credentials of the designer; it prompts them for their Remedy login ID and they are stored in the RPT definitions so that the end user doesn’t get prompted.</p>
<p>Under the Remedy ODBC, there is a restriction (at run time, not at design time) that you can only add one “form” to the report as its datasource.  It does not allow any form (table) linking; it is as in the User Tool, you only have access to one datasource object.  If you attempt to link forms, Crystal Designer will let you.  However, at run time, it will fail with an ODBC run time error.</p>
<p>The good new is, you can create Crystal sub-reports on your report using the Remedy ODBC.  This effectively gives you a pseudo one level of linking and solves a few normalized data issues.  However, you can’t have sub-reports inside sub-reports, by design by the Crystal Designer.  So again, you only have a pseudo one level.  But that’s one better than zero with the ARR definitions designer.</p>
<p>IMPORTANT:  At design time using the Crystal Reports Designer, the report developer is typically testing their definitions by running their report.  This uses the Remedy ODBC to pass it’s SQL criteria to return a set of records (a dynaset) and uses it’s local record selection definitions to filter down to the final dynaset before applying the presentation definitions.</p>
<p>When the report definitions are placed and made available to the User Tool native reporting subsystem, the SQL definitions and record selection definitions are ignored.<br />
If you recall the earlier explanation of the native reporting subsystem; it gets it’s record set (dynaset) from the result of Searching a ARS form.  This passing of the dynaset is followed here too.  The dynaset is handed to the Crystal Report Viewer and the report definitions for finishing the presentation.  Sorting and grouping definitions are applied, then the presentation is completed.</p>
<p>Finally, be aware the version of the Crystal Report Viewer bundled in the Remedy User Tool.  It has been historically one version less than the current version of Crystal Reports upon Remedy User Tool version release.  In creating your own Crystal Report definitions, you probably will have to “Save As” a version which matches the bundled viewer.  As a result, some of the some of the latest added Crystal Report features may not be available to you.  It takes a pretty advanced developer before this is a make/break issue but it should be known.</p>
<h3>Advantages</h3>
<p>•	Presentation includes all Crystal Reports built-in functionalities, graphs, charts, lists, including pivot tables, pivot charts, imbedded images, colors, fonts, conditional formatting, drill-down reports.<br />
•	Central Design and Administration still can be accomplished.  If using a shared storage (ie. “file server” environments) with Remedy macros and native report definitions, reports can be centrally designed and deployed without touching the users client workstations after pointing users search path to the shared environment.<br />
•	Crystal Sub-reports create a pseudo one level of linking data.  This can’t be done with the ARR native report designer.<br />
•	Reports can be scheduled, if additional purchase of Seagate Crystal Report product, “Crystal Enterprise” (or third party enterprise scheduler product).  Expect additional costs for hardware (servers) to run the Enterprise environment.  If installed on your ARS platform, it could affect it’s performance.  Also, reports must have proper record selection criteria designed into them because they won’t be invoked through the User Tool.<br />
•	Useful alternate Crystal Report output storage formats available, such as HTM, PDF, DOC, RTF and XLS.<br />
•	Reports can be text searched, and viewing size can be zoomed in or out.<br />
•	Print reports to any printer.</p>
<h3>Disadvantages</h3>
<p>•	Additional Software Costs.  At least one copy of Crystal Reports Designer must be purchased.<br />
•	Additional Skill sets Required.  Someone will need to learn how (or contracted) to design reports using the Crystal Reports Designer.<br />
•	Still Performance Issues.  Remedy ODBC (at version 5) is slow.  Using sub-reports slows report generation further.<br />
•	Crystal Reports available to the User Tool native reporting subsystem can’t be scheduled under the User Tool.  They can only be invoked by user running the User Tool and performing the steps needed to open a form, search for records, go into report subsystem, select the report formatting definitions, and execute the report.</p>
<h2>Using Crystal Reports® Directly Against a Remedy/ARS Datastore</h2>
<h3>Background</h3>
<p>If you have Crystal Reports Designer, or one of it’s derivatives such as Crystal Enterprise Report Designer, you have the option to develop reports outside of the ARS environment by creating your own native access path to your ARS datastore.</p>
<p>Typically, this is with ODBC or MDAC drivers for your ARS database type, such as Oracle, MS-SQL/Server, Sybase, and Informix.</p>
<p>This implies you’ll need some sort of database level authentication (ID and password), which is required in the ODBC or MDAC configuration.  You’ll configure your data access in the Crystal Designer Tool and it will become part of your RPT report definitions.</p>
<p>With this method, you are outside the Remedy User Tool environment.  You won’t be able to register the RPT report definitions with the User Tool.  If you try, they fail at run time because the User Tool is expecting to shove it’s dynaset with the RPT definitions to the Crystal Report View.  The result is it gets confused and pukes (returns an error).</p>
<p>So running reports has to come outside of Remedy User environment.  You’ll either have to buy copies of Crystal Reports with the “complile to .EXE” capability, letting users then run the EXE (each will need a copy of the ODBC configuration and a database level ID and password), or buy into a Seagate Crystal Enterprise environment or other enterprise scheduler product.</p>
<p>From a designers standpoint, you can design reports like an other SQL reporting environment.  You can link/join data to your hearts content.  You can slam the datastore and return data as efficiently or in-efficiently with the speed datastore can return the dynasets over the network.</p>
<p>However, this is an Remedy ARS datastore; A “Remedy-ized” database.  There are things you need to know if you’re considering reporting directly against the database.</p>
<p>Forms do not translate as Tables in the ARS database; they end up as table “Views”.  The actual underlying tables do exist but are cryptic; a convention starting with “T”, “H”, “C”, or “B” followed by a number.  There’s even more; certain “Remedy” field types cause a decomposition further into “H” tables (history/diary fields), “C” tables (long character fields), and “B” tables (attachment/blob fields). Therefore, forms are found in the database as Views and some data types are found else ware outside the view.  If you need to report against some of the decomposed structure, you’ll have to extra work to determine where they are in the tables.</p>
<p>Going to the table level has draw backs.  The number portion of the table name is generated and when a Remedy developer using Remedy Administrator Tool.  So, T446 exists because of the order which it was created.  This becomes a problem at certain times.  Certain developer activities cause the entire table to be dropped and a re-created as a new one with a next available number.  This also can happen when upgrading to a new version of ARS engine.  This also will happen if you move your ARS application to a different server.  So, reports will break, requiring the new table location be set by the report developer.</p>
<p>Menu Selection fields: Are an example of a decomposed field on a form.  What is stored on the form is a zero relative number of the menu selection value.  The label for the value is decomposed into one of those “T” tables.  You always have the option to use a Crystal Reports formula to provide the label.  This will change only if the ARS application changes the values on the menu field.</p>
<p>Example Using Crystal Reports Formula Syntax Translating a ARS Menu Field Type.</p>
<p>[“Draft”, “Reported”, “Assigned”, “In Progress”, “Resolved”, “Closed”, “Cancelled”, “Archive”, “Delete”][{INCIDENT.STATUS}+1];</p>
<p>Example Using Crystal Basic Syntax Translating a ARS Menu Field Type..</p>
<p>Value = Choose([INCIDENT.STATUS]+1,&#8221;Draft&#8221;, ”Reported”, “Assigned”, “In Progress”, “Resolved”, “Closed”, “Cancelled”, “Archive”, “Delete”)</p>
<p>Date, Date/Time Fields:  Remedy date storage format is an integer value representing the number of seconds since (or before, a negative integer) an epoch date of January 1, 1970, at 00:00 UTC.  Yes, Universal Coordinated Time (UTC).  You’ll have to do the math and make the time zone and seasonal adjustments (aka. Daylight Savings) to make it dates meaningful.</p>
<p>The good news is products do exist such as Cogniza’s “UFL Timezone Functions” (<a href="http://www.cogniza.com/products" style="color: #ffcc33" class="linkification-ext" title="Linkification: http://www.cogniza.com/products">www.cogniza.com/products</a>) which eliminate this issue by simply adding some user function libraries (UFL) available to the Crystal Reports Designer.</p>
<p>Example Crystal Syntax Remedy Date Conversion Formula Using Cogniza UFL Timezone Functions:</p>
<p>EpochToLocalDate(“INCIDENT.SUBMIT_DATE”,”US Central Timezone”,”True”)</p>
<h3>Advantages</h3>
<p>•	Performance is as good as your native database driver can provide.  This is typically very good performance in reading thousands and even millions of rows of data in reasonable times.</p>
<p>In reality, reports performance screams in comparison to using the Remedy ODBC driver.<br />
•	Presentation includes all Crystal Reports built-in functionalities, graphs, charts, lists, including pivot tables, pivot charts, imbedded images, colors, fonts, conditional formatting, drill-down reports.<br />
•	Linking/Joining data can be performed, without restriction.<br />
•	Reports can be scheduled, if additional purchase of Seagate Crystal Report product, “Crystal Enterprise”.  This also typically requires additional hardware (servers) to run the Enterprise environment.  If installed on your ARS platform, it could affect it’s performance.  Also, reports must have proper record selection critieria designed into them because they won’t be invoked through the User Tool.</p>
<p>Purchasing a third party enterprise scheduler product is another option.</p>
<p>•	Useful alternate Crystal Report output storage formats available, such as HTM, PDF, DOC, RTF and XLS.<br />
•	Reports can be text searched, and viewing size can be zoomed in or out.<br />
•	Print reports to any printer.</p>
<h3>Disadvantages</h3>
<p>•	Removes demand report capability; choosing native access to the ARS datastore means the reports can’t be made available under Remedy User Tool.</p>
<p>However, one alternative is to require person to have execution time version of Crystal Reports or access to a Crystal Enterprise environment (access to the enterprise scheduler product of choice) to demand schedule a report, ie. able to run a desired report right now.</p>
<p>Still another alternative is to use both methods, the Remedy ODBC with Remedy macro stored on a central file server for demand reporting available through the Remedy User Tool, and a native database driver and Crystal Enterprise (or third party enterprise scheduler) for scheduled reporting and analysis.</p>
<p>•	Decomposed Remedy Type Fields for History Fields, Long Character Fields, Blob (Attachment) fields, and menu selection fields creates complexity and administration coordination issues between ARS application development and ARS reporting functions/organizations.</p>
<p>•	A method for converting date field storage format to presentation will have to be addressed.  If dates and times are not depicted accurately, the reporting environment won’t have creditability.</p>
<p>•	Slightly more Database Administrator (DBA) activities.  Database level id’s and passwords will have to be established and maintained.  It is highly recommended database level access used for reporting should be “read-only” to the tables and view objects in the ARS datastore.</p>
<h2>Using Microsoft™ Access® Directly Against a Remedy/ARS Datastore</h2>
<h3>Background</h3>
<p>The external data link capabilities built into Microsoft Access makes it also a consideration for extracting and reporting from a Remedy ARS datastore.<br />
Just as using a Crystal Reports with a database level ID and password configured into native driver ODBC or MDAC configuration, MS-Access can be configured through it’s external “link table” to use ODBC and/or MDAC to register tables and views as table objects in the MS-Access database.</p>
<p>Then as in any MS-Access application, the MS-Access query and report designer tools can be used to create demand and scheduled reports.</p>
<p>Even though MS-Access is deemed a personal productivity database, it’s report definition features and expression functions are pretty rich allowing professional looking reports, charts, graphs, lists, pivot tables and pivot charts.  Developers skilled in MS-Access report design can design reports against a Remedy datastore.</p>
<p>However, the considerations and caveats follow the same issues as noted in the “Using Crystal Reports Directly Against a Remedy Datastore” section earlier.  To summarize…</p>
<p>•	Data can be linked/joined.<br />
•	Forms are seen as database Views.<br />
•	Table decomposition for History/Diary Fields, Long Character, and Blobs must be addressed.<br />
•	A Date and Time conversion method will have to be addressed.  This issue can be easily eliminated with Cogniza’s “VB Timezone Functions” (<a href="http://www.cogniza.com/products" style="color: #ffcc33" class="linkification-ext" title="Linkification: http://www.cogniza.com/products">www.cogniza.com/products</a>).</p>
<p>•	Menu selection fields can either be accomplished by tracing down the “T” tables for their values or using an MS-Access expression language such as the following example…</p>
<p>Choose([INCIDENT.STATUS]+1,&#8221;Draft&#8221;, ”Reported”, “Assigned”, “In Progress”, “Resolved”, “Closed”, “Cancelled”, “Archive”, “Delete”)</p>
<p>MS-Access environment lends itself easily to demand type of reporting, but not to scheduled generation of reporting.</p>
<p>However, scheduled report generation can be accomplished by combining MS-Windows Task Scheduler to run MS-Access reports and queries against your ARS based datastore.</p>
<p>Keep in mind, MS-Task Scheduler has limited functionality and maturity in comparison to enterprise scheduling products. The setup can be accomplished but the administrative burden in setup and maintenance is higher than enterprise scheduler products.  MS-Task Scheduler is bundled in the cost of your Microsoft Windows operating system so to most organizations, it appears to be free.</p>
<h3>Advantages</h3>
<p>•	Performance is as good as your native database driver can provide which is still much better than the provided Remedy ODBC driver.<br />
•	Linking/Joining data can be performed, without restriction.<br />
•	All rich features and functionalities in Crystal Reports presentation are available.<br />
•	Reports can be scheduled, if willing to support the administrative burden of MS Task Scheduler or purchase of an enterprise scheduler product.<br />
•	MS-Access querying and reporting skills are prevalent in the business community.  They can be easily taught; many companies have internal MS-Access training programs.  Even the most basic MS-Access querying and reporting training could allow users to generate professional looking reports, charts, graphs from a ARS datastore.</p>
<h3>Disadvantages</h3>
<p>•	You again loose the demand report capability under the Remedy User Tool; Choosing native database access to the ARS datastore means those reports can’t be made available under Remedy User Tool.  The users will have to get used to running demand reports from the designed MS-Access application.<br />
•	Decomposed Remedy Type Fields for History Fields, Long Character Fields, Blob (Attachment) fields, and menu selection fields creates complexity and administration coordination issues between ARS application development and ARS reporting functions/organizations.<br />
•	A method for converting date field storage format to presentation will have to be addressed.  If dates and times are not depicted accurately, the reporting environment won’t have creditability.<br />
•	Slightly more Database Administrator (DBA) activities.  Database level id’s and passwords will have to be established and maintained.</p>
<p>IMPORTANT:  It is highly recommended database level access used for reporting should be “read-only” to the tables and view objects in the ARS datastore.  This is especially important in an MS-Access environment so that the ARS database can not be  written to externally.  Writing on an ARS datastore outside the ARS server environment can corrupt the ARS database.</p>
<h2>Conclusion</h2>
<p>“Choose your evil”!  Or should it be said more positively as, “Choose your angel”.</p>
<p>You can see there are many options and many considerations.  Hopefully this paper helped enlighten a pathway to getting at your additional value from your ARS based applications because only you know your organization’s desires, direction, skill sets, budgets, restrictions, tolerance for risk, innovations, and goals.</p>
<p>Maybe you’ve found both short term ideas which can start applied today along with options to move to a long term ARS reporting strategy.</p>
<p>We hope this information has helped you extend your Remedy/ARS investment in your organization.</p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2005/11/03/considerations-for-reporting-against-remedy-ars-based-applications/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Cogniza announces the release of UFLTimeZone for Crystal Reports.</title>
		<link>http://cogniza.com/wordpress/2002/06/17/cogniza-announces-the-release-of-ufltimezone-for-crystal-reports/</link>
		<comments>http://cogniza.com/wordpress/2002/06/17/cogniza-announces-the-release-of-ufltimezone-for-crystal-reports/#comments</comments>
		<pubDate>Mon, 17 Jun 2002 16:34:11 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Business Objects Enterprise]]></category>
		<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Remedy ARS]]></category>
		<category><![CDATA[Business Objects]]></category>
		<category><![CDATA[Date/Time]]></category>
		<category><![CDATA[Timezone]]></category>
		<category><![CDATA[UFL]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=24</guid>
		<description><![CDATA[Cogniza announces the release of UFLTimeZone for Crystal Reports.  UFLTimeZone for Crystal Reports provides date and time zone conversion functions that give new options when using Crystal Reports with Remedy’s Action Request (AR) System.]]></description>
			<content:encoded><![CDATA[<p><em>For Immediate Release</em></p>
<p>Monday, June 17, 2002 &#8211; Cogniza announces the release of UFLTimeZone for Crystal Reports.  UFLTimeZone for Crystal Reports provides date and time zone conversion functions that give new options when using Crystal Reports with Remedy’s Action Request (AR) System.  To understand the value of this new product, some background on Remedy is appropriate.</p>
<p><span id="more-24"></span></p>
<h2>Background</h2>
<p>Remedy AR System, from Peregrine Systems, stores dates in ‘Epoch date’ format.  An Epoch date is the number of elapsed seconds since January 1, 1970 at Midnight Greenwich Mean Time.  To provide a more human-understandable value, the Remedy ODBC driver converts this value to the familiar date and time format, using the user’s regional settings, including time zone and seasonal adjustments (e.g. Daylight Savings).</p>
<h2>Challenges</h2>
<p>One of the challenges for developers, however, when working with Remedy’s AR System is the one-table-per-query restriction imposed by the Remedy ODBC driver.  When working with Crystal Reports and Remedy, this restriction prevents more that one table or view from being used in a report.<br />
To address this issue when using Crystal Reports within the Remedy ODBC driver, developers use sub-reports or request that the Remedy System Administrator creating a join table in the Remedy database.  These solutions, while addressing the immediate need, lead to decreased database and report performance, increased report development time and increased demands on the Remedy System Administrator’s time.  Fortunately, there is another solution to these challenges!</p>
<h2>Solution</h2>
<p>The solution to the issue is to use a database driver, supplied by Crystal Reports or the database vendor, in conjunction with the functions provided by UFLTimeZone for Crystal Reports.  Essentially, UFLTimeZone for Crystal Reports provides the Epoch date and time zone conversion functions that would have been provided by the Remedy ODBC driver.</p>
<h3>Features</h3>
<p>UFLTimeZone for Crystal Reports offers these features:<br />
•	Conversions between Epoch dates and Windows date times.<br />
•	Epoch date and Windows’ date time adjustments for any of the world’s 75 time zones.<br />
•	Automatic adjustments for any of the world’s seasonal variations (e.g. Daylight Savings in North America).</p>
<h3>Benefits</h3>
<p>The benefits to using UFLTimeZone for Crystal Reports in conjunction with a non-Remedy ODBC driver are:<br />
•	Decrease the demands on the Remedy System Administrator’s time by eliminating Remedy Join Forms<br />
•	Reduce the number of Remedy client licenses, by generating reports externally from the Remedy client<br />
•	Reduce report development time, by using the latest version of Crystal Reports, Crystal Enterprise or Seagate Info</p>
<h2>Free Trial</h2>
<p>To download a 30-day-trial version of UFLTimeZone for Crystal Reports, visit <a href="http://www.cogniza.com/products/ufltimezone/UFLTimeZoneW_30.exe" style="color: #ffcc33" class="linkification-ext" title="Linkification: http://www.cogniza.com/products/ufltimezone/UFLTimeZoneW_30.exe">http://www.cogniza.com/products/ufltimezone/UFLTimeZoneW_30.exe</a>.</p>
<h2>About Cogniza</h2>
<p>Founded in 1996, Cogniza is a US company, headquartered in Minneapolis, Minnesota.</p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2002/06/17/cogniza-announces-the-release-of-ufltimezone-for-crystal-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

