<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>مدونة النبهاني &#187; microsoft reports</title>
	<atom:link href="http://alnabhani.wordpress.com/tag/microsoft-reports/feed/" rel="self" type="application/rss+xml" />
	<link>http://alnabhani.wordpress.com</link>
	<description>أحدث مواضيعي البرمجية والتقنية</description>
	<lastBuildDate>Sat, 28 Nov 2009 17:05:07 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>ar</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='alnabhani.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/91abf77f7c013d66c6f253d8802f990d?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>مدونة النبهاني &#187; microsoft reports</title>
		<link>http://alnabhani.wordpress.com</link>
	</image>
			<item>
		<title>عمل تقرير لعرض سجل معين &#8211; 2</title>
		<link>http://alnabhani.wordpress.com/2008/08/18/one-row-report-2/</link>
		<comments>http://alnabhani.wordpress.com/2008/08/18/one-row-report-2/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 16:51:09 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[برمجة التقارير]]></category>
		<category><![CDATA[dataset]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[microsoft reporting tool]]></category>
		<category><![CDATA[microsoft reports]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[report data source]]></category>
		<category><![CDATA[فلترة]]></category>
		<category><![CDATA[تقارير فيجوال ستوديو]]></category>
		<category><![CDATA[طباعة سجل واحد]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/?p=57</guid>
		<description><![CDATA[في المرة الماضية عندما طرحت التدوينة : عمل تقرير لعرض سجل معين ذكرت طريقة حل تلك المشكلة باستخدام الباراميترات ، البعض قد يستصعبها ، والبعض قد يسأل من منظور تحسين الكفاءة : لماذا نقوم بتحميل البيانات في الذاكرة ( قد تكون بالآلاف ) طول وقت عرض التقرير  بينما نحن نحتاج الى سجل واحد فقط ؟ سؤال جميل [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=57&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>في المرة الماضية عندما طرحت التدوينة : <a rel="bookmark" href="http://alnabhani.wordpress.com/2008/08/15/print_one_row_report/">عمل تقرير لعرض سجل معين</a> ذكرت طريقة حل تلك المشكلة باستخدام الباراميترات ، البعض قد يستصعبها ، والبعض قد يسأل من منظور تحسين الكفاءة : لماذا نقوم بتحميل البيانات في الذاكرة ( قد تكون بالآلاف ) طول وقت عرض التقرير  بينما نحن نحتاج الى سجل واحد فقط ؟ سؤال جميل جدا بل مهم واعتقد ان من يسال سؤال كهذا هو من المبرمجين الذين يهمهم ان يعمل برنامجهم بأقل ثقل على الذاكرة .</p>
<p><span id="more-57"></span><br />
الطريقة الأخرى اسهل اذا اردنا مجرد عرض سجل واحد فقط ، وهي عمل Filter للبيانات في مصدر التقرير قبل ان تصل التقرير، طبعا بمجرد قيامك بإضافة اداة ReportViewer وتحديد تقرير معين موجود في المشروع سيتم اضافة عدة ادوات تلقائيا الى النافذة منها Dataset,TableAdapter,bindingSource ، فعملية الوصول الى مصدر البيانات من خلال الكود سهله جدا .</p>
<p>الفكرة هنا اننا سنقوم بعمل كائن DataView نستخدمه في فلترة البيانات حسب الحقل المميز للمصدر والذي يكون في العادة ID ، بعد ذلك نقوم بحذف كائن الـ ReportDataSource الخاص بالكائن ReportViewer.LocalReport ، ونضيف كائن جديد نعمله بانفسنا .</p>
<p>في حالتي استخدم الجدول Employees من قاعدة البيانات Northwind ولدي Dataset بالإسم EmployeesDataset وفي التقرير مصدر البيانات DataSource اسمه EmployeesDataset_Employees ،وقد اضفت الى النافذة المطلوبة شريط ادوات ToolStrip به أداة Label,TextBox,Button ليقوم المستخدم بإدخال الـ ID ،</p>
<p>بالنسبه للكود ، فقد قمت بحذف السطر التالي من الحدث Load للنافذة :</p>
<div style="margin:5px 20px 20px;">
<div class="smallfont" style="margin-bottom:2px;">رمز:</div>
<p class="alt2" dir="ltr"><span style="font-size:x-small;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span style="color:#0000ff;">Me</span></span></span></span><span style="font-size:x-small;">.ReportViewer1.RefreshReport() </span></p>
</div>
<p>ثم قمت بإستيراد فضاء الأسماء :</p>
<div style="margin:5px 20px 20px;">
<div class="smallfont" style="margin-bottom:2px;">رمز:</div>
<p class="alt2" dir="ltr"><span style="font-size:x-small;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span style="color:#0000ff;">Imports</span></span></span></span><span style="font-size:x-small;"> Microsoft.Reporting.WinForms </span></p>
</div>
<p>وفي حدث النقر Click للزر المدعو tsbtnshowReport :</p>
<div style="margin:5px 20px 20px;">
<div class="smallfont" style="margin-bottom:2px;"><span style="font-size:x-small;"><span style="color:#008000;"></p>
<div style="margin:5px 20px 20px;"><span style="font-size:x-small;"></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td dir="ltr" width="568" valign="top"><strong>&#8216;adding new ReportDataSource object</strong><span style="color:#0000ff;"><strong>Dim</strong><strong> DS </strong><strong>AsNew</strong><strong> ReportDataSource</strong></span></p>
<p><strong>&#8216;making new DataViewObject to get the data and filter it</strong></p>
<p><span style="color:#0000ff;"><strong>Dim</strong><strong> FilteredData </strong><strong>AsNew</strong><strong> DataView(</strong><strong>Me</strong><strong>.EmployeesDataSet.Employees)</strong></span></p>
<p><strong>&#8216;filtering the data by ID </strong></p>
<p><span style="color:#0000ff;"><strong>FilteredData.RowFilter = </strong><strong>&#8220;ID = &#8220;</strong><strong> &amp; </strong><strong>Me</strong><strong>.tstxtID.Text</strong></span></p>
<p><strong>&#8217;setting the name and value properties of the</strong></p>
<p><strong>&#8216;ReportDataSource Object</strong></p>
<p><span style="color:#0000ff;"><strong>DS.Name = </strong><strong>&#8220;EmployeesDataSet_Employees&#8221;</strong></span></p>
<p><strong><span style="color:#0000ff;">DS.Value = FilteredData</span></strong></p>
<p><strong>&#8216;Removing the current Datasources of the report</strong></p>
<p><strong><span style="color:#0000ff;">ReportViewer1.LocalReport.DataSources.RemoveAt(0)</span></strong></p>
<p><strong>&#8216;adding the new report DataSource object</strong></p>
<p><strong><span style="color:#0000ff;">ReportViewer1.LocalReport.DataSources.Add(DS)</span></strong></p>
<p><strong>&#8216;Viewing the data on the ReportViewer</strong></p>
<p><span style="color:#0000ff;"><strong>Me</strong><strong>.ReportViewer1.RefreshReport()</strong></span></td>
</tr>
</tbody>
</table>
<p> </p>
<p></span></div>
<p><span style="font-size:x-small;"><br />
</span></p>
<p></span></span></div>
</div>
<p>وقد وضعت تعليقات توضح الكود جيدا ، الفكرة في الكود اننا قمنا بعمل Replace لكائن الـ ReportDataSource بآخر جديد تم اعطاؤه سجل واحد فقط One Row Only لذلك سيتم عرض سجل واحد فقط على التقرير</p>
<p>في الرابط التالي <a href="http://vb4arab.com/vb/uploaded/486/11219077530.rar" target="_blank"><span style="color:#22229c;">المثال كاملا</span></a></p>
<p>تحياتي</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/57/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/57/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=57&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/08/18/one-row-report-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>
	</item>
		<item>
		<title>عمل تقرير لعرض سجل معين</title>
		<link>http://alnabhani.wordpress.com/2008/08/15/print_one_row_report/</link>
		<comments>http://alnabhani.wordpress.com/2008/08/15/print_one_row_report/#comments</comments>
		<pubDate>Fri, 15 Aug 2008 09:31:53 +0000</pubDate>
		<dc:creator>alnabhani</dc:creator>
				<category><![CDATA[برمجة التقارير]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[microsoft reporting tool]]></category>
		<category><![CDATA[microsoft reports]]></category>
		<category><![CDATA[parameters]]></category>
		<category><![CDATA[report]]></category>
		<category><![CDATA[فلترة]]></category>
		<category><![CDATA[visual studio reports]]></category>
		<category><![CDATA[تقارير فيجوال ستوديو]]></category>
		<category><![CDATA[طباعة سجل واحد]]></category>

		<guid isPermaLink="false">http://alnabhani.wordpress.com/?p=50</guid>
		<description><![CDATA[
عمل تقرير لعرض سجل معين
لاحظت كثرة الأسئلة حول كيفية عمل تقرير لسجل واحد فقط ، وللأسف فإن اغلب السائلين لا يحددون نوع التقارير المستخدم ، وايضا هذا السؤال يتكرر بكثرة ، فقمت بعمل مثال مبسط حول حل هذا السؤال بواسطة اداة التقارير الخاصة بفيجوال ستوديو Microsoft Reporting Tool بواسطة الاصدار 2008 وهي لا تختلف كثيرا [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=50&subd=alnabhani&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><!-- / icon and title --><!-- message --></p>
<h1>عمل تقرير لعرض سجل معين</h1>
<div id="post_message_113166">لاحظت كثرة الأسئلة حول كيفية عمل تقرير لسجل واحد فقط ، وللأسف فإن اغلب السائلين لا يحددون نوع التقارير المستخدم ، وايضا هذا السؤال يتكرر بكثرة ، فقمت بعمل مثال مبسط حول حل هذا السؤال بواسطة اداة التقارير الخاصة بفيجوال ستوديو Microsoft Reporting Tool بواسطة الاصدار 2008 وهي لا تختلف كثيرا عن 2005 لكن لايوجد لدي الاصدار 2005 ، مع ذلك سأقوم بشرح الطريقة فلا تقلقوا <img class="inlineimg" src="http://www.vb4arab.com/vb/images/smilies/biggrin.gif" border="0" alt="" /></div>
<p><span style="color:#ff0000;">فكرة الحل :</span></p>
<p><span id="more-50"></span><br />
يكمن الحل في عمل filter لبيانات التقرير بإستخدام حقل مميز للسجلات &#8211; في مثالي استخدمت قاعدة البيانات الشهيرة Northwind والجدول Customers تحديدا ، في ذلك الجدول ، الحقل Id هو المميز والذي لا يتكرر في كل الظروف &#8211; لذلك سنقوم بعمل Parameter ونضعه في الـ filter الخاص بالتقرير ، ثم نمرر قيمته بواسطة الكود قبل عرض التقرير على النافذة .</p>
<p><span style="color:#ff0000;">الحل :</span><br />
نقوم بعمل مشروع جديد ونضيف له مصدر بيانات جديد New Data Source ثم نحدد قاعدة البيانات Northwind بعدها نختار الجدول customers فقط ونقوم بتسمية الـ Dataset بأي إسم نرغبه ، وليكن CustomersDataset ثم ننهي المعالج بالطبع .</p>
<p>بعدها نقوم بإضافة تقرير جديد الى المشروع وذلك من خلال الضغط على Ctrl+shift+A ثم اختيار Report بعدها سيفتح لنا مصمم التقارير بالتقرير الجديد .</p>
<p>بداية نذهب الى القائمة Report ونختار الأمر Data Sources ومن هناك نقوم بإضافة الـ Dataset الذي قمنا بإضافته توا للمشروع ثم نغلق مربع الحوار .</p>
<p>بعدها تأتي الخطوة الاهم على الإطلاق ،نذهب الى القائمة Report مجددا ونختار Report Parameters لتظهر لنا النافذة التالية :</p>
<p><img src="http://vb4arab.com/vb/uploaded/486/11218715151.jpg" border="0" alt="" /><br />
نقوم بإضافة Parameter جديد ونحدد نوع ليكون Integer ثم نكتب إسمه وليكن CustomerID ثم نضغط على زر OK .</p>
<p>الآن نقوم بإضافة اداة Table وعليها الحقول المطلوبة ( لا اشرح هذه العملية هنا !! ) ثم نقوم بالضغط بالزر الأيمن على ال table في الزاوية العلوية اليسرى بعدها نختار Properties ، ومن النافذة الظاهره نختار Filter ثم هناك بإضافة filter جديد للـ grid ونختار الـ Operator الخاص بالمساواة ، ومن العمود Value نختار من القائمة المنسدلة Expression ومن نافذة ال Expression Editor نختار Parameters وسنرى هناك الباراميتر الذي قمنا بإضافته سابقا ، سنقوم الآن بالضغط على نقرا مزدوجا ثم نضغط على زر OK ونغلق النافذة .</p>
<p>الآن نذهب الى النافذة التي ستعرض التقرير ونضيف في البداية شريط ادوات ToolStrip وبه ثلاث أدوات بالترتيب :<br />
<span style="color:#0000ff;">- Label :</span> نكتب عليه نص توجيهي للمستخدم وليكن filter Customer ID ،<br />
<span style="color:#0000ff;">- TextBox :</span> اسمه tstxtCustomerID<br />
<span style="color:#0000ff;">- Button :</span> اسمه tsbtnshowReport وليكن بالنص فقط ونصه Show Report .</p>
<p>الآن نقوم بوضع اداة Microsoft Report Viewer على النافذة ومن Choose Reports نختار التقرير الذي اضفناه سابقا .</p>
<p>ثم نذهب الى محرر الاكواد الخاص بالنافذة ونضيف فضاء الأسماء التالي :</p>
<div style="margin:5px 20px 20px;">
<div class="smallfont" style="margin-bottom:2px;">كود :</div>
<p><span style="font-size:x-small;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span style="color:#0000ff;">Imports</span></span></span></span><span style="font-size:x-small;"> Microsoft.Reporting.WinForms </span></div>
<p>ثم نقوم بحذف السطر :</p>
<div style="margin:5px 20px 20px;">
<div class="smallfont" style="margin-bottom:2px;">كود:</div>
<p>Me.ReportViewer1.RefreshReport()</p></div>
<p>من الحدث Load الخاص بالنافذة form .</p>
<p>بعدها نقوم بكتابة كود للزر tsbbtnShowReport في حدث النقر Click ونكتب الكود التالي :</p>
<div style="margin:5px 20px 20px;">
<div class="smallfont" style="margin-bottom:2px;">كود:</div>
<p><span style="font-size:x-small;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span style="color:#0000ff;">Dim</span></span></span></span><span style="font-size:x-small;"> CusID(0) </span><span style="font-size:x-small;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span style="color:#0000ff;">As</span></span></span></span><span style="font-size:x-small;"> ReportParameter CusID(0) = </span><span style="font-size:x-small;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span style="color:#0000ff;">New</span></span></span></span><span style="font-size:x-small;"> ReportParameter(</span><span style="font-size:x-small;"><span style="color:#a31515;"><span style="font-size:x-small;"><span style="color:#a31515;">&#8220;CustomerID&#8221;</span></span></span></span><span style="font-size:x-small;">, tstxtCustomerID.Text) </span><span style="font-size:x-small;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span style="color:#0000ff;">Me</span></span></span></span><span style="font-size:x-small;">.ReportViewer1.LocalReport.SetParameters(CusID) </span><span style="font-size:x-small;"><span style="color:#0000ff;"><span style="font-size:x-small;"><span style="color:#0000ff;">Me</span></span></span></span><span style="font-size:x-small;">.ReportViewer1.RefreshReport() </span></div>
<p>شرح الكود :<br />
في السطر الاول قمنا بإنشاء مصفوفة من النوع ReportParameter ونختار العنصر الأول فيها ( رقم صفر ) ليكون كائنا جديدا من النوع ReportParameter، وبإستخدام المشيد Constuctor نعطه الوسائط Arguments المطلوبة كما يلي :<br />
- ParameterName : وهنا نكتب اسم الباراميتر الذي اضفناه في التقرير سابقا .<br />
- Value : وهنا قيمة التقرير ، وهي قيمة الشرط في الـ filter ،</p>
<p>ثم نقوم بإضافة الباراميترات الى التقرير من خلال السطر :</p>
<div style="margin:5px 20px 20px;">
<div class="smallfont" style="margin-bottom:2px;">كود:</div>
<p><span style="color:#0000ff;">Me</span><span style="font-size:x-small;">.ReportViewer1.LocalReport.SetParameters(CusID)</span></div>
<p>بعدها نقوم بإظهار محتويات التقرير بالسطر:</p>
<div style="margin:5px 20px 20px;">
<div class="smallfont" style="margin-bottom:2px;">كود:</div>
<p><span style="color:#0000ff;">Me</span><span style="font-size:x-small;">.ReportViewer1.RefreshReport()</span></div>
<p>لذلك قمت بحذفه من الحدث Load لأننا لا نريد عرض التقرير بذلك الشكل، وخذها كمعلومة ، التقرير الذي يحتوي على باراميترات لم تعط قيما لها لن يظهر بل سيطبع رسالة الخطا على جسم التقرير !!</p>
<p>اخيرا الفكرة المستخدمه هنا بالباراميترات يمكن استخدامها لعرض البيانات بين مجالين او تجميع او اي شيء تحتاجه تضع مكانه اسم الباراميتر بإستخدام الـ Expression Editor وتجعل تقاريرك ديناميكية اكثر .</p>
<p> </p>
<p>لتحميل المثال المذكور يرجى النقر <a href="http://vb4arab.com/vb/uploaded/486/11218715833.rar" target="_blank">هنا</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/alnabhani.wordpress.com/50/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/alnabhani.wordpress.com/50/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/alnabhani.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/alnabhani.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/alnabhani.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/alnabhani.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/alnabhani.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/alnabhani.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/alnabhani.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/alnabhani.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/alnabhani.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/alnabhani.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=alnabhani.wordpress.com&blog=454111&post=50&subd=alnabhani&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://alnabhani.wordpress.com/2008/08/15/print_one_row_report/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">alnabhani</media:title>
		</media:content>

		<media:content url="http://www.vb4arab.com/vb/images/smilies/biggrin.gif" medium="image" />

		<media:content url="http://vb4arab.com/vb/uploaded/486/11218715151.jpg" medium="image" />
	</item>
	</channel>
</rss>