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

استخدام الـ stored procedure في التقارير

بدأه الأماني السامية في 13 يوليو 2011 · 40 رد · 3,931 مشاهدة · في تصميم وبرمجة التقارير
مشاركة: واتساب X فيسبوك تيليجرام
#26
KARIMSOFT كتب:

الرابط الخاص بي

انزلي هذا الملف وبعد انزاله قومي بفتحة وحملي قاعدة البيانات علية بجملة Attach قمي بوضع هذا الكود

USE [master]
GO
CREATE DATABASE [UNICODE] ON 
( FILENAME = N'C:\USERS\AMANI\DESKTOP\SAMPLESTRDPRO\SAMPLESTRDPRO\unicode.mdf' ),
( FILENAME = N'C:\USERS\AMANI\DESKTOP\SAMPLESTRDPRO\SAMPLESTRDPRO\unicode_log.ldf' )
 FOR ATTACH
GO

وبعد ذلك ستجدي قاعدة البيانات في قائمة قواعد البيانات علي اليسار بعد عمل ريفرش وفي التقرير

السلام عليكم

أخي KARIMSOFT أين أكتب الكود بالضبط .. لم أعرف أين؟؟

بحثت في جوجل عن الطريقة فوجدت طريقة يدوية اتبعتها

كما في الرابط التالي

ولكن ظهرت القاعدة بالشكل التالي

post-243731-053804400 1311550112_thumb.p

وعندما استدعيتها للتقرير ظهرت لي رسالة خطأ

post-243731-007936700 1311551760_thumb.p

أرجوكم أفيدوني.. أكون شاكرة لكم

المرفقات
1.png2.png

تم تعديل هذه المشاركة بواسطة الأماني السامية في 25 يوليو 2011 في 02:56

#27

اذا ظهرت القاعده بهذا الشكل يمكنك النقر Right Click علي القاعده ثم Rename ثم اكتبي اسم مناسب للقاعده مثل UNICODE

ستظهر بدون هذا الاسم الطويل الذي يحتوي علي مسار الملف

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#28
محمد فؤاد تركي كتب:

اذا ظهرت القاعده بهذا الشكل يمكنك النقر Right Click علي القاعده ثم Rename ثم اكتبي اسم مناسب للقاعده مثل UNICODE

ستظهر بدون هذا الاسم الطويل الذي يحتوي علي مسار الملف

جربت تغيير الاسم لم يفلح وظهرت رسالة الخطأ التالية:

post-243731-001674600 1311635632_thumb.p

لكن عند تطبيق طريقة الأخ KARIMSOFT أين أكتب الكود الذي أرفقه؟؟

المرفقات
3.png
#29

السلام عليكم ورحمة الله وبركاته

الله يجزاكم ألف خير أخواني محمد فؤاد تركي و KARIMSOFT

الحمدلله تمت الإجابة

بحثت عن سبب الخطأ ووجدت لإني كنت فاتحة اتصال بنفس القاعدة عن طريق برنامج الـ visual studio لذلك لم أستطع تغيير الاسم

والحمدلله اشتغل لدي التقرير بفضل الله ثم بمجهوداتكم

جزاكم الله ألف خير وجعلها في موازين حسناتكم وزادكم الله من علمه وزدتم في طاعته

هذه صورة من التقرير ولله الحمد

post-243731-010401400 1311645106_thumb.p

بقي لدي إضافة الـ parameter إلى الـ stored procedure سوف أبحث عنها وأنهيها بإذن الله

في أمان الله

أختكم

الأماني السامية

المرفقات
1.png
#30

الحمد لله :) شاهدي الرابط الذي ارفقتة لك سابقا بخصوص عمل Parameters داخل التقارير وان شاء الله يفي بالغرض وتستفيدين منه الكثير ونحن دائما في خدمة الاعضاء

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#31

يمكن ان تكون قاعدة البيانات في اي ماكن في الهارد دسك ليس الذام c:\ كما في المثال

#32

السلام عليكم ورحمة الله وبركاته

عدت للعمل على المشروع بعد فترة انقطاع بسبب الإجازة والاختبارت وسوف يكون تسليم المشروع بعد العيد بإذن الله

