<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>C#</title>
        <link>http://blog.krupashankar.com/pullivalai/category/3.aspx</link>
        <description>C#</description>
        <language>ta</language>
        <copyright>சு. க்ருபா ஷங்கர்</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>எக்சல் கோப்பைப் டாட்நெட்டில் பயன்படுத்தினால் தகவல் இழப்பு ஏற்படுகிறதா? </title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2008/04/03/37.aspx</link>
            <description>&lt;p&gt;&lt;font size="+0"&gt;எக்சல் கோப்புகளை எக்சல் ஆப்ஜக்ட் பயன்படுத்தாமலேயே வெறும் OleDbConnectionனை மட்டும் வைத்துக்கொண்டே டாட்நெட் &lt;font size="+0"&gt;தொழில்நுட்பம்&lt;/font&gt; பயன்படுத்த முடியும், கீழ்க்கண்டவாறு:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;&lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt; xlConn = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt;(@&lt;font color="#ff0000"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\filename.xls;Extended Properties='Excel 8.0;'"&lt;/font&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;இதிலுள்ள ஒவ்வொரு சீட்டையும் ஒரு டேபிலாகப் படிக்கலாம்.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;பிறகு டேபிளில் உள்ள வரிசைகளைப் படிக்க "select * from [sheet1$]" என்று அடாப்டரிலோ அல்லது கமாண்ட் ஆப்ஜக்டிலோ வினவளைக் கொடுக்கவேண்டியதுதான். இதில் ஒரு சிறிய பிரச்சனை என்னவென்றால் &lt;font face="Arial"&gt;டேட்டாடைப்பை&lt;/font&gt; OleDbConnection புரிந்துகொள்ளும் விதம்தான். உதாரணமாக, எண்கள் மட்டும் இருக்கவேண்டிய ஒரு காலத்தில் (column) ஒரு எழுத்துச்சரத் தகவல் இருந்தது என்றால் அந்த தகவலை எடுத்துக்கொள்ளாமல் வெறும் null என்று அந்த இடத்தில் எடுத்துக்கொள்ளும். இதைத் தவிர்க்க, தகவல்தொடர்ப்புச் சரத்தில், IMEX=1 என்று சேர்த்துத் தரவேண்டும், கீழ்க்கண்டவாறு:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="+0"&gt;&lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt; xlConn = &lt;font color="#0000ff"&gt;new&lt;/font&gt; &lt;font color="#3366ff"&gt;OleDbConnection&lt;/font&gt;(@&lt;font color="#ff0000"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\filename.xls;Extended Properties='Excel 8.0;IMEX=1'"&lt;/font&gt;);&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/37.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2008/04/03/37.aspx</guid>
            <pubDate>Thu, 03 Apr 2008 07:26:38 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/37.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2008/04/03/37.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/37.aspx</wfw:commentRss>
        </item>
        <item>
            <title>எண்கள் அடிப்படையிலான columnகளின் கூட்டுத்தொகையை க்ரிட்வியூவில் காண்பிக்க...</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2008/03/27/36.aspx</link>
            <description>&lt;p&gt;க்ரிட்வ்யூ கன்ட்ரோலை ஒரு டேட்டா டேபிள்/டேட்டாசெட்டுடன் பைன்ட் பண்ணிய பிறகு, எண்கள் இருக்கும் columnகளின் (numeric datatype columns) அடியில் மட்டும் எண்களின் கூட்டுத்தொகையைக் காண்பிக்க வேன்டியிருக்கலாம். பைன்ட் பண்ணிய டேபிளைப் பற்றிய விவரங்கள் நமக்கு முன்னமேயே தெரிந்திருந்தால் datatable.Compute("sum(columname)") மெத்தடைப் பயன்படுத்தி சுலபமாக இதைச் செய்துவிடலாம். ஆனால் இதற்கு எவையெவையெல்லாம் எண்களின் அடிப்படையில் அமைந்த fields என்று நிரல் எழுதும்போதே தெரிந்திருக்கவேண்டும். அப்படி இயலாத நேரங்களில், எந்தெந்த fields எண் வகையைச் சார்ந்தது என்று இயங்குநேரத்தில் கண்டுபிடித்து பிறகு Compute மெத்தடைப் பயன்படுத்தி sumஐ காண்பிக்கவேண்டும்.&lt;/p&gt;
&lt;p&gt;ஒரு க்ரிட்வ்யூவையும், டேட்டாடேபிளையும் ஆர்க்யுமென்டாகக் கொடுத்தால், தானாகவே இந்த வேலையைச் செய்யும் ஒரு சின்ன ஃபங்க்ஷன் இதோ:&lt;br /&gt;
&lt;/p&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;    &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; GenerateFooterTotal(&lt;span style="COLOR: teal"&gt;GridView&lt;/span&gt; gvResult, &lt;span style="COLOR: teal"&gt;DataTable&lt;/span&gt; dtbl)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;    {&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span style="COLOR: blue"&gt;        #region&lt;/span&gt; Total for number columns&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        &lt;span style="COLOR: green"&gt;//We cant compute the total by specifying the field name since we dont&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        &lt;span style="COLOR: green"&gt;//know what table will be displayed and what columns need to be included for the sum.&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        &lt;span style="COLOR: green"&gt;//So, just get the sum of all the decimal and int type columns&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: green"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        &lt;span style="COLOR: teal"&gt;Hashtable&lt;/span&gt; hsh = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: teal"&gt;Hashtable&lt;/span&gt;(); &lt;span style="COLOR: green"&gt;//This will hold the columns and position of the columns that are of numeric type&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: green"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        &lt;span style="COLOR: green"&gt;//Loop through each column to find out the numeric column.&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        &lt;span style="COLOR: green"&gt;//If numeric column is found, then include it for computing the sum&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        &lt;span style="COLOR: blue"&gt;for&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; intColPosition = 0; intColPosition &amp;lt; dtbl.Columns.Count; intColPosition++)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        {&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;            &lt;span style="COLOR: blue"&gt;if&lt;/span&gt; (dtbl.Columns[intColPosition].DataType == &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;decimal&lt;/span&gt;) || dtbl.Columns[intColPosition].DataType == &lt;span style="COLOR: blue"&gt;typeof&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;int&lt;/span&gt;))&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;            {&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;                hsh.Add(dtbl.Columns[intColPosition], intColPosition);&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;            }&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;span&gt;       &lt;span style="COLOR: green"&gt;//Now loop through the hashtable holding the numeric type columns and compute the sum to display in the footer&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        &lt;span style="COLOR: blue"&gt;foreach&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;object&lt;/span&gt; obj &lt;span style="COLOR: blue"&gt;in&lt;/span&gt; hsh.Keys)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        {&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;            &lt;span style="COLOR: green"&gt;//display the result (computed on the right side as assignment) in the footer = the sum of the particular numeric column name&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;            gvResult.FooterRow.Cells[&lt;span style="COLOR: teal"&gt;Convert&lt;/span&gt;.ToInt32(hsh[obj].ToString())].Text = &lt;span style="COLOR: teal"&gt;String&lt;/span&gt;.Format(&lt;span style="COLOR: maroon"&gt;"{0:0.00}"&lt;/span&gt;, dtbl.Compute(&lt;span style="COLOR: maroon"&gt;"sum("&lt;/span&gt; + ((&lt;span style="COLOR: teal"&gt;DataColumn&lt;/span&gt;)obj).ColumnName + &lt;span style="COLOR: maroon"&gt;")"&lt;/span&gt;, &lt;span style="COLOR: maroon"&gt;""&lt;/span&gt;)).ToString();&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;            gvResult.FooterRow.Cells[&lt;span style="COLOR: teal"&gt;Convert&lt;/span&gt;.ToInt32(hsh[obj].ToString())].Attributes[&lt;span style="COLOR: maroon"&gt;"align"&lt;/span&gt;] = &lt;span style="COLOR: maroon"&gt;"right"&lt;/span&gt;;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;span style="COLOR: blue"&gt;&lt;font size="2"&gt;        #endregion&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;    &lt;span style="COLOR: blue"&gt;private&lt;/span&gt; &lt;span style="COLOR: blue"&gt;void&lt;/span&gt; FormatGridNumbers(&lt;span style="COLOR: teal"&gt;GridView&lt;/span&gt; gvResult, &lt;span style="COLOR: teal"&gt;DataTable&lt;/span&gt; dtbl)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;    {&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        System.&lt;span style="COLOR: teal"&gt;Double&lt;/span&gt; dblValue = 0;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        &lt;span style="COLOR: blue"&gt;foreach&lt;/span&gt; (&lt;span style="COLOR: teal"&gt;GridViewRow&lt;/span&gt; grow &lt;span style="COLOR: blue"&gt;in&lt;/span&gt; gvResult.Rows)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        {&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;            &lt;span style="COLOR: blue"&gt;for&lt;/span&gt; (&lt;span style="COLOR: blue"&gt;int&lt;/span&gt; intCellPosition = 0; intCellPosition &amp;lt; grow.Cells.Count; intCellPosition++)&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;            {&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;                &lt;span style="COLOR: blue"&gt;if&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;double&lt;/span&gt;.TryParse(grow.Cells[intCellPosition].Text, &lt;span style="COLOR: blue"&gt;out&lt;/span&gt; dblValue))&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;                {&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;                    grow.Cells[intCellPosition].Text = &lt;span style="COLOR: teal"&gt;String&lt;/span&gt;.Format(&lt;span style="COLOR: maroon"&gt;"{0:0.00;(0);0}"&lt;/span&gt;, dblValue);&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;                }&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;            }&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style="MARGIN: 0in 0in 0pt"&gt;&lt;font size="2"&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;p&gt;&lt;span style="FONT-SIZE: 10pt"&gt;    }&lt;/span&gt; &lt;/p&gt;&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/36.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2008/03/27/36.aspx</guid>
            <pubDate>Thu, 27 Mar 2008 07:11:44 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/36.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2008/03/27/36.aspx#feedback</comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/36.aspx</wfw:commentRss>
        </item>
        <item>
            <title>நிறுவன அறிக்கைகளில் லாப/நஷ்டத்தொகை குறிக்கும் விதம்</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2008/03/07/35.aspx</link>
            <description>நிறுவனங்களின் இருப்பு அறிக்கை, லாப நஷ்டக்கணக்கு அறிக்கை போன்றவற்றில் நஷ்டத்தொகை பெரும்பாலும் அடைப்புக்குறிக்குள் குறிப்பிடப்பட்டிருக்கும். ஒரு நிறுவனத்தின் வரவு/செலவு போன்ற விவரங்கள் தகவல் தளத்தில் சேமிக்கப்பட்டிருக்கும். C#ல் துணையுடன் இத்தகைய வரவுகளில் இருந்து  கழிக்கப்பட்ட செலவுத்தொகையை லாபமாகவோ நஷ்டமாகவோ அறிக்கையாகக் காண்பிக்கலாம். வரவை விட செலவு கம்மியாக இருந்தால் லாபம். செலவு வரவை விட அதிகம் இருந்தால் நஷ்டம். இந்த நிலையில்,&lt;br /&gt;
&lt;br /&gt;
வரவு-செலவு = தொகை&lt;br /&gt;
&lt;br /&gt;
இந்த தொகை negative எண்ணாக இருந்தால் நஷ்டம். இந்த தொகையை, - குறி நீக்கி அடைப்புக்குறிக்குள் காண்பிக்கவேண்டும்.&lt;br /&gt;
&lt;br /&gt;
100 - 140 = -40 என்பதை, -40 என்று காண்பிக்காமல், (40) என்று அறிக்கையில் காண்பிக்கவேண்டும். ஒன்றிரண்டு லாப/நஷ்டத்தை மட்டுமே காண்பிக்க வேண்டும் என்றால், if/else போட்டு பாசிடிவ்/நெகடிவ் எண்களைப் பொருத்து அப்படியேவோ அல்லது ஒரு அடைப்புக்குறி போட்டோ காண்பித்து விடலாம். ஆனால் மிக அதிக அளவிலான இது போன்ற எண்களைக் காண்பிக்க வேண்டும் என்றால், String.Format என்ற ஃபங்க்ஷனைப் பயன்படுத்தலாம். இதற்கு ஒரு உதாரணம்:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: rgb(0, 204, 255); font-weight: bold;"&gt;String&lt;/span&gt;.Format("&lt;span class="string"&gt;{0:0;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;(0)&lt;/span&gt;;&lt;span style="color: rgb(255, 0, 255);"&gt;''&lt;/span&gt;}", தொகை)&lt;br /&gt;
&lt;br /&gt;
மேற்குறிப்பிட்ட உதாரணமானது, மூன்று விதமான முடிவுகளை ஆராய்ந்து அதற்கேற்றவாறு ஒரு formatted stringஐத் தருகிறது. அதாவது,  ஒரு எண் பாசிடிவ் எண்ணாக இருந்தால் அந்த எண்ணை எப்படியேவும், &lt;span style="color: rgb(255, 0, 0);"&gt;நெகடிவ் எண்&lt;/span&gt;ணாக இருந்தால் அதனை ஒரு அடைப்புக்குறிக்குள் - குறியை நீக்கிவிட்டும், &lt;span style="color: rgb(255, 0, 255);"&gt;வெறும் பூஜ்யமாக&lt;/span&gt; இருந்தால் ஒரு வெற்றுச்சரத்தையும் தருகிறது. &lt;br /&gt;
&lt;br /&gt;
இந்த முறை வேறு சில சுற்றுவழி முறைகளைவிட வேகமானதாக இருக்கும்.&lt;br /&gt;
&lt;/span&gt;&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/35.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2008/03/07/35.aspx</guid>
            <pubDate>Thu, 06 Mar 2008 19:03:26 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/35.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2008/03/07/35.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/35.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ஒன்றுக்குப் பலவற்றுடனான உறவுத் தகவல்களைப் புள்ளிவலையில் கையாளும் விதம்</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2007/10/03/31.aspx</link>
            <description>one-to-many relationship என்பதை மொழி பெயர்த்ததால் இப்படி ஒரு சொதப்பலான தலைப்பு அமைந்து விட்டதென்றாலும், இவ்வகையில் அமைந்த தகவல்தளம் மிகவும் பயனுள்ளது என்பதில் ஒரு துளியும் சந்தேகம் இல்லை.&lt;br /&gt;
&lt;br /&gt;
வேறு டேபிலில் உள்ள பல வரிசைகளுடன் தொடர்பில் இருக்கும் ஒரு தகவல் வரிசையை, டேட்டாக்ரிட் கண்ட்ரோலின் துணை கொண்டு காண்பிப்பது மிகவும் சுலபம். ஒரு எடுத்துக்காட்டிற்கு, subtext என்ற திறமூல மென்பொருள் கொண்டு இயங்கும் இந்த வலைப்பூவிற்கான தகவல் தள அமைப்பில் இருந்து இரண்டு டேபிள்களை எடுத்துக்கொள்வோம்.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold; text-decoration: underline;"&gt;Subtext_Config&lt;/span&gt;&lt;br /&gt;
&lt;table width="50" cellspacing="1" cellpadding="1" border="1" align="" summary=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;BlogId&lt;/td&gt;
            &lt;td&gt;UserName&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="text-decoration: underline; font-weight: bold;"&gt;Subtext_Content&lt;/span&gt;&lt;br /&gt;
&lt;table width="200" cellspacing="1" cellpadding="1" border="1" align="" summary=""&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td&gt;ID&lt;/td&gt;
            &lt;td&gt;Title&lt;/td&gt;
            &lt;td&gt;Text&lt;/td&gt;
            &lt;td&gt;DateAdded&lt;/td&gt;
            &lt;td&gt;BlogId&lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
சப்டெக்ட்ஸ்ட்டில் பல வலைப்பூக்களை வைத்துக்கொள்ளலாம், பல பயனர்க்கணக்குகளை உருவாக்கிக்கொள்ளலாம். ஒவ்வொரு வலைப்பூவுக்கும் ஒரு BlogIdயும் ஒரு பயனரும் உண்டு.  இந்த விவரம் subtext_config டேபிளில் இருக்கும். வலைப்பூவின் பதிவுகளும் subtext_content டேபிளில் சேமிக்கப்படும். BlogId என்ற fieldன் துணைகொண்டு, எந்த வலைப்பூவிற்கு ஒரு குறிப்பிட்ட பதிவு சொந்தமானது என்பதை அறியலாம். இப்பொழுது நம் எடுத்துக்காட்டின் தொடர்ச்சியாக, ஒவ்வொரு வலைப்பூவிலும் உள்ள பதிவுகளின் தலைப்புக்களைக் காண்பிக்க ஒரு சிறிய formஐ c# மொழியில் உருவாக்குவோம்.&lt;br /&gt;
&lt;br /&gt;
டேட்டா க்ரிட்டில் ஒரு டேட்டா டேபிளை bind செய்து தகவல் தளத்தில் உள்ள விவரங்களைப் பொதுவாகக் காண்பிப்போம். இரண்டு டேபிளில் உள்ள விவரங்கள் என்றால், inner join, outer join என்று ஏதாவது ஒன்றைப் பயன்படுத்தி, இணைத்துக் காண்பிக்கலாம். இது தவிரவும், DataRelations பயன்படுத்தியும் இரண்டு டேபிள்களை டாட்நெட்டில் இயக்க நேரத்தில் இணைத்துப் பயன்படுத்தலாம். கீழ்க்காணும் உதாரணத்தைப் பாருங்கள்:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: rgb(255, 102, 0);"&gt;1 &lt;/span&gt;SqlConnection con = &lt;span style="color: rgb(0, 0, 255);"&gt;new &lt;/span&gt;SqlConnection("server=myserver;uid=test;pwd=test;database=subtextdata");&lt;br /&gt;
&lt;span style="background-color: rgb(255, 102, 0);"&gt;2 &lt;/span&gt;SqlDataAdapter da = &lt;span style="color: rgb(0, 0, 255);"&gt;new &lt;/span&gt;SqlDataAdapter("select * from subtext_config;select * from subtext_content", con);&lt;br /&gt;
&lt;span style="background-color: rgb(255, 102, 0);"&gt;3 &lt;/span&gt;DataSet ds = &lt;span style="color: rgb(0, 0, 255);"&gt;new &lt;/span&gt;DataSet();&lt;br /&gt;
&lt;span style="background-color: rgb(255, 102, 0);"&gt;4 &lt;/span&gt;da.Fill(ds);&lt;br /&gt;
&lt;span style="background-color: rgb(255, 102, 0);"&gt;5 &lt;/span&gt;da.Dispose();&lt;br /&gt;
&lt;span style="background-color: rgb(255, 102, 0);"&gt;6 &lt;/span&gt;con.Dispose();&lt;br /&gt;
&lt;span style="background-color: rgb(255, 102, 0);"&gt;7 &lt;/span&gt;ds.Relations.Add("UserPosts", ds.Tables[0].Columns["BlogId"], ds.Tables[1].Columns["BlogId"]);&lt;br /&gt;
&lt;span style="background-color: rgb(255, 102, 0);"&gt;8 &lt;/span&gt;DataGrid1.DataSource = ds.Tables[0];&lt;br /&gt;
&lt;span style="background-color: rgb(255, 102, 0);"&gt;9 &lt;/span&gt;DataGrid1.DataBind();&lt;br /&gt;
&lt;br /&gt;
இரண்டு வெவ்வேறு வினவலைப் பயன்படுத்தி, டேட்டா அடாப்டர் ஒன்று உருவாக்கி இரண்டு டேபிள்களில் உள்ள டேட்டாவையும் ஒரு டேட்டாசெட்டில் சேமிக்கிறோம். இதனால், ds என்ற டேட்டாசெட்டில், subtext_config என்ற டேபிளும், subtext_content என்ற டேபிளும் சேமிக்கப்பட்டுள்ளன. இவற்றை முறையே ds.Tables[0] என்றும் ds.Tables[1] என்றும் சுட்டலாம். பிறகு Relations.Add ஃபங்க்ஷனைப் பயன்படுத்தி, BlogId என்ற இரண்டு டேபிளுக்கும் பொதுவான fieldஐக் குறிப்பிட்டு UserPosts என்ற உறவினை உருவாக்குகிறோம். இனிமேல், முதல் வலைப்பூவின் பதிவுகளை எல்லாம் எடுக்க வேண்டும் என்றால், ds.Tables[0].Rows[0].GetChildRows("UserPosts") என்று குறிப்பிட்டால் போதும். Rows[0]விற்கான அத்தனை குழந்தை வரிசைகளும் ஒரு டேட்டா ரோ அர்ரேவாக வந்துவிடும். அதாவது முதல் வரிசையில் இருக்கும் முதல் வலைப்பூவுக்கான பதிவுகள் அனைத்தும் கிடைக்கும். இதுதான் டேட்டாசெட்டில் உள்ள இரண்டாவது டேபிளில் சேமிக்கப்பட்டு இருக்கிறது.&lt;br /&gt;
&lt;br /&gt;
பிறகு DataGrid1 என்ற ஒரு டேட்டாக்ரிட்டுக்குரிய டேட்டா சோர்சுக்கு முதல் டேபிளான subtext_configஐ சுட்டுகிறோம், நிரல் வரி 8இல் இருக்கும் DataGrid1.DataSource = ds.Tables[0] என்று.&lt;br /&gt;
&lt;br /&gt;
இப்பொழுது frontend html வரிகளைப் பார்ப்போம்:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&lt;span style="color: rgb(153, 51, 0);"&gt;asp:DataGrid&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;id&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 255);"&gt;DataGrid1&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;runat&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 255);"&gt;server&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;AutoGenerateColumns&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 255);"&gt;False&lt;/span&gt;"&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span style="color: rgb(153, 51, 0);"&gt;Columns&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span style="color: rgb(153, 51, 0);"&gt;asp:BoundColumn&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;DataField&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 255);"&gt;UserName&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;HeaderText&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 255);"&gt;Blog User&lt;/span&gt;"&amp;gt;&amp;lt;/&lt;span style="color: rgb(153, 51, 0);"&gt;asp:BoundColumn&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span style="color: rgb(153, 51, 0);"&gt;asp:TemplateColumn&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;HeaderText&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 255);"&gt;User Posts&lt;/span&gt;"&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span style="color: rgb(153, 51, 0);"&gt;ItemTemplate&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span style="color: rgb(153, 51, 0);"&gt;ol&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span style="color: rgb(153, 51, 0);"&gt;asp:Repeater&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;id&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 255);"&gt;Repeater1&lt;/span&gt;" &lt;span style="color: rgb(255, 0, 0);"&gt;runat&lt;/span&gt;="&lt;span style="color: rgb(0, 0, 255);"&gt;server&lt;/span&gt;"  &lt;span style="color: rgb(255, 0, 0);"&gt;DataSource &lt;/span&gt;= '&lt;span style="background-color: rgb(255, 255, 0);"&gt;&amp;lt;%&lt;/span&gt;# ((System.Data.DataRowView)Container.DataItem).Row.GetChildRows("UserPosts") &lt;span style="background-color: rgb(255, 255, 0);"&gt;%&amp;gt;&lt;/span&gt;'&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span style="color: rgb(153, 51, 0);"&gt;ItemTemplate&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;&lt;span style="color: rgb(153, 51, 0);"&gt;li &lt;/span&gt;/&amp;gt;&lt;span style="background-color: rgb(255, 255, 0);"&gt;&amp;lt;%&lt;/span&gt;# DataBinder.Eval(Container.DataItem, "[Title]")&lt;span style="background-color: rgb(255, 255, 0);"&gt;%&amp;gt;&lt;/span&gt;&lt;br /&gt;
&amp;lt;/&lt;span style="color: rgb(153, 51, 0);"&gt;ItemTemplate&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;/&lt;span style="color: rgb(153, 51, 0);"&gt;asp:Repeater&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;/&lt;span style="color: rgb(153, 51, 0);"&gt;ol&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;/&lt;span style="color: rgb(153, 51, 0);"&gt;ItemTemplate&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;/&lt;span style="color: rgb(153, 51, 0);"&gt;asp:TemplateColumn&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;/&lt;span style="color: rgb(153, 51, 0);"&gt;Columns&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;lt;/&lt;span style="color: rgb(153, 51, 0);"&gt;asp:DataGrid&lt;/span&gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
இந்த டேட்டாக்ரிட்டில் இரண்டு காலம்கள் இருக்கின்றன, ஒன்று வலைப்பூவை நடத்துபவரின் பெயர்களைக் காண்பிக்க, இன்னொன்று ஒவ்வொரு வலைப்பூக்காரரின் பதிவுகளையும் காண்பிக்க.&lt;br /&gt;
&lt;br /&gt;
இந்த இரண்டாவது காலத்தில்(column)தான் ஒரு ரிப்பீட்டர் கண்ட்ரோல் இருக்கிறது. ஒவ்வொரு தாய்வரிசைக்கான குழந்தைப் வரிசைகளையும் இதுதான் காண்பிக்கப்போகிறது. BlogIdதான் இந்த தாய்/குழந்தை உறவை நிர்ணயிக்கும் என்பதை ஏற்கனவே நாம் நிரலில் (8ஆம் வரி) குறிப்பிட்டு விட்டோம். எனவே, இப்பொழுது நாம் பண்ண வேண்டியது எல்லாம் ரிப்பீட்டரின் டேட்டா சோர்சுக்கு அந்தந்த வலைப்பூக்களின் குழந்தை வரிசைகளை அனுப்பி வைக்க வேண்டியது மட்டும்தான். ds.Tables[0].Rows[0].GetChildRows("UserPosts") என்பதை, இயக்க நேரத்தில் டேட்டாக்ரிட்டுக்குள் ((System.Data.DataRowView) Container.DataItem).Row.GetChildRows("UserPosts") என்று குறிப்பிடலாம். இதற்கு databinding command என்று பெயர். &lt;a href="http://aspnet.4guysfromrolla.com/articles/061002-1.aspx"&gt;Four Guys From Rolla&lt;/a&gt;வில் இது பற்றி சற்று விரிவாக இருக்கிறது.&lt;br /&gt;
&lt;br /&gt;
இப்படி ரிப்பீட்டர் கண்ட்ரோலுக்கு டேட்டா சோர்ஸ் செட் பண்ண மறந்து போய் விட்டால், itemtemplateஇல் குறிப்பிடப்பட்டிருக்கும் Title காலம் தாய்டேபிளான subtext_configகு உரியதாகக் கருதப்படும். வேறு ஏதாவது column ரிப்பீட்டர் கண்ட்ரோலின் itemtemplateஇல் இருந்து தாய் டேபிளில் இல்லாமல் போனால், Column Not Found பிழைச்செய்தி வரும். இதில் சுவையான விஷயம் என்னவென்றால், இவை அனைத்தையும் டேட்டாக்ரிட்டின் ItemDataBound ஈவண்ட்டிற்குப் போய் ரிப்பீட்டரைக் கண்டு பிடித்து, cast செய்து, டேட்டா செட்டை global variableஆக டிக்ளர் செய்து என்றெல்லாம் மாங்கு மாங்கு என்று நிரல் வரிகள் எழுதாமல் சுலபமாக ரிப்பீட்டர் கண்ட்ரோலின் டேட்டாசோர்சின் உதவியுடன் ஒரே வரியில் முடிக்க முடிந்ததுதான்.&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/31.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2007/10/03/31.aspx</guid>
            <pubDate>Tue, 02 Oct 2007 19:22:38 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/31.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2007/10/03/31.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/31.aspx</wfw:commentRss>
        </item>
        <item>
            <title>web.configல் ஃபங்ஷன் பெயரைக் குறிப்பிடல்</title>
            <link>http://blog.krupashankar.com/pullivalai/archive/2006/08/02/17.aspx</link>
            <description>
		&lt;p&gt;உள்ளமைக்கோப்பில் (கான்ஃபிகரேஷன் ஃபைல்)  இயங்குச்சூழலுக்குத் தகுந்தாற்போல் மாற்றி பயன்படுத்தவேண்டிய விவரங்களை பண்பு/மதிப்பு (கீ/வேல்யூ) அடிப்படையில் சேமித்து வைத்து, System.Configuration.ConfigurationSettings.AppSettings மூலமாக இயங்குநேரத்தில் பெற்றுக்கொள்ளலாம். இப்படி பெறப்படும் மதிப்பு ஒரு துணைநிரலின் பெயரென்றால் அந்த துணைநிரலை அழைக்க வேண்டிய தேவை எனக்கு வந்தது.&lt;/p&gt;
		&lt;p&gt;அதாவது,&lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;
				&lt;font color="#a52a2a"&gt;add&lt;/font&gt;
				&lt;font color="#ff0000"&gt;key&lt;/font&gt;=&lt;font color="#0000ff"&gt;"FunctionName"&lt;/font&gt; value&lt;font color="#0000ff"&gt;="myfunction1" /&amp;gt;&lt;/font&gt;&lt;/p&gt;
		&lt;p&gt;என்று உள்ளமைக்கோப்பில் இருந்தால், ஒரு குறிப்பிட்ட classல் இருக்கும் myfunction1 என்ற துணைநிரலை அழைக்கவேண்டும்.&lt;/p&gt;
		&lt;p&gt;மென்பொருள் மேம்பாட்டுப் நிறுவல் ஒன்றில் தகவல்தள மாற்றங்கள் சில செய்யவேண்டியதால் இப்படிச் ஒரு முறையைக் கையாள வேண்டி வந்தது. நிறுவுநிரலிலேயே பயனரிடமிருந்து தகவல்தள விவரங்களை வாங்கி இப்படியான மாற்றங்களைச் செய்யலாம்தான். ஆனால் இந்த குறிப்பிட்ட மென்பொருள் பல தகவல் தளங்களைப் பயன்படுத்தும் சாத்தியமுடையது. ஒவ்வொரு சமயமும் ஒவ்வொரு தகவல் தளத்துடன் தொடர்பு ஏற்படுத்தி இயங்கும் நிரலாதலால், அத்தனை தகவல்தளங்களைப் பற்றிய விவரங்களும் ஒரே நேரத்தில் பயனரிடமிருந்து வாங்குவது சற்று சுற்றுவேலை.&lt;/p&gt;
		&lt;p&gt;இயங்குநேரத்தில் துணைநிரலின் பெயர் என்று யோசித்ததுமே நினைவுக்கு வருவது delegates. ஆனால் டெலிகேட்ஸ் பயன்படுத்துவதற்கு துணைநிரலின் பெயர் இயக்கநேரத்திற்கு முன்பே தெரியவேண்டும்.&lt;/p&gt;
		&lt;p&gt;எனவே, உள்ளமைக்கோப்பில் நிறுவும்போது இந்த ஃபங்க்ஷனின் பெயரைக் குறிப்பிட்டு விட்டு முதல் முறை இயங்கும் போது மட்டும் இந்த ஃபங்க்ஷன் அழைக்கப்படுமாறு பார்த்துக்கொள்ள வேண்டும். இரண்டாம் முறை இந்த மென்பொருள் இயங்கும்போது FunctionName என்ற பண்பு உள்ளமைக்கோப்பில் இல்லாமல் செய்துவிட வேண்டும்.&lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#0000ff"&gt;public&lt;/font&gt; ClassConstructor()&lt;br /&gt;{&lt;br /&gt;//இதர நிரல்வரிகள்&lt;br /&gt;  &lt;font color="#0000ff"&gt;if&lt;/font&gt;(System.Configuration.ConfigurationSettings.AppSettings["FunctionName"]!=&lt;font color="#0000ff"&gt;null&lt;/font&gt;)&lt;br /&gt;  {&lt;br /&gt;   Type tp = Type.GetType("Namespace.clsUpgrader");&lt;br /&gt;   System.Reflection.MethodInfo objMethodInfo = tp.GetMethod(System.Configuration.ConfigurationSettings.AppSettings["FunctionName"].ToString());&lt;br /&gt;   &lt;font color="#0000ff"&gt;if&lt;/font&gt;(objMethodInfo == &lt;font color="#0000ff"&gt;null&lt;/font&gt;)&lt;br /&gt;   {&lt;br /&gt;   &lt;font color="#008000"&gt;//MessageBox.Show("Invalid method name");&lt;/font&gt;&lt;br /&gt;   }&lt;br /&gt;   &lt;font color="#0000ff"&gt;else&lt;/font&gt;&lt;br /&gt;   {&lt;br /&gt;   objMethodInfo.Invoke(new Namespace.clsUpgrader(), new object[]{});&lt;br /&gt;   }&lt;br /&gt;   System.Xml.XmlDocument xml = new System.Xml.XmlDocument(); &lt;font color="#008000"&gt;//A reference to app.config/web.config.&lt;br /&gt;&lt;/font&gt;   xml.Load(Application.ExecutablePath + ".config"); &lt;font color="#008000"&gt;//the current application's configuration file is loaded. இணைய அடிப்படையிலான மென்பொருள் என்றால் Server.MapPath கொடுத்து web.config என்று கொடுத்துக்கொள்ளலாம்&lt;br /&gt;&lt;/font&gt;   System.Xml.XmlNode xmlAppSettings = xml.SelectSingleNode("/configuration/appSettings");&lt;br /&gt;   xmlAppSettings.RemoveChild(xml.SelectSingleNode("/configuration/appSettings/add[@key='FunctionName']")); &lt;font color="#008000"&gt;//மேம்பாடு முடிந்து விட்டதால், இந்த பண்பை உள்ளமைக்கோப்பில் இருந்தே எடுத்து விடலாம்.&lt;br /&gt;&lt;/font&gt;   xml.Save(Application.ExecutablePath + ".config"); &lt;font color="#008000"&gt;//FunctionName keyஐ நீக்கியாகிவிட்டது. கோப்பை சேமித்து விடலாம்.&lt;br /&gt;&lt;/font&gt; }&lt;br /&gt;}&lt;/p&gt;
		&lt;p&gt;
				&lt;font color="#0000ff"&gt;public class&lt;/font&gt; clsUpgrader&lt;br /&gt;{&lt;br /&gt; &lt;font color="#0000ff"&gt;public&lt;/font&gt; clsUpgrader()&lt;br /&gt; {&lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt;&lt;font color="#0000ff"&gt; public static void&lt;/font&gt; myfunction1()&lt;br /&gt; {&lt;br /&gt;&lt;font color="#008000"&gt; //மேம்பாட்டுக்கான நிரல்வரிகள்&lt;/font&gt;&lt;br /&gt; }&lt;br /&gt;}&lt;/p&gt;
		&lt;p&gt;துணைநிரற்கூறின் பெயரை இயக்க நேரத்தில் அறிந்து அழைப்பது, Factory Patternல் class பெயரை இயக்க நேரத்தில் முடிவுசெய்து ஆப்ஜக்ட் உருவாக்குவது போல் தோன்றிகிறது.&lt;/p&gt;
&lt;img src="http://blog.krupashankar.com/pullivalai/aggbug/17.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>சு. க்ருபா ஷங்கர்</dc:creator>
            <guid>http://blog.krupashankar.com/pullivalai/archive/2006/08/02/17.aspx</guid>
            <pubDate>Wed, 02 Aug 2006 09:12:48 GMT</pubDate>
            <wfw:comment>http://blog.krupashankar.com/pullivalai/comments/17.aspx</wfw:comment>
            <comments>http://blog.krupashankar.com/pullivalai/archive/2006/08/02/17.aspx#feedback</comments>
            <wfw:commentRss>http://blog.krupashankar.com/pullivalai/comments/commentRss/17.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>