لا أدري عن سبب المشكلة بصراحة .. قمت بإنشاء dataset عادي وكانت البيانات تعرض فيه بشكل عادي ..
فقمت بإنشاء صفحة عرض فأصبحت المشكلة أنه في حالة عرض بيانات sql من أكثر من جدول مربوطين عن طريق inner join تظهر الشاشة ((الفورم)) بيضاء .. ولو رغبت في عرض بيانات من جدول واحد تعرض بشكل إعتيادي ..
حقيقة لم أفهم المشكلة وغير قادر تماما على إصلاحها ..
Dataset
؟
ممكن مثال او صور للجداول داخل الداتاست
او جملة الاستعلام؟
مرحبا أخوي ..
SELECT Exp_Invoice.Invoice_Id, Exp_Invoice.SUPPLIER_Type, Exp_Invoice.SUPPLIER, Exp_Invoice.Invoice_Date, Exp_Service.Service, Exp_Service.Service_Price
FROM Exp_Invoice INNER JOIN
Exp_Service ON Exp_Invoice.Invoice_Id = Exp_Service.Invoice_Id
هذي الجملة .. تشتغل في حالة انك اخترت عرض بيانات جدول واحد .. لو عرضت جدولين ما يشتغل .. مع العلم ان الجدولين مربوطين عن طريق FOREIGN KEY كما هو واضح ..
هنا اشتغلت عادي داخل داتا سيت ..
لكن عند عرض الصفحة
تمام نتيجة جملة الاستعلام بين الجدولين ما فيها مشاكل
الاقتراحات اللي اقول لك عليها الاتي
* حاول تعرض نتيجة الاستعلام في Gridview
اذا ضبطت معك
على طول شيك على مصدر البيانات في التقريروانك اخترت الجدول الناتج من جملة الاستعلام
* استخدم لست وخلي البيانات في اللست تكستات منفردة بالنسبة لرأس الفاتورة
* في البيان اضف جدول وخلي الخلايا تاخذ قيم البيان مثل سيريال واسم الخدمة الخ..
* إذا سويت كل شيء وشفته تمام لكن لازال التقرير فارغ الله يعينك ارفع مثالك بالمشكلة اللي فيه
وإن شاء الله يتم حل المشكلة
بالتوفيق
جربت نفس الكود على data grid view واشتغل وعرض نفس النتائج أعلاه ..
-
لاحظ ان البيانات لا تعرض في حالة وجود join بين جدولين .. أي جدولين عندي ما يعرض نتائجهم .. ولو أردت تغيير الجملة داخل نفس الداتا سيت إلى جملة تحتوي جدول واحد يعرض بصورة عادية ..
أيضا لاحظت شئ .. هو عند عرض جدولين .. إذا كان المفتاح الأٍساسي في الجدول الأول يرتبط بعنصر واحد من الجدول الثاني يتم العرض بصورة عادية أيضا .. المشكلة في حالة إرتباط المفتاح الأساسي بأكثر من عنصر من الجدول الأول كما في الصورة أعلاه ..
-
مثلا رقم الفاتورة 100000 أعلاه أرتبطت بشيئين .. مصابيح وفوانيس .. لا يتم العرض .. قمت بحذف أحد العنصرين فتم العرض !!
التقرير يعرض إن كان كل مفتاح أساسي من الجدول الأول يحتوي على مفتاح أجنبي واحد من الجدول الثاني ..
أي في حالة كانت العلاقة 1:1 .. لكن إن كانت 1:متعدد ما يشتغل .. مع أني متأكد انها كانت تشتغل عادي أول .. هل يوجد فرق في نسخة report viwer ؟؟
السلام عليكم ورحمة الله
أخي الكريم
لعمل استعلام من جدولين عليك بإنشاء جدول بيانات DataTable داخل DataSet الموجودة بالمشروع بالطريقة التالية:
افتح نافذة تصميم الداتاست DataSet الموجودة بالمشروع، وفي نافذة التصميم اضغط بالزر الأيمن على مكان فارغ واختر Add DataAdapter،
عندها ستفتح نافذة المعالج وبدايتها سترى نص الإتصال بقاعدة البيانات ConnectionString اتركه كما هو محدد واختر التالي Next،
بعدها ستجد ثلاث خيارات اتركه على الخيار الأول وهو Use SQL Statements واختر التالي Next،
وهنا ستجد المعالج يظهر لك بناء وتحرير الاستعلام وفي المحرر قم بنسخ الكود التالي (والذي هو منك أساساً ولكن بزيادة سطر)
والصقه داخل المحرر واختيار إنهاء Finish مباشرة
PHP كود :
SELECT
Exp_Invoice.Invoice_Id,
Exp_Invoice.SUPPLIER_Type,
Exp_Invoice.SUPPLIER,
Exp_Invoice.Invoice_Date,
Exp_Service.Service,
Exp_Service.Service_Price
FROM Exp_Invoice
INNER JOIN Exp_Service
ON Exp_Invoice.Invoice_Id = Exp_Service.Invoice_Id
WHERE Exp_Invoice.Invoice_Id = ?
الآن ستجد في نافذة التصميم الخاصة بالداتاست DataSet جزء جديد في الغالب اسمه DataTable1 وهو الذي سنستخدمه مع التقرير وليس الجداول الأخرى
أما في الفورم الخاص بعرض التقرير وبعد وضع أداة عرض التقرير وربطها بالتقرير افتح نافذة الكود والانتقال لحدث تحميل الفورم وقم بتعديل أمر تعبئة البيانات Fill ليكون بالشكل التالي
PHP كود :
Dim InvoiceId As Integer = 100001
Me.DataTable1TableAdapter.Fill(Me.Database1DataSet.DataTable1, InvoiceId)
كما هو ملاحظ فإن الأمر Fill هنا يريد معلمتين الأولى جدول البيانات DataTable1 والأخرى المعلمة InvoiceId التي يطلبها الاستعلام الجديد
السلام عليكم ورحمة الله
أخي الكريم
أضفت صورة لناتج ردي السابق
[attachment=8342]
مرحبا أخوي مهموم .. الله يعطيك ألف عافية ..
أنا أصلا قمت بنفس خطواتك .. لكن لا أريد عرض Invoice واحد لأنه هكذا سيعرض فاتورة بمحتوياتها من خدمات ..
أريد كل كل الفواتير بكل مافيهم من service وهو ما يظهر بشكل عادي في الداتا جريد .. وأيضا في الداتا تيبل عند إختباره .. لكن في التقرير يظهر فقط في حالة كانت كل فاتورة تحتوي خدمة واحدة ولا يظهر في حالة أحتوت أحدى الفواتير على أكثر من خدمة مرتبطة معها برقم الفاتورة ..
هنا مشكلتي .. ولك كل الود ..