واجهتني الآن مشكلة في عرض التقرير .... التقرير خاص بعرض درجات طالب معين

فقد قمت بعمل الـ stored procedure التالي

ALTER PROCEDURE stud_grade

	@studID int

AS
SELECT        student.stud_ID, student.st_1name, student.st_2name, student.st_3name, student.st_4name, subject.sub_name, grade.sub_ID, grade.grade_num, 
                         grade.estimate
FROM            grade INNER JOIN
                         subject ON grade.sub_ID = subject.sub_ID INNER JOIN
                         student ON grade.stud_ID = student.stud_ID
                         WHERE grade.stud_ID = @studID


	/* SET NOCOUNT ON */
	RETURN

والكود في البرنامج بداخل حدث الضغط على زر الطباعة هو كالتالي

 string connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename='" +
                Application.StartupPath + "\\unicode.mdf';Integrated Security=True;User Instance=True";
           SqlConnection conn = new SqlConnection(connectionString);

           conn.Open();
           SqlCommand cmd = new SqlCommand("stud_grade", conn);
           cmd.CommandType = CommandType.StoredProcedure;

           /**** ADD Parameter ****/
           //SqlParameter oParam = cmd.Parameters.AddWithValue("@studID", ClassGlobal.ServName);

           SqlParameter oParam = new SqlParameter();
           oParam.ParameterName = "@studID";
           oParam.SqlValue = ClassGlobal.ServName;
           oParam.Direction = ParameterDirection.Input;
           oParam.SqlDbType = SqlDbType.Int;
           cmd.Parameters.Add(oParam);

           SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd);
           unicodeDataSet2 ds2 = new unicodeDataSet2();
           dataAdapter.Fill(ds2, "grade");
           cmd.ExecuteNonQuery();

           conn.Close();



            CrystalRedegree rep = new CrystalRedegree();
            rep.SetDataSource(ds2);
            _4_reportForm frm = new _4_reportForm();
            frm.crystalReportViewer1.ReportSource = rep;
            frm.Show();

ولكن عند عرض التقرير تظهر جميع الدرجات في جدول grade وليس الدرجات الخاصة بالطالب فقط

مع أنني قمت بتنفيذ كود الـ stored procedure لوحده وكان الناتج صحيح .. درجات الطالب فقط

فهذا معناه أن التقرير لم يستلم الوسيط "@studID"

فأين الخطأ وما الحل؟؟

وجزاكم الله ألف خير

#33

try this code

 string connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename='" +
               Application.StartupPath + "\\unicode.mdf';Integrated Security=True;User Instance=True";
            SqlConnection conn = new SqlConnection(connectionString);

            SqlDataAdapter dataAdapter = new SqlDataAdapter("stud_grade", conn);
            dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            dataAdapter.SelectCommand.Parameters.Add("@studID", SqlDbType.Int).Value = 3001;
            DataSet1  ds2 = new DataSet1 ();
            dataAdapter.Fill(ds2.Tables[0]);

            CrystalRedegree rep = new CrystalRedegree();
            rep.SetDataSource(ds2);
            _4_reportForm frm = new _4_reportForm();
            frm.crystalReportViewer1.ReportSource = rep;
            frm.Show();

اذا لم يعمل ارفقي نسخة جديد من البرنامج

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 18 أكتوبر 2011 في 22:31

#34
KARIMSOFT كتب:

try this code

 string connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename='" +
               Application.StartupPath + "\\unicode.mdf';Integrated Security=True;User Instance=True";
            SqlConnection conn = new SqlConnection(connectionString);

            SqlDataAdapter dataAdapter = new SqlDataAdapter("stud_grade", conn);
            dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            dataAdapter.SelectCommand.Parameters.Add("@studID", SqlDbType.Int).Value = 3001;
            DataSet1  ds2 = new DataSet1 ();
            dataAdapter.Fill(ds2.Tables[0]);

            CrystalRedegree rep = new CrystalRedegree();
            rep.SetDataSource(ds2);
            _4_reportForm frm = new _4_reportForm();
            frm.crystalReportViewer1.ReportSource = rep;
            frm.Show();

