<?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>I Learnt Today... &#187; Information Technology</title>
	<atom:link href="http://www.ilearnttoday.com/category/information-technology/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ilearnttoday.com</link>
	<description>This is where I share what I learn day by day...</description>
	<lastBuildDate>Fri, 18 May 2012 13:36:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>How To Check For NULL Values Correctly In SQL</title>
		<link>http://www.ilearnttoday.com/nullcheckinsql</link>
		<comments>http://www.ilearnttoday.com/nullcheckinsql#comments</comments>
		<pubDate>Thu, 17 May 2012 09:15:43 +0000</pubDate>
		<dc:creator>Menol</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[SQL Query]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[checking for Null values]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.ilearnttoday.com/?p=665</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<pre class="brush: sql; title: ; notranslate">
SELECT PatientId FROM Patients WHERE Surname = NULL  --  THIS IS WRONG
SELECT PatientId FROM Patients WHERE Surname is NULL  --  THIS IS CORRECT

SELECT PatientId FROM Patients WHERE Surname != NULL  --  THIS IS WRONG
SELECT PatientId FROM Patients WHERE Surname is not NULL  --  THIS IS CORRECT
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ilearnttoday.com/nullcheckinsql/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How To Use OpenFileDialog In WPF</title>
		<link>http://www.ilearnttoday.com/how-to-use-openfiledialog-in-wpf</link>
		<comments>http://www.ilearnttoday.com/how-to-use-openfiledialog-in-wpf#comments</comments>
		<pubDate>Thu, 17 May 2012 08:49:49 +0000</pubDate>
		<dc:creator>Menol</dc:creator>
				<category><![CDATA[WPF]]></category>
		<category><![CDATA[OpenFileDialog]]></category>

		<guid isPermaLink="false">http://www.ilearnttoday.com/?p=663</guid>
		<description><![CDATA[WPF has it&#8217;s own encapsulated version of OpenFileDialog. You can find this under Microsoft.Win32 namespace. Sample code:]]></description>
			<content:encoded><![CDATA[<p>WPF has it&#8217;s own encapsulated version of OpenFileDialog. You can find this under Microsoft.Win32 namespace.</p>
<p>Sample code:</p>
<pre class="brush: csharp; title: ; notranslate">
 Microsoft.Win32.OpenFileDialog _ofd = new Microsoft.Win32.OpenFileDialog();
_ofd.ShowDialog();
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ilearnttoday.com/how-to-use-openfiledialog-in-wpf/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Use of &#8220;as&#8221; keyword as for casting in C#</title>
		<link>http://www.ilearnttoday.com/csharpkeywordas</link>
		<comments>http://www.ilearnttoday.com/csharpkeywordas#comments</comments>
		<pubDate>Tue, 24 Apr 2012 09:45:23 +0000</pubDate>
		<dc:creator>Menol</dc:creator>
				<category><![CDATA[C# .Net]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[as]]></category>
		<category><![CDATA[as key word]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[casting with the keyword "as"]]></category>
		<category><![CDATA[csharp]]></category>
		<category><![CDATA[use of as]]></category>

		<guid isPermaLink="false">http://www.ilearnttoday.com/?p=648</guid>
		<description><![CDATA[2009-01-06 The keyword as doesn&#8217;t throw an exception if it fails to complete the casting operation. Instead it will return<a href="http://www.ilearnttoday.com/csharpkeywordas" class="searchmore">Read the Rest...</a><div class="clr"></div>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #c0c0c0;">2009-01-06</span><br />
<script type="text/javascript">// <![CDATA[
 google_ad_client = "ca-pub-5478118713208336"; /* LeadIn */ google_ad_slot = "2638602320"; google_ad_width = 468; google_ad_height = 15;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[
// ]]&gt;</script></p>
<p>The keyword <strong>as</strong> doesn&#8217;t throw an exception if it fails to complete the casting operation.</p>
<p>Instead it will return null.</p>
<p>Other casting operations will throw an exception when the provided value cannot be casted.</p>
<p>Since the &#8220;<strong>as</strong>&#8221; keyword sets or returns &#8220;<strong>null</strong>&#8221; value when it fails, the variable you use must be of a reference type or nullable in order to be used with the <strong>as</strong> keyword. For example, following operation will not be suitable as int is not a nullable type.</p>
<pre class="brush: csharp; title: ; notranslate">
int Year = rowYM[&quot;year&quot;] as int; // the compiler will reject this because int is non-nullable value type

string FName = dt.Rows[0][&quot;fname&quot;] as string; // this works because string is a reference type

// c# - use of keyword as in csharp
</pre>
<p><script type="text/javascript"><!--
google_ad_client = "ca-pub-5478118713208336";
/* BelowPost_BlendIn */
google_ad_slot = "0823141458";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p><span style="color: #008000;">Was this post helpful to you? How can I improve? – Your comment is highly appreciated!</span></p>
<p><span style="color: #c0c0c0;">Cassian Menol Razeek</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilearnttoday.com/csharpkeywordas/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using DispatcherTimer To Create A Timer In WPF</title>
		<link>http://www.ilearnttoday.com/wpf_dispatchertimer</link>
		<comments>http://www.ilearnttoday.com/wpf_dispatchertimer#comments</comments>
		<pubDate>Fri, 09 Mar 2012 11:39:43 +0000</pubDate>
		<dc:creator>Menol</dc:creator>
				<category><![CDATA[Multi-Threaded Programming]]></category>
		<category><![CDATA[DispatcherTimer]]></category>
		<category><![CDATA[method signature]]></category>
		<category><![CDATA[System.TimeSpan]]></category>
		<category><![CDATA[System.Windows.Threading.DispatcherTimer]]></category>
		<category><![CDATA[Timer control]]></category>
		<category><![CDATA[Timer On WPF]]></category>

		<guid isPermaLink="false">http://www.ilearnttoday.com/?p=636</guid>
		<description><![CDATA[09-03-2012 WPF doesn&#8217;t have a straightforward Timer control that you can drag and drop from the Toolbox. However, ther&#8217;s still<a href="http://www.ilearnttoday.com/wpf_dispatchertimer" class="searchmore">Read the Rest...</a><div class="clr"></div>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #c0c0c0;">09-03-2012</span><br />
<script type="text/javascript">// <![CDATA[
 google_ad_client = "ca-pub-5478118713208336"; /* LeadIn */ google_ad_slot = "2638602320"; google_ad_width = 468; google_ad_height = 15;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<p><strong>WPF</strong> doesn&#8217;t have a straightforward <strong>Timer control</strong> that you can drag and drop from the Toolbox.</p>
<p>However, ther&#8217;s still a straightforward easy way to implement this.</p>
<p>You can use the provided<strong> System.Windows.Threading.DispatcherTimer</strong> class for this</p>
<p>It&#8217;s easy as abc.</p>
<p><span style="text-decoration: underline;"><strong>Steps:</strong></span></p>
<p><strong>1 Create an instance</strong></p>
<p>System.Windows.Threading.DispatcherTimer <em>TimerName</em> = new System.Windows.Threading.DispatcherTimer() ;</p>
<p><strong>2 Create an event handler for DispatcherTimer.Tick event</strong></p>
<p>This is similar to what you used to write after double clicking on the timer under the Timer_Tick method.</p>
<p>Use following structure (method signature) to create the event handler and put all the code you want the timer to do in it.</p>
<p><strong>private void methodName(object sender, EventArgs e)</strong></p>
<p>{</p>
<p>&#8230; put your code for the timer here</p>
<p>}</p>
<p><strong>3 Assign The Tick Event Handler To The Timer</strong></p>
<p><em>TimerName.Tick += methodName</em> ;</p>
<p><strong>3 Set An Interval</strong></p>
<p>Specify the <strong>interval</strong> for the timer. Or in other words tell the timer how often you want it to fire.</p>
<p>You have to use a <strong>TimeSpan</strong> value for this. Simply create a new TimeStamp and set the time.</p>
<p><strong>Briefly</strong>: <strong>System.TimeSpan</strong> constructor takes three parameters (hh &#8211; number of hours, mm &#8211; number of minutes, ss &#8211; number of seconds)</p>
<p>There are  overloaded constructors that accept days and milliseconds if you want.</p>
<p>i.e. <em>TimerName.Interval = new TimeSpan(0, 0, 1) ;</em>  // this timer will fire every one second</p>
<p><strong>4 Start the timer&#8230;</strong></p>
<p>TimerName.Start() ;</p>
<p>Sample Code</p>
<pre class="brush: csharp; title: ; notranslate">

private void btnStartClock_Click(object sender, RoutedEventArgs e)
{
System.Windows.Threading.DispatcherTimer digitalClock = new System.Windows.Threading.DispatcherTimer();
digitalClock.Interval = new System.TimeSpan(0, 0, 1);
digitalClock.Tick += digitalClock_Tick;
digitalClock.Start();
}

private void digitalClock_Tick(object sender, EventArgs e)
{
this.lblClock.Content = string.Format(&quot;{0} : {1} : {2}&quot;,DateTime.Now.Hour, DateTime.Now.Minute, DateTime.Now.Second);
}
</pre>
<p><strong>Output:</strong></p>
<p>The label will display the time in &#8220;Hour : Minute : Second&#8221; format (i.e. 11 : 25 : 36) and the timer will refresh it every second.</p>
<p><span style="color: #008000;">Was this post helpful to you? How can I improve? – Your comment is highly appreciated!</span></p>
<p><span style="color: #c0c0c0;">Cassian Menol Razeek</span><br />
<script type="text/javascript">// <![CDATA[
    google_ad_client = "ca-pub-5478118713208336"; /* BelowPost_BlendIn */ google_ad_slot = "0823141458"; google_ad_width = 468; google_ad_height = 60;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilearnttoday.com/wpf_dispatchertimer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Choose Between ItemsSource and DataContext</title>
		<link>http://www.ilearnttoday.com/how-to-choose-between-itemssource-and-datacontext</link>
		<comments>http://www.ilearnttoday.com/how-to-choose-between-itemssource-and-datacontext#comments</comments>
		<pubDate>Fri, 24 Feb 2012 16:28:07 +0000</pubDate>
		<dc:creator>Menol</dc:creator>
				<category><![CDATA[C# .Net]]></category>
		<category><![CDATA[DataBinding]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Databind]]></category>
		<category><![CDATA[DataContext]]></category>
		<category><![CDATA[datagrid]]></category>
		<category><![CDATA[Difference Between DataContext and ItemsSource]]></category>
		<category><![CDATA[FrameworkElement]]></category>
		<category><![CDATA[ItemsSource]]></category>
		<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://www.ilearnttoday.com/?p=600</guid>
		<description><![CDATA[2012-02-24 I usually use ItemsSource property when I need to databind a control in WPF because it&#8217;s straightforward and the<a href="http://www.ilearnttoday.com/how-to-choose-between-itemssource-and-datacontext" class="searchmore">Read the Rest...</a><div class="clr"></div>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #c0c0c0;">2012-02-24</span><br />
<script type="text/javascript">// <![CDATA[
 google_ad_client = "ca-pub-5478118713208336"; /* <span class="mceItemHidden"><span class="mceItemHiddenSpellWord">LeadIn</span></span> */ google_ad_slot = "2638602320"; google_ad_width = 468; google_ad_height = 15;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<p>I usually use <strong>ItemsSource</strong> property when I need to <strong>databind</strong> a control in <strong>WPF</strong> because it&#8217;s straightforward and the framework does everything for me.</p>
<p>However, I came accross a situation where I had to do all data formatting and stuff for a <strong>DataGrid</strong>. In such a case the best method is to use the DataContext property.</p>
<p>The DataContext property is available for pretty much any item you use under the .net framework because it is implemented in the<strong> FrameworkElement.</strong> What you need to know about <strong>FrameworkElement</strong> to understand <strong>DataContext</strong> is that it is one of the very top level classes in the .net framework class hierarchy which is inherited by many classes beneath it.</p>
<p>The ItemsSource property on the other hand is implemented in the ItemsControl class which is located far below in the .net class hierarchy and therefore only inherited by a sub set of controls you use.</p>
<p><strong>What is DataContext</strong></p>
<p>As the name suggests this property sets the data context for an item. In other words it sets the bigger picture (something similar to saying this text box is should be bound to some data element within this particular data table, but you have to tell me what exactly that element is). So when you set the data context property, then you have to specify databindings explicitly.</p>
<p>Data context is usually used to databind controls such as forms which would include sub controls that need to be bound to sub elements of the data context.</p>
<p>For example, a form would include text boxes for First Name and Last Name. Instead of databinding each control you can set the datacontext property of the form so that both FirstName and LastName textboxes would get relevant data automatically.</p>
<p>Following example shows a simple use of DataContext:</p>
<p>First take a note at the two XAML lines for two text boxes which tells the framework what fields of the datacontext each text box should be bound to</p>
<pre class="brush: xml; title: ; notranslate">
</pre>
<p>Now following code sets the datacontext of the whole window. (Notice this.DataContext)</p>
<pre class="brush: csharp; title: ; notranslate">
// create a simple data source
DataTable _dt = new DataTable();
_dt.Columns.Add(new DataColumn(&quot;Id&quot;, typeof(int)));
_dt.Columns.Add(new DataColumn(&quot;FirstName&quot;, typeof(string)));
_dt.Columns.Add(new DataColumn(&quot;LastName&quot;, typeof(string)));

_dt.Rows.Add(1, &quot;Robin&quot;, &quot;Hood&quot;);
_dt.Rows.Add(2, &quot;Spider&quot;, &quot;Man&quot;);
_dt.Rows.Add(3, &quot;Knight&quot;, &quot;Rider&quot;);

this.DataContext = _dt;
</pre>
<p><strong><span style="text-decoration: underline;">Output</span></strong></p>
<p><strong></strong><a href="http://www.ilearnttoday.com/wp-content/uploads/2012/02/datacontext-ilearnttody.com_1.png"><img class="alignleft size-full wp-image-612" title="datacontext-ilearnttody.com" src="http://www.ilearnttoday.com/wp-content/uploads/2012/02/datacontext-ilearnttody.com_1.png" alt="How to use datacontext in WPF - sample use of datacontext" width="217" height="119" /></a></p>
<p><script type="text/javascript">// <![CDATA[
 google_ad_client = "ca-pub-5478118713208336"; /* <span class="mceItemHidden"><span class="mceItemHiddenSpellWord">BelowPost</span></span>_<span class="mceItemHidden"><span class="mceItemHiddenSpellWord">BlendIn</span></span> */ google_ad_slot = "0823141458"; google_ad_width = 468; google_ad_height = 60;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<p><strong>ItemsSource</strong></p>
<p>On the other hand, Items source setting does all the binding work for you so all you have to do is to set the items source property of your control to any collection that implements IEnumerable interface.</p>
<p>Following example shows how you can simply data bind a datagrid using ItemsSource property:</p>
<pre class="brush: csharp; title: ; notranslate">

// create a simple data source
DataTable _dt = new DataTable();
_dt.Columns.Add(new DataColumn(&quot;Id&quot;, typeof(int)));
_dt.Columns.Add(new DataColumn(&quot;First Name&quot;, typeof(string)));
_dt.Columns.Add(new DataColumn(&quot;Last Name&quot;, typeof(string)));

_dt.Rows.Add(1, &quot;Robin&quot;, &quot;Hood&quot;);
_dt.Rows.Add(2, &quot;Spider&quot;, &quot;Man&quot;);
_dt.Rows.Add(3, &quot;Knight&quot;, &quot;Rider&quot;);

// DgTestGrid is a dimple datagrid
this.DgTestGrid.ItemsSource = _dt.DefaultView;
</pre>
<p><span style="text-decoration: underline;"><strong>Output</strong></span></p>
<p><strong></strong><a href="http://www.ilearnttoday.com/wp-content/uploads/2012/02/itemssource-ilearnttody.com_1.png"><img class="alignleft size-medium wp-image-611" title="itemssource-ilearnttoday.com" src="http://www.ilearnttoday.com/wp-content/uploads/2012/02/itemssource-ilearnttody.com_1-300x200.png" alt="How to use itemssource - sample use of itemssource" width="300" height="200" /></a></p>
<p><strong>Note</strong></p>
<p>The data table, _dt is not used straightaway as the items source but its <strong>DefaultView</strong> is used instead. This is because the <strong>DataTable</strong> (System.Data.DataTable) class does not implement the IEnumerable interface but its <strong>DefaultView</strong> (System.Data.Dataview) does.</p>
<p><span style="color: #008000;">Was this post helpful to you? How can I improve? – Your comment is highly appreciated!</span></p>
<p><span style="color: #c0c0c0;">Cassian Menol Razeek</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilearnttoday.com/how-to-choose-between-itemssource-and-datacontext/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to use LIKE operator in Dataview.RowFilter for Date Time or Numaric Fields using CONVERT</title>
		<link>http://www.ilearnttoday.com/dataview-row-filter-for-date-time</link>
		<comments>http://www.ilearnttoday.com/dataview-row-filter-for-date-time#comments</comments>
		<pubDate>Mon, 16 Jan 2012 11:58:58 +0000</pubDate>
		<dc:creator>Menol</dc:creator>
				<category><![CDATA[C# .Net]]></category>
		<category><![CDATA[C#.NET]]></category>
		<category><![CDATA[Data Access]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Autofilter Datagrid]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[CONVERT]]></category>
		<category><![CDATA[datagrid]]></category>
		<category><![CDATA[Datagrid Rowfilter]]></category>
		<category><![CDATA[Dataview]]></category>
		<category><![CDATA[Date Time]]></category>
		<category><![CDATA[Datetime]]></category>
		<category><![CDATA[Fields]]></category>
		<category><![CDATA[LIKE operator]]></category>
		<category><![CDATA[Numaric]]></category>
		<category><![CDATA[Row filter]]></category>
		<category><![CDATA[RowFilter]]></category>
		<category><![CDATA[using CONVERT]]></category>

		<guid isPermaLink="false">http://www.ilearnttoday.com/?p=577</guid>
		<description><![CDATA[2012-01-16 The RowFilter property of the DataView allows to use flexible string similar to SQL or LINQ to easily filter<a href="http://www.ilearnttoday.com/dataview-row-filter-for-date-time" class="searchmore">Read the Rest...</a><div class="clr"></div>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #c0c0c0;">2012-01-16</span><br />
<script type="text/javascript">// <![CDATA[
   google_ad_client = "ca-pub-5478118713208336"; /* LeadIn */ google_ad_slot = "2638602320"; google_ad_width = 468; google_ad_height = 15;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<p>The RowFilter property of the DataView allows to use flexible string similar to SQL or LINQ to easily filter rows wihtout having to iterate through them.</p>
<p>I had to implement a fully flexible search module for a project I&#8217;m working on. The user had to be able to perform a string search on any field displayed on the gridview. The above mentioned RowFilter method is really handy to provide such a functionality due to increased efficiency.</p>
<p>Assume following example:</p>
<p><strong>The data table (in the database)</strong></p>
<p><span style="text-decoration: underline;">Field Name         Data Type  </span></p>
<p>Name                String</p>
<p>DateOfBirth        DateTime</p>
<p><strong><span style="text-decoration: underline;">Data</span></strong></p>
<p>Name                     DOB</p>
<p>John                      1976-10-12</p>
<p>Sophie                   1990-12-30</p>
<p>If you want to use the RowFilter to enable flexible searching (i.e. if the user type &#8220;j&#8221; in the search textbox the search grid view would only show the record for John) you can use following code:</p>
<pre class="brush: csharp; title: ; notranslate">
string SearchFor = SearchTextBox.Text;
((DataView)SearchGrid.DataContext).RowFilter = string.Concat(&quot;Name LIKE '%&quot;, SearchFor, &quot;%'&quot;);
</pre>
<p>This will allow the above explained behaviour so if the user now enter &#8220;h&#8221; in the textbox it will show both records because both John and Sophie have the letter &#8220;h&#8221; in their names.</p>
<p>So what if we repeat the same and use the following code for the date of birth field?</p>
<pre class="brush: csharp; title: ; notranslate">
// WRONG CODE
string SearchFor = SearchTextBox.Text;
((DataView)SearchGrid.DataContext).RowFilter = string.Concat(&quot;DateOfBirth LIKE '%&quot;, SearchFor, &quot;%'&quot;);
</pre>
<p>We would expect the program to filter records similarly. However, if you enter &#8220;1990&#8243; in the search textbox hoping it would filter Sophie, it would give you an error instead!</p>
<p>This is because the LIKE operator cannot work with non-charactor types.</p>
<p><strong>The Solution!</strong></p>
<p>We have to use a converter to convert the datetime field into a string just before the RowFilter is applied.</p>
<p><strong>Here&#8217;s the code:</strong></p>
<pre class="brush: csharp; title: ; notranslate">
string SearchFor = SearchTextBox.Text;
((DataView)SearchGrid.DataContext).RowFilter = string.Concat(&quot;CONVERT(DateOfBirth, System.String) LIKE '%&quot;, SearchFor, &quot;%'&quot;);
</pre>
<p>The Convert function will cast the datetime value into string just before the LIKE operation takes place. And since the datetime value is only temperory converted, the original data are not affected as well.</p>
<p>So if you add this code to the previously worked code for the Name column as described below:</p>
<pre class="brush: csharp; title: ; notranslate">
string SearchFor = SearchTextBox.Text;
((DataView)SearchGrid.DataContext).RowFilter = string.Concat(&quot;Name LIKE '%&quot;, SearchFor, &quot;%'&quot;);
((DataView)SearchGrid.DataContext).RowFilter = string.Concat(&quot;CONVERT(DateOfBirth, System.String) LIKE '%&quot;, SearchFor, &quot;%'&quot;);
</pre>
<p><span style="text-decoration: underline;"><strong>The Result</strong></span></p>
<p><script type="text/javascript">// <![CDATA[
   google_ad_client = "ca-pub-5478118713208336"; /* BelowPost_BlendIn */ google_ad_slot = "0823141458"; google_ad_width = 468; google_ad_height = 60;
// ]]&gt;</script></p>
<p><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script>Now if you type &#8220;John&#8221; the grid will only show records that match that value and if you type a digit (e.g. 30) it will show the record that has 30 in the dob field (i.e. the record for Sophie)</p>
<p><strong>Note<br />
</strong>You can use the same method for any other field type which doesn&#8217;t support use of LIKE directly.</p>
<p><span style="color: #008000;">Was this post helpful to you? How can I improve? – Your comment is highly appreciated!</span></p>
<p><span style="color: #c0c0c0;">Cassian Menol Razeek</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilearnttoday.com/dataview-row-filter-for-date-time/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Using TimeStamp columns to keep track of database record versions</title>
		<link>http://www.ilearnttoday.com/timestamp-columns</link>
		<comments>http://www.ilearnttoday.com/timestamp-columns#comments</comments>
		<pubDate>Fri, 07 Oct 2011 14:27:47 +0000</pubDate>
		<dc:creator>Menol</dc:creator>
				<category><![CDATA[Data Access]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[SQL Query]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[@@DBTS]]></category>
		<category><![CDATA[column]]></category>
		<category><![CDATA[database version]]></category>
		<category><![CDATA[insert into a timestamp column]]></category>
		<category><![CDATA[record version]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Timestamp]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://www.ilearnttoday.com/?p=543</guid>
		<description><![CDATA[2011-10-07 Timestamp is a value that is incremented by the database whenever an insert or update operation is performed. Even<a href="http://www.ilearnttoday.com/timestamp-columns" class="searchmore">Read the Rest...</a><div class="clr"></div>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #c0c0c0;">2011-10-07</span><br />
<script type="text/javascript">// <![CDATA[
      google_ad_client = "ca-pub-5478118713208336"; /* LeadIn */ google_ad_slot = "2638602320"; google_ad_width = 468; google_ad_height = 15;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<p>Timestamp is a value that is incremented by the database whenever an insert or update operation is performed.</p>
<p>Even though the name Timestamp could be a bit misleading, this value has no relevance to a clock related time. This only shows a linear progression of time.</p>
<p>For an example , it is something like your database saying it has been two update or insert commands since your last visit.</p>
<p>You can see this value by referring to <a>@@DBTS</a>  [ select @@DBTS ]</p>
<p><div id="attachment_544" class="wp-caption alignnone" style="width: 212px"><a href="http://www.ilearnttoday.com/wp-content/uploads/2011/10/1.png"><img class="size-full wp-image-544" title="Database Timestamp Value" src="http://www.ilearnttoday.com/wp-content/uploads/2011/10/1.png" alt="Database Timestamp Value" width="202" height="117" /></a><p class="wp-caption-text">Database Timestamp Value</p></div><br />
<br />
How can this be helpful at all?</p>
<p>Well, in simple terms, this helps to keep track of versions of records.</p>
<p>For an example, assume a scenario where you have to fetch a record from a table, manipulate the data and write it back.</p>
<p>What if the record gets changed (from another database call) after you fetched data? You will manipulate the old data and update the record without knowing somebody has updated the record in between your fetching and updating commands.</p>
<p>How can timestamp help?</p>
<p>You can add a column to your table (you can call it &#8220;Version&#8221;) and set its data type to TimeStamp. Then whenever you update or insert a record to this table, this column will record the database timestamp after that transaction.</p>
<p>So before writing your manipulated data, you can check if the timestamp value remains the same as what you read at the beginning of the transaction.</p>
<p>Following example demonstrates how timestamp can be used to monitor versions:</p>
<p>The Person table used for this example has a column called &#8220;Version&#8221; which is of type Timestamp.</p>
<p>First simply query the Version column of the table for the person called &#8220;Robert&#8221;</p>
<p><div id="attachment_546" class="wp-caption alignnone" style="width: 609px"><a href="http://www.ilearnttoday.com/wp-content/uploads/2011/10/person_before1.png"><img class="size-full wp-image-546" title="Timestamp before update" src="http://www.ilearnttoday.com/wp-content/uploads/2011/10/person_before1.png" alt="Timestamp before update" width="599" height="155" /></a><p class="wp-caption-text">Timestamp before update</p></div><br />
<br />
After an update to the same record, we will check the version (timestamp) of the same record:</p>
<p><div id="attachment_548" class="wp-caption alignnone" style="width: 585px"><a href="http://www.ilearnttoday.com/wp-content/uploads/2011/10/person_after.png"><img class="size-full wp-image-548" title="Timestamp after update" src="http://www.ilearnttoday.com/wp-content/uploads/2011/10/person_after.png" alt="Timestamp after update" width="575" height="181" /></a><p class="wp-caption-text">Timestamp after update</p></div><br />
<br />
As you can see, the timestamp value for the record has been automatically updated.</p>
<p>Note: Timestamp columns are automatically updated by the database engine so you do not have to specify value when either inserting or updating a row of a table which has a timestamp (version) column.</p>
<p>So to insert a record to a table with a timestamp column simply omit the timestamp column from your insert statement.</p>
<p>i.e. &#8211; Person table has following columns [Id, Given_Name, Family_Name, Age, Version]</p>
<p>Insert statement would be:</p>
<pre class="brush: sql; title: ; notranslate">
Insert into Person(Id, Given_Name, Family_Name, Age)
Values(001, &quot;Robert&quot;, &quot;Nox&quot;, 78);
</pre>
<p>
The database will take care of the timestamp (version) column.</p>
<p><script type="text/javascript">// <![CDATA[
     google_ad_client = "pub-5478118713208336"; /* BelowPost_BlendIn */ google_ad_slot = "0823141458"; google_ad_width = 468; google_ad_height = 60;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<p style="text-align: justify;"><span style="color: #008000;">Was this post helpful to you? How can I improve? &#8211; </span><span style="color: #008000;">Your comment is highly appreciated!</span></p>
<p style="text-align: justify;"><span style="color: #c0c0c0;">Cassian Menol Razeek</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilearnttoday.com/timestamp-columns/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to use (escape) single quotation mark in sql statements</title>
		<link>http://www.ilearnttoday.com/how-to-escape-single-quotation-mark-in-sql</link>
		<comments>http://www.ilearnttoday.com/how-to-escape-single-quotation-mark-in-sql#comments</comments>
		<pubDate>Thu, 06 Oct 2011 16:01:47 +0000</pubDate>
		<dc:creator>Menol</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[SQL Query]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server 2008]]></category>
		<category><![CDATA[apostrophe]]></category>
		<category><![CDATA[escape apostrophe]]></category>
		<category><![CDATA[escape single quotation]]></category>
		<category><![CDATA[exec]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.ilearnttoday.com/?p=523</guid>
		<description><![CDATA[06-10-2011 We all get that day when we get an exception complaining about the single quotation or apostrophe that was<a href="http://www.ilearnttoday.com/how-to-escape-single-quotation-mark-in-sql" class="searchmore">Read the Rest...</a><div class="clr"></div>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #c0c0c0;">06-10-2011</span><br />
<script type="text/javascript">// <![CDATA[
   google_ad_client = "ca-pub-5478118713208336"; /* LeadIn */ google_ad_slot = "2638602320"; google_ad_width = 468; google_ad_height = 15;
// ]]&gt;</script><br />
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">// <![CDATA[</p>
<p>// ]]&gt;</script></p>
<p>We all get that day when we get an exception complaining about the single quotation or apostrophe that was in our SQL statement.</p>
<p>The best advisable thing to do is to use stored procedures so that all data are passed as parameters. However there are situations we have to use in-line SQL statements and even there are situations where even SQL parameters cannot manage this issue.</p>
<p>For example, if you use the exec method in you stored procedure body to do some dynamic stuff [read more about using exec to generate dynamic queries in stored procedures <a title="A stored procedure that can auto-genarate SQL queries using exec method" href="http://www.ilearnttoday.com/dynamic-stored-procedure">here</a> ] you will have noticed that even if you pass a string with an apostrophe to an sql parameter it will still throw an exception at you !</p>
<p>So the only way out is to escape this character. Once you instruct the SQL parser to escape the character it will take the apostrophe as part of the string input not part of the command.</p>
<p>How to?</p>
<p>Simply replace your apostrophe / single quotation with two apostrophes / two single quotations .</p>
<p>i.e.<br />
Replace <span style="color: #3366ff;">Bob&#8217;s world</span> With <span style="color: #339966;">Bob&#8217;<span style="color: #ff0000;">&#8216;</span>s world</span>  &lt;- these are two single quotation characters (not one double quotation character)</p>
<p>This can be easily done by using the <span style="color: #008000;">string.replace</span> method.</p>
<p><span style="color: #008000;">Was this post helpful to you? How can I improve? – Your comment is highly appreciated!</span></p>
<p><span style="color: #c0c0c0;">Cassian Menol Razeek</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilearnttoday.com/how-to-escape-single-quotation-mark-in-sql/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A stored procedure that can auto-genarate SQL queries using exec method</title>
		<link>http://www.ilearnttoday.com/dynamic-stored-procedure</link>
		<comments>http://www.ilearnttoday.com/dynamic-stored-procedure#comments</comments>
		<pubDate>Thu, 06 Oct 2011 13:11:45 +0000</pubDate>
		<dc:creator>Menol</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[Menol]]></category>
		<category><![CDATA[SQL Query]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[exec]]></category>
		<category><![CDATA[execute]]></category>
		<category><![CDATA[flexible dynamic stored procedure]]></category>
		<category><![CDATA[parameterize]]></category>

		<guid isPermaLink="false">http://www.ilearnttoday.com/?p=513</guid>
		<description><![CDATA[06-10-2011 Have you ever wanted to write a flexible and dynamic stored procedure that would allow you to send the table<a href="http://www.ilearnttoday.com/dynamic-stored-procedure" class="searchmore">Read the Rest...</a><div class="clr"></div>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #c0c0c0;">06-10-2011</span><br />
<script type="text/javascript"><!--
google_ad_client = "ca-pub-5478118713208336";
/* LeadIn */
google_ad_slot = "2638602320";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Have you ever wanted to write a flexible and dynamic stored procedure that would allow you to send the table name as a parameter?</p>
<p>Have you ever wanted to write a flexible and dynamic stored procedure that would allow you to send only the condition but also the column name you want to include in the where clause?</p>
<p>Well I did. I wanted to create a stored procedure that would take Table name, Criteria column name  and the Target criteria value as parameters and create the SQL query dynamically.</p>
<p>Usually, we have to write our SQL code in the stored procedure body where we cannot treat our sql statement as a string.</p>
<p>The way to achieve this, however, is by using the Exec method provided in SQL.</p>
<p>Exec (execute) allows you to execute a command or a character string that contains Transact-SQL command(s).</p>
<p>Without wasting more time, following is the code I used to achieve my goal:</p>
<pre class="brush: sql; title: ; notranslate">
CREATE PROCEDURE GetRowCountByStringColumn

@TableName nvarchar(50),
@CriteriaColumnName nvarchar(50),
@CriteriaValue nvarchar(150)
AS
BEGIN

EXEC('SELECT  Count(*) FROM ' + @TableName
+ ' WHERE ' + @CriteriaColumnName + ' = ''' + @CriteriaValue + '''')

END
GO
</pre>
<p>As you can see the procedure takes three arguments:</p>
<p>TableName<br />
CriteriaColumnName &#8211; the name of the column that should be checked in the where clause<br />
CriteriaValue &#8211; the value the Criteria Column Name should be checked against</p>
<p>The exec command creates the SQL command (at run time) and executes it.</p>
<p>This helped me to create many dynamic stored procedures for my current project and saved me from having to create stored procedures for each table.</p>
<p><span style="color: #008000;">Was this post helpful to you? How can I improve? – Your comment is highly appreciated!</span></p>
<p><span style="color: #c0c0c0;">Cassian Menol Razeek</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilearnttoday.com/dynamic-stored-procedure/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to auto save the data table in memory into database?</title>
		<link>http://www.ilearnttoday.com/commandbinder</link>
		<comments>http://www.ilearnttoday.com/commandbinder#comments</comments>
		<pubDate>Tue, 04 Oct 2011 13:27:46 +0000</pubDate>
		<dc:creator>Menol</dc:creator>
				<category><![CDATA[C# .Net]]></category>
		<category><![CDATA[C#.NET]]></category>
		<category><![CDATA[Data Access]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Information Technology]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[SQL Server 2005]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[Auto update]]></category>
		<category><![CDATA[Command Binder]]></category>
		<category><![CDATA[CommandBinder]]></category>
		<category><![CDATA[Data adaptor]]></category>
		<category><![CDATA[data table]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[synchronize]]></category>

		<guid isPermaLink="false">http://www.ilearnttoday.com/?p=479</guid>
		<description><![CDATA[2010-04-01 We frequently get to fetch data from the database, update them and then write them back to the database. Most of<a href="http://www.ilearnttoday.com/commandbinder" class="searchmore">Read the Rest...</a><div class="clr"></div>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #c0c0c0;">2010-04-</span><span style="color: #c0c0c0;">01</span></p>
<p><span style="color: #ff0000;"> <script type="text/javascript"><!--
google_ad_client = "ca-pub-5478118713208336";
/* LeadIn */
google_ad_slot = "2638602320";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></span></p>
<p>We frequently get to fetch data from the database, update them and then write them back to the database.</p>
<p>Most of the time we only have to write them back as individual records.</p>
<p>How about updating a whole database table in the memory and having to synchronize all changes to the actual data table?</p>
<p>My initial thought was this would be full of complex coding. However, thanks to Microsoft, there&#8217;s nothing much to be done at all.</p>
<p>So how are we gonna do this is&#8230;</p>
<p>We will use a data adaptor to fill our data table as usual.</p>
<p>The only new thing is the use of a Command Binder.</p>
<p>Command Binder: A command binder is capable to detect changes that have occurred to a table (in the memory) and then automatically generate appropriate SQL statements to save those changes into the actual data table (in the database).</p>
<p>Following is a simple example: Scenario: In my application I had to take a database table name and present data in a data grid and then save all changes made by the user.</p>
<p>What we need: a data table an adaptor a connection a command builder I have defined them at the form level so I can use them across the form from different events.</p>
<pre class="brush: csharp; title: ; notranslate">
private DataTable _tbl;

private SqlDataAdapter _adptr;

private SqlConnection _conn;

private SqlCommandBuilder _cbldr;
</pre>
<p>Step1: Initialize connection and retrieve data from the database</p>
<pre class="brush: csharp; title: ; notranslate">
_tbl = new DataTable();
_conn = FetchData.GetOpenConnection();
_adptr = new SqlDataAdapter(&quot;Select * from &quot; + DatabaseTableName, _conn);
_cbldr = new SqlCommandBuilder(_adptr);
_adptr.Fill(_tbl);
</pre>
<p>Step2: Let the user to change data (in here simply bind the table to a grid)</p>
<pre class="brush: csharp; title: ; notranslate">
dgMainGrid.DataSource = _tbl;
</pre>
<p>Step3: Save (synchronize) changes to the actual database table Even though this is a complex process and undoubtedly would take a lot of effort to do manually, Thanks to .net framework all we need is a line of code.</p>
<pre class="brush: csharp; title: ; notranslate">
_adptr.Update(_tbl);
</pre>
<p>Once you call the adaptor to update the table, it will use the command builder attached to it to generate all necessary SQL command building. The database table is now up-to-date!</p>
<p><span style="color: #008000;">Was this post helpful to you? How can I improve? – Your comment is highly appreciated!</span></p>
<p><span style="color: #c0c0c0;">Cassian Menol Razeek</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ilearnttoday.com/commandbinder/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

