C# DataTable Compute: कई बार हमें किसी Tabular Resultset के कुछ Columns पर किसी तरह की Calculation Perform करने के बाद Generate होने वाले Result को एक नए Column के रूप में Represent करता है।
उदाहरण के लिए यदि हम Products Table की बात करें, तो UnitPrice व UnitsInStock Columns को आपस में गुणा करने पर प्राप्त होने वाले Total Amount को प्राप्त करने के लिए हम निम्नानुसार SQL Statement Use करते हैं:
SELECT ProductID, ProductName, QuantityPerUnit, (UnitPrice * UnitsInStock) AS TotalPrice FROM Products;
जब ये SQL Statement Execute होता है तो (UnitPrice * UnitsInStock) दोनों Columns की Calculation से Generate होने वाला Result TotalPrice नाम के एक Single Column के रूप में Return होता है।
इसी प्रकार की Working को अपने Windows Forms Application में प्राप्त करने के लिए हम हमारे पिछले Form को ही फिर से उपयोग में लेते हुए निम्नानुसार Redesign कर सकते हैं:
जैसाकि हम देख सकते हैं कि इस Modified Form पर केवल एक DataGridView Control व दो Button Controls हैं, जिस पर स्थित “Fill Products with Calculated Column” Button पर Click करते हैं, निम्नानुसार Event Handler Execute होता है:
private void btnExpression_Click(object sender, EventArgs e) { dsSSF.ProductsDataTable dtProducts = new dsSSF.ProductsDataTable(); dsSSFTableAdapters.ProductsTableAdapter daProducts = new dsSSFTableAdapters.ProductsTableAdapter(); //Fill Products DataTable with Data daProducts.Fill(dtProducts); DataColumn calTotalPrice = new DataColumn("Total Price"); calTotalPrice.Expression = "UnitPrice * UnitsInStock"; dtProducts.Columns.Add(calTotalPrice); dgvProducts.DataSource = dtProducts; }
इस Event Handler में भी हमने एक DataTable व एक DataAdapter Object Create किया है और DataAdapter Object के माध्यम से Underlying Database में Stored Products Table के Data को dtProducts नाम के DataTable में Fill किया है।
चूंकि हम एक नए Column को अपनी इस dtProducts नाम के DataTable में Add करना चाहते हैं, जो कि UnitPrice * UnitsInStock के Calculated मान को Display करेगा, इसलिए इस जरूरत को पूरा करने के लिए हमने निम्न Statement द्वारा calTotalPrice नाम का एक नया Column Create किया है और इस Newly Created Column की Expression Property में निम्नानुसार दोनों Columns की Calculation को Specify किया है:
calTotalPrice.Expression = “UnitPrice * UnitsInStock”;
यहां ध्यान देने वाली बात ये है कि इस Expression Property में Assign किए जाने वाली String में हम Underlying Database के Products Table के विभिन्न Column के नामों को Use कर सकते हैं। जबकि यदि हमनें नामों का Mapping किया होता, तो उस Mapping में हम जो नाम Specify करते, उन्हीं नामों को हमें इस Expression String में भी Specify करना होता।
अन्त में निम्न Statement द्वारा Newly Created Column को अपनी dtProducts नाम के DataTable Object में Add कर दिया है
dtProducts.Columns.Add(calTotalPrice);
परिणामस्वरूप जब निम्न Statement Execute होता है:
dgvProducts.DataSource = dtProducts;
तो हमें हमारा Form कुछ निम्नानुसार दिखाई देता है:
जहां हम देख सकते हैं कि हमारे DataGridView Control के अन्त में “Total Price” नाम का एक और Column Exist है, जो कि वास्तव में Underlying Database की Products Table में Physically Exist नहीं है।
कई बार हमें जिन Columns पर Calculation Perform करनी होती है, वे उस DataType के नहीं होते, जिन पर वांछित Calculation Perform की जा सके। उदाहरण के लिए यदि हमारे Products Table का UnitPrice Column का DataType Numerical नहीं होता, तो उसे Numerical बनाए बिनाए हम उसके साथ कोई Calculation Perform नहीं कर सकते। इसलिए Calculation Perform करने से पहले किसी Column के Type को Set करने के लिए हम DataColumn Object की DataType Property को निम्नानुसार Set कर सकते हैं:
calTotalPrice.DataType = typeof(System.Decimal);
इस प्रकार से हम DataColumn Object की Expression Property का प्रयोग करके किसी भी प्रकार के Expression को Calculate कर सकते हैं और Calculation से Generated Result को किसी भी DataTable में Add करके Calculated Columns Create कर सकते हैं।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook ADO.NET with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
ADO.NET with C# in Hindi | Page:501 | Format: PDF