اذا لم يعمل ارفقي نسخة جديد من البرنامج

أشكرك على الرد

جاري التطبيق.......

#35
KARIMSOFT كتب:

try this code

 string connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename='" +
               Application.StartupPath + "\\unicode.mdf';Integrated Security=True;User Instance=True";
            SqlConnection conn = new SqlConnection(connectionString);

            SqlDataAdapter dataAdapter = new SqlDataAdapter("stud_grade", conn);
            dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            dataAdapter.SelectCommand.Parameters.Add("@studID", SqlDbType.Int).Value = 3001;
            DataSet1  ds2 = new DataSet1 ();
            dataAdapter.Fill(ds2.Tables[0]);

            CrystalRedegree rep = new CrystalRedegree();
            rep.SetDataSource(ds2);
            _4_reportForm frm = new _4_reportForm();
            frm.crystalReportViewer1.ReportSource = rep;
            frm.Show();

اذا لم يعمل ارفقي نسخة جديد من البرنامج

أخي الكريم ...

جربت الكود المرفق ولكن ظهرت لي رسالة خطأ التالية

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.

في السطر

dataAdapter.Fill(ds2.Tables[0]);

وعلى حد علمي أن رسالة الخطأ هذه تفيد بأن المفتاح الأساسي في الجدول ليس وحيد

فهل هذا يدل على أن طريقة صياغة الـ stored procedure خاطئة؟؟

أفيدوني جزاكم الله خير

#36
KARIMSOFT كتب:

try this code

 string connectionString = "Data Source=.\\SQLEXPRESS;AttachDbFilename='" +
               Application.StartupPath + "\\unicode.mdf';Integrated Security=True;User Instance=True";
            SqlConnection conn = new SqlConnection(connectionString);

            SqlDataAdapter dataAdapter = new SqlDataAdapter("stud_grade", conn);
            dataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;
            dataAdapter.SelectCommand.Parameters.Add("@studID", SqlDbType.Int).Value = 3001;
            DataSet1  ds2 = new DataSet1 ();
            dataAdapter.Fill(ds2.Tables[0]);

            CrystalRedegree rep = new CrystalRedegree();
            rep.SetDataSource(ds2);
            _4_reportForm frm = new _4_reportForm();
            frm.crystalReportViewer1.ReportSource = rep;
            frm.Show();

اذا لم يعمل ارفقي نسخة جديد من البرنامج

هذا مثال من المشروع

http://www.4shared.com/file/d71DW_3X/sample.html

#37

اخلي علي الدات ست وامسحي المفتاح الاساسي

علي العموم المثال تم تعديله في المرفق لم يرسل قاعد البيانات

sampleStrdPro.rar

1
#38
KARIMSOFT كتب:

اخلي علي الدات ست وامسحي المفتاح الاساسي

علي العموم المثال تم تعديله في المرفق لم يرسل قاعد البيانات

أشكرك على الاهتمام

جاري التطبيق....

#39
KARIMSOFT كتب:

اخلي علي الدات ست وامسحي المفتاح الاساسي

علي العموم المثال تم تعديله في المرفق لم يرسل قاعد البيانات

أخي الكريم

مازالت المشكلة قائمة .. أخليت الداتا سيت وحذفت المفتاح الأساسي.. ولكن دون جدوى

ملاحظة: عند وضع break point في الstored procedure لا يمر عليه التنفيذ

هل المشكلة تكمن هنا..

أرجوكم ساعدوني لا أريد التأخر أكثر

تم تعديل هذه المشاركة بواسطة الأماني السامية في 20 أكتوبر 2011 في 20:34

#40

غير مصدر البيانات في التقري الي الداتا سيت

1
#41
KARIMSOFT كتب:

غير مصدر البيانات في التقري الي الداتا سيت

الحمدلله عدد ماكان وعدد ما يكون وعدد الحركات والسكون

الحمدلله حلت المشكلة

أشكرك جزيييييل الشكر على المساعدة... وجعلها الله في موازين حسناتك .. وزادك الله من العلم ... وزدت في عبادته

الأماني السامية

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