الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل بالامكان ان اعرض جدولين في صفحة واحدة

بدأه طلال العنزي في 23 نوفمبر 2011 · 11 رد · 4,471 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

17297145.png

السلام عليكم

هل بالامكان ان استخدم اكثر من datasource في تقرير واحد ..

المطلوب بالضبط :

لدي بعض الجداول الصغيره ولا اريد ان اضع كل جدول في صفحه منفصله .. لذا اريد ان اجمع جدولين او اكثر في صفحه واحده ..

اتمنى الافادة ودمتم بأتم الصحه والعافية

#2

السلام عليكم ...

نعم ما ذكرته ممكن .. باستخدام الــ SubReport .. لكن فيه مشكلة أن الــ SubReport يأخذ حجم محدد لا يمكن أن يتجاوزه (لا أعرف مالحل)..

و إليك خطوات العمل على فرض أنه لدينا جدولين Customer و Employee..

  1. قم بتصميم التقرير الأول للجدول الأول بشكل عادي و ليكن RptCustomer .. و هنا رابط فيه مزيد من المعلومات الرابط.
  2. قم بتصميم التقرير الثاني للجدول الثاني أيضا و ليكن Rptemployee.
  3. خذ تقرير جديد و ليكن RptMain و عندما يسألك عن الــ DataSource نحدد له الجدولين Customer و Employee .
  4. نقرة يمينية داخل التقرير الرئيسي RptMain في مكان فارغ ثم Insert ثم Subreport ثم نضع التقرير الفرعي في قسم page Header و نحدد له مصدر التقرير RptCustomer.
  5. نكرر الخطوة السابقة من أجل التقرير الفرعي الثاني RptEmployee .
  6. نمرر بيانات الجدولين للتقرير الرئيسي عن طريق ملء DataSet واحدة بببانات الجدولين :
     OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" + Application.StartupPath + @"\db1.mdb" + ";Persist Security Info=False");
            	OleDbCommand command = new OleDbCommand();
            	command.CommandType = CommandType.Text;
            	command.CommandText = "SELECT * FROM Customer";
            	command.Connection = connection;
            	OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
            	dataAdapter.SelectCommand = command;
            	DataSet ds = new DataSet();
            	dataAdapter.Fill(ds, "Customer");
    
    
            	command.CommandText = "SELECT * FROM Employee";
            	dataAdapter.Fill(ds, "Employee");
    
            	RptMain rpt = new RptMain();
            	rpt.SetDataSource(ds);
            	crystalReportViewer1.ReportSource = rpt;

ملاحظات :

  1. يمكن اعنبار أحد التقريرين أساسي و الآخر فرعي و بالتالي نستغني عن التقرير الأساسي RptMain بشرط أن يكون الجدولين مضافين إلى التقرير الأساسي حتى لو لم نسحب منهم حقول على هذا التقرير ..
  2. أنا قمت بسحب التقريرين إلى Page Header وعملت إخفاء للــ Details أي Supress ..لا أعرف كيف شيظهر التقريرين لو كان أحدهما في الــ header و الأخر في الــ Details و كان الذي في الــ Details يحوي أكثر من صفحة ..
  3. عند تحديد مصدر البيانات تأكد أنه لا يوجد أي Link بين حقول الجدولين في الكريستال ريبورت .
  4. يمكنك عرض أحد الجدولين لوحده في الــ ReportViewer بالنقر فوقه ..
  5. المثال في المرفقات .

ArabTeamReportTowTables.rar

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

شكرا للغاية .. لقد فتحت لي الباب

:)

#4

شكرا للغاية .. لقد أفدتني كثيرا اخي العزيز

#5

هل ينطبق هذا الكلام على فيجوال بيسك??

#6

السلام عليكم ...

اقتباس
هل ينطبق هذا الكلام على فيجوال بيسك??
إن كنت تقصد الــ VB.NET فهو ينطبق , أما vb6 و ما قبل , فاعتقد انه ينطبق أيضا لأن الـــ Sub Report ميزة من ميزات الكريستال ريبورت.

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7
houssam11350_11350 كتب:

السلام عليكم ... إن كنت تقصد الــ VB.NET فهو ينطبق , أما vb6 و ما قبل , فاعتقد انه ينطبق أيضا لأن الـــ Sub Report ميزة من ميزات الكريستال ريبورت.

ياريت تساعدني بالموضوع

فيهةموضوع فتحته في قسم التقارير وفيه مثال

#8
houssam11350_11350 كتب:

السلام عليكم ... إن كنت تقصد الــ VB.NET فهو ينطبق , أما vb6 و ما قبل , فاعتقد انه ينطبق أيضا لأن الـــ Sub Report ميزة من ميزات الكريستال ريبورت.

جربت بس برضه يعطيني فاضي

هذا امر الطباعة اللي استخدمته

Dim rpt As New final

rpt.Load(Application.StartupPath & "\final.rpt")

rpt.SetDataSource(Me.DbDataSet.Tables(0))

rpt.RecordSelectionFormula = "{t3meem.ID}=" & IDTextBox.Text

print.CrystalReportViewer1.ReportSource = rpt

print.Show()

#9

السلام عليكم ...

  1. استخدم
    rpt.SetDataSource(Me.NashatDataSet)

    بدلا من :

             rpt.SetDataSource(Me.DbDataSet.Tables(0))

    و لا تنسى وضع قيمة عددية في IDTextBox.

  2. راجع الدروس المثبتة في قسم التقارير .
  3. رابط لمشاركة مفيدة.

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#10

عدلت الكود لكن بمجرد ما اضيف شي من الجدول الثاني مايطلع شي

لكن الان صار يطلع معلومات احد الجداول وهي النتيجةمهمة بالنسبة لي

عموما الجدول الثاني انا احتاجة لكتبة معلوومات الهيدر (اسم المؤسسة ومعلومات المدير وكذا)

هل فيه طريقة ثانية غير الجدول؟

لأني ما احتاج اكتبها الا مرة واحد او عند تعديل اسم المدير او اسم المؤسسة

ولك جزيل الشكر

#11

بعد عدة محاولات جات معاي

لكن لازم يكون نفس الرقم id في الجداول متساوزي

اذا اتغيرت القيمة ماتطلع البيانات وهذي مشكلة بالنسبة لي

#12

ارفق التقرير

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 8 أكتوبر 2012 في 00:16

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…