<?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</title>
	<atom:link href="http://cogniza.com/wordpress/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>Crystal Reports: Dynamic Images</title>
		<link>http://cogniza.com/wordpress/2010/03/15/crystal-reports-dynamic-images/</link>
		<comments>http://cogniza.com/wordpress/2010/03/15/crystal-reports-dynamic-images/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 20:22:31 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Technique]]></category>

		<guid isPermaLink="false">http://cogniza.com/wordpress/?p=167</guid>
		<description><![CDATA[Use a conditional formula to dynamically change the location of a report&#8217;s image.

Add an image to the report (Insert &#124; Picture).  This image will act as a placeholder.  Ensure that the placeholder is the same size as the one that will be dynamically loaded, otherwise the image will be scaled.
Change the image&#8217;s Graphic Location:

right [...]]]></description>
			<content:encoded><![CDATA[<p>Use a conditional formula to dynamically change the location of a report&#8217;s image.<span id="more-167"></span></p>
<ol>
<li>Add an image to the report (Insert | Picture).  This image will act as a placeholder.  Ensure that the placeholder is the same size as the one that will be dynamically loaded, otherwise the image will be scaled.</li>
<li>Change the image&#8217;s Graphic Location:
<ul>
<li>right click image</li>
<li>select Format Graphic&#8230;</li>
<li>select Picture tab</li>
<li>click the conditional-formula button (looks like x+2)</li>
<li>set the formula&#8217;s text to the name of the formula or parameter field that will contain the image&#8217;s URL</li>
<li>save the formula and click the OK button</li>
</ul>
</li>
<li>Save the report</li>
</ol>
<h2>Download</h2>
<p><a href="http://cogniza.com/wordpress/wp-content/uploads/2010/03/Dynamic-Image.11.5.rpt_.zip">Crystal Report Dynamic Image Sample</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2010/03/15/crystal-reports-dynamic-images/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>BusinessObjects SDK: Change a Universe&#039;s Data Connection</title>
		<link>http://cogniza.com/wordpress/2009/11/12/businessobjects-sdk-change-a-universes-data-connection/</link>
		<comments>http://cogniza.com/wordpress/2009/11/12/businessobjects-sdk-change-a-universes-data-connection/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 15:47:11 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Business Objects Enterprise]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[BusinessObjects-SDK]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=128</guid>
		<description><![CDATA[Change a Universe&#8217;s Data Connection without using the Universe COM SDK.

'get the Universe infoObjects
Dim universeInfoObject As InfoObject = infoStore.Query("SELECT SI_ID, SI_NAME, SI_DATACONNECTION FROM CI_APPOBJECTS WHERE SI_ID=" &#038; )(1)
'cast InfoObject into a Universe
Dim universe As BusinessObjects.Enterprise.Desktop.Universe = CType(universeInfoObject, Universe)
With universe
    'clear all data connections
    .DataConnections.Clear()
    'add new [...]]]></description>
			<content:encoded><![CDATA[<p>Change a Universe&#8217;s Data Connection without using the Universe COM SDK.<span id="more-128"></span></p>
<p><code><br />
'get the Universe infoObjects<br />
Dim universeInfoObject As InfoObject = infoStore.Query("SELECT SI_ID, SI_NAME, SI_DATACONNECTION FROM CI_APPOBJECTS WHERE SI_ID=" &#038; <info Object Id>)(1)</p>
<p>'cast InfoObject into a Universe<br />
Dim universe As BusinessObjects.Enterprise.Desktop.Universe = CType(universeInfoObject, Universe)</p>
<p>With universe<br />
    'clear all data connections<br />
    .DataConnections.Clear()</p>
<p>    'add new data connection<br />
    .DataConnections.Add(<data Connection Id>)</p>
<p>    'save to repository<br />
    .Save()<br />
End With</p>
<p></data></info></code></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2009/11/12/businessobjects-sdk-change-a-universes-data-connection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BusinessObjects SDK: Copy one InfoObject&#039;s File to Another InfoObject</title>
		<link>http://cogniza.com/wordpress/2009/11/12/businessobjects-sdk-copy-one-infoobjects-file-to-another-infoobject/</link>
		<comments>http://cogniza.com/wordpress/2009/11/12/businessobjects-sdk-copy-one-infoobjects-file-to-another-infoobject/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 15:32:55 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Business Objects Enterprise]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[BusinessObjects-SDK]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=123</guid>
		<description><![CDATA[Use the BusinessObjects SDK to copy files between two InfoObjects.  This is useful when the source is a 'template' object (e.g. Crystal Report) that will be deployed to one or more targets.]]></description>
			<content:encoded><![CDATA[<p>Use the BusinessObjects SDK to copy files between two InfoObjects.  This is useful when the source is a &#8216;template&#8217; object (e.g. Crystal Report) that will be deployed to one or more targets.<span id="more-123"></span></p>
<p><code><br />
'get the source and target infoObjects<br />
Dim sourceInfoObject As InfoObject = infoStore.Query("SELECT SI_ID, SI_NAME, SI_FILES FROM CI_INFOOBJECTS WHERE SI_ID=" &#038; sourceId)(1)</p>
<p>Dim targetInfoObject As InfoObject =  infoStore.Query("SELECT SI_ID, SI_NAME, SI_FILES FROM CI_INFOOBJECTS WHERE SI_ID=" &#038; targetId)(1)</p>
<p>'get the desired file from FRS<br />
Dim sourceFile As File = sourceInfoObject.Files(1)</p>
<p>'create buffer and size appropriately<br />
Dim buffer As Byte() = new Byte(sourceFile.Size) {}</p>
<p>'copy file to buffer<br />
sourceFile.CopyTo(buffer)</p>
<p>'get the target file from the FRS, using the same index as the source<br />
Dim targetFile As File = targetInfoObject.Files(sourceFile.NthFile)</p>
<p>'copy buffer to target file<br />
targetFile.Overwrite(buffer)</p>
<p>'save to repository<br />
targetInfoObject.Save<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2009/11/12/businessobjects-sdk-copy-one-infoobjects-file-to-another-infoobject/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL Server: Date Arithmetic</title>
		<link>http://cogniza.com/wordpress/2009/11/05/sql-server-date-arithmetic/</link>
		<comments>http://cogniza.com/wordpress/2009/11/05/sql-server-date-arithmetic/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 02:32:24 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[Date]]></category>
		<category><![CDATA[T-SQL]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=106</guid>
		<description><![CDATA[Useful, dynamically-generated dates for SQL Server.

--[1st day  of current month]: use the GetDate(), Month(), and Year() functions to determine the current month and year.   Build a string using these values in MM/01/YYYY format.  Convert the String to DateTime.
 CAST( CAST( Month(GetDate()) AS Char(2) ) + '/01/' + CAST( Year(GetDate()) AS Char(4)) [...]]]></description>
			<content:encoded><![CDATA[<p>Useful, dynamically-generated dates for SQL Server.<span id="more-106"></span><br />
<code><br />
--[1st day  of current month]: use the GetDate(), Month(), and Year() functions to determine the current month and year.   Build a string using these values in MM/01/YYYY format.  Convert the String to DateTime.<br />
 CAST( CAST( Month(GetDate()) AS Char(2) ) + '/01/' + CAST( Year(GetDate()) AS Char(4)) AS DateTime)<br />
</code><code><br />
--[Last day of current month]: add a month to [1st day of current month], then subtract a day.<br />
DateAdd(m, 1, CAST( CAST( Month(GetDate()) AS Char(2) ) + '/01/' + CAST( Year(GetDate()) AS Char(4)) AS DateTime)) -1<br />
</code><code><br />
--[1st day of prior month]: subtract a month from [1st day of current month].<br />
DateAdd(m, -1, CAST( CAST( Month(GetDate()) AS Char(2) ) + '/01/' + CAST( Year(GetDate()) AS Char(4)) AS DateTime))<br />
</code><code><br />
--[Last day of prior month]:  subtract a day from [1st day of current month].<br />
CAST( CAST( Month(GetDate()) AS Char(2) ) + '/01/' + CAST( Year(GetDate()) AS Char(4)) AS DateTime) -1<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2009/11/05/sql-server-date-arithmetic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crystal Reports: FractionToDecimal() Function</title>
		<link>http://cogniza.com/wordpress/2009/09/08/crystal-reports-fractiontodecimal-function/</link>
		<comments>http://cogniza.com/wordpress/2009/09/08/crystal-reports-fractiontodecimal-function/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 18:26:11 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Functions]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=109</guid>
		<description><![CDATA[Converts a fractional value in the format of Numerator/Denominator or Whole + Numerator/Denominator to a decimal value.


//Assumes values in the following formats:
//99 - integer value
//99.9 - decimal value
//N/D - numerator/denominator
//M N/D - whole + numerator/denominator
Function (Stringvar value)
Local Numbervar whole := 0;
Local Stringvar fraction;
//
value := trim(value);
//integer or decimal format
If IsNumeric(value) Then
    ToNumber(value)
Else (
 [...]]]></description>
			<content:encoded><![CDATA[<p>Converts a fractional value in the format of Numerator/Denominator or Whole + Numerator/Denominator to a decimal value.<br />
<span id="more-109"></span><br />
<code><br />
//Assumes values in the following formats:<br />
//99 - integer value<br />
//99.9 - decimal value<br />
//N/D - numerator/denominator<br />
//M N/D - whole + numerator/denominator<br />
Function (Stringvar value)</p>
<p>Local Numbervar whole := 0;<br />
Local Stringvar fraction;</p>
<p>//<br />
value := trim(value);</p>
<p>//integer or decimal format<br />
If IsNumeric(value) Then<br />
    ToNumber(value)</p>
<p>Else (</p>
<p>    //whole + numerator/denominator<br />
    If InStr(value, " ")>0 Then (</p>
<p>        whole := ToNumber(Split(value, " ")[1]);<br />
        fraction := Split(value, " ")[2];</p>
<p>    )</p>
<p>    //numerator/denominator<br />
    Else (</p>
<p>        fraction := value;</p>
<p>    );</p>
<p>    Local Numbervar numerator := ToNumber(Split(fraction, "/")[1]);<br />
    Local Numbervar denominator := ToNumber(Split(fraction, "/")[2]);</p>
<p>    whole + (numerator / denominator);<br />
)<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2009/09/08/crystal-reports-fractiontodecimal-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crystal Reports: Strategy to Localize a Report (labels)</title>
		<link>http://cogniza.com/wordpress/2009/07/09/crystal-reports-strategy-to-localize-a-report-labels/</link>
		<comments>http://cogniza.com/wordpress/2009/07/09/crystal-reports-strategy-to-localize-a-report-labels/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 15:05:06 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Business Objects Enterprise]]></category>
		<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technique]]></category>
		<category><![CDATA[Localization]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=55</guid>
		<description><![CDATA[Create a Crystal Report that dynamically recalculate its labels based on the Workstation&#8217;s localization settings.

ContentLocale
Crystal Reports XI introduced a keyword named &#8216;ContentLocale&#8217;. This keyword returns the machine&#8217;s locale setting (e.g. &#8216;en_US&#8217; for English (US)).  This value is set in Windows&#8217; Regional Settings Control Panel.
However, this keyword can only be used in formulae that are executed [...]]]></description>
			<content:encoded><![CDATA[<p>Create a Crystal Report that dynamically recalculate its labels based on the Workstation&#8217;s localization settings.</p>
<p><span id="more-55"></span></p>
<h3>ContentLocale</h3>
<p>Crystal Reports XI introduced a keyword named &#8216;ContentLocale&#8217;. This keyword returns the machine&#8217;s locale setting (e.g. &#8216;en_US&#8217; for English (US)).  This value is set in Windows&#8217; Regional Settings Control Panel.</p>
<p>However, this keyword can only be used in formulae that are executed during the report&#8217;s <a href="http://www.cogniza.com/blog/?p=12">Second Pass</a>. The following Record Selection Formula, for example, will generate an error:</p>
<p><code>{my_table.localeName}=ContentLocale </code></p>
<h3>Custom Functions</h3>
<p>This keyword, however, can be used in combination with a Report Custom Function to dynamically and transparently apply localization settings when a report is viewed, even reports that have been saved with data or have been scheduled using Business Objects Enterprise.</p>
<p>//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
// Return a localized string for a given Key and Language.<br />
//&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
Function (Stringvar Key, Stringvar Language)</p>
<p>//define array of keys that are used by Formula fields<br />
Stringvar Array Keys:=["COUNTRY","REGION","CITY"];</p>
<p>//define an array of localized strings for each required language; ensure localized strings are same position as the Key array (correlated arrays).</p>
<p>//determine which array to use<br />
Stringvar Array Values;<br />
Select Language<br />
Case &#8220;en_US&#8221;: Values:=["Country","State","City"]<br />
Case &#8220;it_IT&#8221;: Values:=["Paese","Dichiari","Citta"]<br />
Case &#8220;fr_FR&#8221;: Values:=["Pays","S","C"]<br />
Default: Values:=["Country","State","City"]<br />
;</p>
<p>//set value&#8217;s default value to the Key; useful for debugging purposes.<br />
Stringvar value:=Key;</p>
<p>//iterate through Key array&#8230;<br />
Numbervar i;<br />
for i := 1 To Ubound(Keys) do (<br />
//if value in array matches the specified value, return the value from the localized array<br />
if Keys[i] = Key then (<br />
value:=Values[i];<br />
exit for<br />
)<br />
);</p>
<p>//return value<br />
value;</p>
<h3>Formula Fields</h3>
<p>Create a Formula Field that will act as a label for each desired Key.  Add it to the report&#8217;s canvas.</p>
<p>//{@Country}<br />
getLocalizedString (&#8220;COUNTRY&#8221;, ContentLocale)</p>
<p>//{@Region}<br />
getLocalizedString (&#8220;REGION&#8221;, ContentLocale)</p>
<p>//{@City}<br />
getLocalizedString (&#8220;CITY&#8221;, ContentLocale)</p>
<h4>Advantages</h4>
<ul>
<li>Rapid development and deployment.</li>
<li>Executes during &#8216;view&#8217; time.</li>
<li>Can be saved to Repository and shared with other reports.</li>
</ul>
<h4>Limitations</h4>
<ul>
<li>Crystal Reports is required to maintain the logic and publish changes to the Repository.</li>
<li>Array of Key/Values limited to 1000 items.</li>
</ul>
<h3>Summary</h3>
<p>This approach should help ease the burden of localizing the labels contained in a Crystal Report.</p>
<h3>Download</h3>
<p><a href="/wordpress/wp-content/Report Localization [custom function].12.000.rpt" target="_new">Sample report</a><br />
<a href="/wordpress/wp-content/xtreme.zip" target="_new">Sample database</a></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2009/07/09/crystal-reports-strategy-to-localize-a-report-labels/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adobe Acrobat &#8211; Printing Legal Landscape Documents</title>
		<link>http://cogniza.com/wordpress/2008/05/01/adobe-acrobat-printing-legal-landscape-documents/</link>
		<comments>http://cogniza.com/wordpress/2008/05/01/adobe-acrobat-printing-legal-landscape-documents/#comments</comments>
		<pubDate>Thu, 01 May 2008 12:55:26 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Adobe Acrobat]]></category>
		<category><![CDATA[Crystal Reports]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=107</guid>
		<description><![CDATA[By default, Adobe Acrobat Reader will scale a landscape-oriented, legal-sized document to letter-sized paper.  Fortunately, this scaling can be easily removed.]]></description>
			<content:encoded><![CDATA[<p>By default, Adobe Acrobat Reader will scale a landscape-oriented, legal-sized document to letter-sized paper.  Fortunately, this scaling can be easily removed.</p>
<p><span id="more-107"></span></p>
<p>To remove this scaling, check the &#8216;Choose Paper Source by PDF page size&#8217; option in Acrobat Reader&#8217;s Print dialog.</p>
<p><a href="/wordpress/wp-content/uploads/2008/05/acrobat-print.png"><img class="alignnone size-full wp-image-108" title="acrobat-print" src="/wordpress/wp-content/uploads/2008/05/acrobat-print.png" alt="Acrobat Reader\'s Print Dialog" width="500" height="476" /></a></p>
<p>To make this setting permanent, add a new DWORD value in the HKCU\Software\Adobe\Adobe Acrobate\8.0\AVGeneral key. Set its Name to &#8216;bprintSetPageSize&#8217;, its Data to &#8216;1&#8242;, and its Base to &#8216;Hexidecimal&#8217;.</p>
<p><strong>Registry Entry</strong><br />
This entry will create a new DWORD entry in the &#8216;AVGeneral&#8217; key:<br />
[HKEY_CURRENT_USER\Software\Adobe\Adobe Acrobat\8.0\AVGeneral]<br />
&#8220;bprintSetPageSize&#8221;=dword:00000001</p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2008/05/01/adobe-acrobat-printing-legal-landscape-documents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crystal Reports: Array_PushEx() Function</title>
		<link>http://cogniza.com/wordpress/2008/01/09/crystal-reports-array_pushex-function/</link>
		<comments>http://cogniza.com/wordpress/2008/01/09/crystal-reports-array_pushex-function/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 20:26:20 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Functions]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=105</guid>
		<description><![CDATA[Add a unique string value to an array of string values. Uses the delimiter to convert the value into an array.

Function (Stringvar Array Items, Stringvar Values, Stringvar Delimiter)
    Stringvar Array Temp:=Split(Values,Delimiter);
    Numbervar i;
    For i := 1 To Ubound(Temp) Do (
        If Array_Contains (Items, Temp[i]) = False Then (
            Redim Preserve Items[Ubound(Items)+1];
            Items[Ubound(Items)]:=Temp[i];
        );
    );
    [...]]]></description>
			<content:encoded><![CDATA[<p>Add a unique string value to an array of string values. Uses the delimiter to convert the value into an array.<span id="more-105"></span><br />
<code><br />
Function (Stringvar Array Items, Stringvar Values, Stringvar Delimiter)<br />
    Stringvar Array Temp:=Split(Values,Delimiter);<br />
    Numbervar i;<br />
    For i := 1 To Ubound(Temp) Do (<br />
        If Array_Contains (Items, Temp[i]) = False Then (<br />
            Redim Preserve Items[Ubound(Items)+1];<br />
            Items[Ubound(Items)]:=Temp[i];<br />
        );<br />
    );<br />
    Items;<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2008/01/09/crystal-reports-array_pushex-function/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Crystal Reports: Array_Push() Function</title>
		<link>http://cogniza.com/wordpress/2008/01/09/crystal-reports-array_push-function/</link>
		<comments>http://cogniza.com/wordpress/2008/01/09/crystal-reports-array_push-function/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 20:21:23 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Functions]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Function]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=104</guid>
		<description><![CDATA[Add a string value to an array of strings, only if string value hasn&#8217;t already been added to the array.
Function (Stringvar Array Items, Stringvar Value)
    If Array_Contains (Items, Value) = False Then (
        Redim Preserve Items[Ubound(Items)+1];
        Items[Ubound(Items)]:=Value;
    );
    Items;

]]></description>
			<content:encoded><![CDATA[<p>Add a string value to an array of strings, only if string value hasn&#8217;t already been added to the array.<span id="more-104"></span><code><br />
Function (Stringvar Array Items, Stringvar Value)<br />
    If Array_Contains (Items, Value) = False Then (<br />
        Redim Preserve Items[Ubound(Items)+1];<br />
        Items[Ubound(Items)]:=Value;<br />
    );<br />
    Items;<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2008/01/09/crystal-reports-array_push-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crystal Reports: Array_Contains() Function</title>
		<link>http://cogniza.com/wordpress/2008/01/09/crystal-reports-array_contains-function/</link>
		<comments>http://cogniza.com/wordpress/2008/01/09/crystal-reports-array_contains-function/#comments</comments>
		<pubDate>Wed, 09 Jan 2008 20:16:34 +0000</pubDate>
		<dc:creator>Craig Buchanan</dc:creator>
				<category><![CDATA[Crystal Reports]]></category>
		<category><![CDATA[Functions]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.cogniza.com/blog/?p=103</guid>
		<description><![CDATA[Determines if a string value is contained in an array of strings.

Function (Stringvar Array Items, Stringvar Value)
     Numbervar i;
  Booleanvar flag:=False;
     If Ubound(Items)&#62;0 Then
      For i := 1 To Ubound(Items) Do (
            If Items[i]=Value Then (
                flag:=True;
                Exit For
            )
        )
    //End If
    ;
//return result
flag;

]]></description>
			<content:encoded><![CDATA[<p>Determines if a string value is contained in an array of strings.<br />
<span id="more-103"></span><code><br />
Function (Stringvar Array Items, Stringvar Value)<br />
     Numbervar i;<br />
  Booleanvar flag:=False;<br />
     If Ubound(Items)&gt;0 Then<br />
      For i := 1 To Ubound(Items) Do (<br />
            If Items[i]=Value Then (<br />
                flag:=True;<br />
                Exit For<br />
            )<br />
        )<br />
    //End If<br />
    ;<br />
//return result<br />
flag;<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://cogniza.com/wordpress/2008/01/09/crystal-reports-array_contains-function/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

