![]() |
|
تمرير صورة الى CrystalReport - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم قواعد البيانات (http://vb4arb.com/vb/forumdisplay.php?fid=40) +--- قسم : قسم مقالات التقارير والطباعة تحت بيئة الـ.NET (http://vb4arb.com/vb/forumdisplay.php?fid=80) +--- الموضوع : تمرير صورة الى CrystalReport (/showthread.php?tid=9214) |
تمرير صورة الى CrystalReport - Sajad - 09-06-13 بسم الله الرحمن الرحيم
وصلى الله على محمد وآله الطاهرين السلام عليكم ورحمة الله وبركاته في هذا الموضوع سنقوم بشرح كيفية تمرير صورة كـParameter الى تقرير CrystalReport بصورة سهلة ومبسطة ان شاءالله وبلغتي #C و VB وقاعدة بيانات Access2007 كثير منا يواجه مشكلة مع التقارير وخاصة مع كيفية عرض صورة محددة من قبل المستخدم عن طريق الـParameter في التقرير ,اذ لا يوجد Parameter من نوع صورة أو Binary في تقارير CrystalReport أو MicrosoftReport يمكننا من استقبال صورة مرسلة عن طريق Parameter الى التقرير ,لذا الحل الوحيد هو تمرير مسار الصورة الى Parameter نصي ومن ثم اسناد هذا الـParameter الى كائن الصورة في التقرير لكي نتمكن من عرض الصورة في التقرير ,وهذا ما سنفعله تماما ان شاءالله في درسنا هذا. الفكرة كما بينا هي تمرير مسار الصورة الى Parameter نصي وقبل ذلك نسند هذا الـParameter كموقع للصورة الى كائن الـOleObject في التقرير بهذه الطريقة نتمكن ممن عرض صورة محدد من قبل المستخدم. وهنا ستسألني أليست الصورة مخزنة في قاعدة بيانات؟ أقول: نعم. وتقول لي اذا كيف ستمررها الى التقرير؟ أقول: سوف اقوم بجلب الصورة من قاعدة البيانات واعرضها في أداة PictureBox ومن ثم أقوم بخزن الصورة في مسار معين ثابت ومن ثم امرر مسار الصورة الى التقرير وأخيرا أقوم بمسح الصورة من ذلك المسار. بسم الله نبدأ أولا نقوم بانشاء قاعدة بيانات Access2007 باسم myDB وننشئ ثلاث حقول على التوالي: Emp_ID, Emp_Name, Emp_Image Emp_ID=ترقيم تلقائي Emp_Name=نص Emp_Image=كائن OLE ثم نقوم بتصميم المشروع كالتالي: ومن خلال شريط القوائم نختار Project ثم Add New Item ثم Reporting ونضيف تقرير CrystalReport فارغ الى المشروع ,ومن خلال الToolBox نضيف ثلاث باراميترات باسماء: Emp_ID, Emp_Name, picPath على التوالي الى تقرير عن طريق Parameter Fields ,انظر الى الصورة التالية: بعد اضافة الثلاث باراميترات نسحب الباراميتر الاول والثاني الى التقرير ثم نضيف كائن OLE الى تقرير بالشكل التالي: كلك أيمن على التقرير ثم Insert ثم OLEObject فتظهر لنا النفاذة التالية: ومن ثم كلك أيمن على الكائن ثم نختار Format Object ستظهر لنا نافذة ومن خلال التبويب Picture نسند الباراميتر الثالث الى الكائن كما في الشكل التالي: ثم ثم Save and Close الى هنا انتهينا من تصميم التقرير. الان نأتي الى كتابة الاكواد: اولا نضيف مجالات الاسماء الاتية: C# PHP كود : using System.IO;VB PHP كود : Imports System.IOثانيا المتغيرات العامة: #C PHP كود : private string conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\myDB.accdb;Persist Security Info=False;";VB PHP كود : Private conStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\myDB.accdb;Persist Security Info=False;"ثالثا: دالة الاتصال بقاعدة البيانات: #C PHP كود : private bool Connect()VB PHP كود : Private Function Connect() As Booleanرابعا: دالة الاضافة: #C PHP كود : private bool Insert(string name,byte[]img)VB PHP كود : Private Function Insert(name As String, img As Byte()) As Booleanخامسا: دالتا تحويل الصورة الى Bytes والعكس: #C PHP كود : private byte[] ConvertToByte(string imgFile)VB PHP كود : Private Function ConvertToByte(imgFile As String) As Byte()سادسا: دالة البحث: #C PHP كود : private bool DoSearch(string empname)VB PHP كود : Private Function DoSearch(empname As String) As Booleanالى هنا انتهينا من استعراض الدوال. واستدعاء هذه الدوال تكون بالشكل التالي: #C PHP كود : private void Browse_btn_Click(object sender, EventArgs e)VB PHP كود : Private Sub Browse_btn_Click(sender As Object, e As EventArgs)في البداية نقوم بجلب صورة الموظف ثم نقوم بالاتصال بقاعدة البيانات وبعد ذلك نضيف البيانات الى قاعدة البيانات بحيث نقوم في البداية تحويل الصورة الى Bytes ومن ثم نمررها الى الدالة مع الاسم لتضاف الى قاعدة البيانات. واذا اردنا البحث نستدعي دالة البحث مع تمرير اسم الموظف اليها ليتم عرض بيانات الموظف وفي دالة البحث نستدعي دالة تحويل الـBytes الىImage كما هو موضح من خلال الاكواد. أخيرا التقرير وتصدير التقرير الى ملف Pdf #C PHP كود : private void Report_btn_Click(object sender, EventArgs e)VB PHP كود : Private Sub Report_btn_Click(sender As Object, e As EventArgs)طبعا تمرير البيانات ستكون من خلال الدالة SetParameterValue كما تلاحظون نقوم بتعريف كائن MemoryStream لخزن الصورة في الذاكرة وبعد ذلك نقوم بحفظ الصورة في مجلد Pics في القرص C (طبعا مسار الصورة تستطيع تغييرها كما تريد) وبد ذلك نمرر مسار الصورة الى التقرير وبعد ذلك نحذف الصورة وأخيرا تصدير التقرير الى ملف Pdf #C PHP كود : private void ExToPdf_btn_Click(object sender, EventArgs e)VB PHP كود : Private Sub ExportToPdf_btn_Click(sender As Object, e As EventArgs)والتصدير سهل جدا من خلال الدالة ExportToDisk حيث تأخذ هذه الدالة وسيطين الاول نوع الملف الثاني مسار الملف الامثلة تمرير صورة الى CrystalReport - @@أبورائد@@ - 09-06-13 [COLOR="#FF0000"]يجب أن تضع للبعض سمعات قبل إعطائها إلى sajad مرة أخرى. [/COLOR] السلام عليكم ورحمة الله وبركاته ما شاء الله تبارك الله أسأل الله يزيدك من علمه لما تقدمه من نفع للجميع السلام عليكم ورحمة الله وبركاته تمرير صورة الى CrystalReport - 3booody - 09-06-13 جزاك الله خير على الشرح الرائع وجعله بميزان حسناتك تمرير صورة الى CrystalReport - Sajad - 09-06-13 السلام عليكم إقتباس :ما شاء الله تبارك الله الله يبارك بيك ابو رائد آمين أجمعين يارب إقتباس :جزاك الله خير على الشرح الرائع وجعله بميزان حسناتك وجزيت بالمثل شكرا على المرور ان شاءالله تكون الموضوع ذا فائدة للجميع موفقين ان شاءالله تمرير صورة الى CrystalReport - atefkhalf2004 - 07-07-13 السيد الفاضل صاحب الموضوع ما زلنا ننتظر الموضوع في بي للعلم معظم الناس والمعاهد التعليمية تغمل بي في بي وليس سي شارب تمرير صورة الى CrystalReport - Sajad - 07-07-13 السلام عليكم أخي العزيز كما ترى الموضوع بلغتي الـ#c و الـvb تستطيع من خلال أكواد الـ vb أن تصنع مثال بنفسك قريبا ان شاءالله ساقوم بوضع المثال بالـvb تمرير صورة الى CrystalReport - محمود رغمان - 08-07-13 فريد دائما تمرير صورة الى CrystalReport - Sajad - 08-07-13 السلام عليكم المثال بلغة الـvb في المرفقات تمرير صورة الى CrystalReport - hajriss - 03-08-13 جزاك الله خير على الشرح الرائع وجعله بميزان حسناتك تمرير صورة الى CrystalReport - Sajad - 03-08-13 السلام عليكم إقتباس :جزاك الله خير على الشرح الرائع وجعله بميزان حسناتك وجزاك بالمثل يعطيك العافية |