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

خطأ أثناء فتح تقرير مصدرة 2 Stored Procedure

بدأه محمد فؤاد تركي في 27 سبتمبر 2012 · 12 رد · 1,877 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الزملاء

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

تم تصميم تقرير مصدر بياناتة 2 Stored Procedure

وتم تجربة الاجرائين من داخل SQL Server و هو يعمل جيد ولكن عندما اقوم بربط التقرير من خلال الشاشة لفتح التقرير بناء علي هذه الشروط يعطيني خطأ كالتالي

 sqlcon.Open()

            Dim cmd As New SqlCommand("RptTransIn", sqlcon)
            cmd.CommandType = CommandType.StoredProcedure
            Dim cmd2 As New SqlCommand("SumTafkeet", sqlcon)
            cmd2.CommandType = CommandType.StoredProcedure

            Dim _TexPrint As String = Convert.ToString(Me.TExPrint.Text)

            cmd.Parameters.Clear()
            cmd2.Parameters.Clear()

            cmd.Parameters.Add("@DAdd_Doc", SqlDbType.Int, 4).Value = _TexPrint
            cmd.Parameters.Add("@HAdd_Doc", SqlDbType.Int, 4).Value = _TexPrint
            cmd2.Parameters.Add("@DAdd_Doc", SqlDbType.Int, 4).Value = _TexPrint

            dt = New DataTable
            Dim dr As SqlDataReader
            Dim dr2 As SqlDataReader
            dr = cmd.ExecuteReader()
            dr2 = cmd2.ExecuteReader()

            dt.Load(dr)
            dt.Load(dr2)
            dr.Close()
            dr2.Close()
            Me.Dispose()
            TransInReport.Show()
            dt.Clear()

post-46243-035134500 1348759639_thumb.jp

المرفقات
1.jpg

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#2

ارجو المساعدة

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#3

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

post-46243-066528200 1348982713_thumb.jp

post-46243-012342600 1348982819_thumb.jp

Dim cmd As New SqlCommand("RptTransIn", sqlcon)
                cmd.CommandType = CommandType.StoredProcedure

                Dim cmd2 As New SqlCommand("[SumTafkeet]", sqlcon)
                cmd2.CommandType = CommandType.StoredProcedure

                Dim _TexPrint As String = Convert.ToString(Me.TExPrint.Text)

                cmd.Parameters.Clear()

                cmd.Parameters.Add("@DAdd_Doc", SqlDbType.NVarChar, (5)).Value = _TexPrint
                cmd2.Parameters.Add("@DAdd_Doc", SqlDbType.NVarChar, (5)).Value = _TexPrint
                cmd.Parameters.Add("@HAdd_Doc", SqlDbType.NVarChar, (5)).Value = _TexPrint

                dt = New DataTable

                Dim dr As SqlDataReader
                sqlcon.Open()
                dr = cmd.ExecuteReader()
                dr.Close()

                Dim dr2 As SqlDataReader
                dr2 = cmd2.ExecuteReader()
                dr2.Close()

                ' sqlcon.Open()
                dt.Load(dr)
                sqlcon.Close()

                Me.Dispose()
                TransInReport.Show()
                dt.Clear()
المرفقات
1.jpg2.jpg

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 30 سبتمبر 2012 في 08:28

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#4

المشكلة غير واضحة لأنى من حيث تصميم التقرير وربطه بالقاعدة او كود ايجاد البيانات م القاعدة

عموما جرب ربط التقرير بداتا سيت فهى افضل

#5

أخي الفاضل mero5000

سأوضح الامور أكثر فسأشرح لك طلبي بالضبط

أنا أقوم الان بتصميم تقرير يستعرض فاتورة الشراء والاجراء المخزن الخاص بالفاتورة هو

ALTER Proc [dbo].[RptTransIn]

@DAdd_Doc nvarchar (5)
,@HAdd_Doc nvarchar (5)

as
begin

SELECT     
HAdd_Doc,ZDate,Supplier,Payment,ItemNumber,ItemName, 
Unit,PurUnitPrice,isnull(QtyIn,0)as QtyIn,Total,isnull(Discount,0)as Discount,GrandTotal
FROM         dbo.AddDoc INNER JOIN
                      dbo.Transactions ON dbo.AddDoc.HAdd_Doc = dbo.Transactions.DAdd_Doc

WHERE    isnull(DAdd_Doc,DAdd_Doc) = isnull(@DAdd_Doc,DAdd_Doc)
and isnull(HAdd_Doc,HAdd_Doc) = isnull(@HAdd_Doc,HAdd_Doc) 

end

اضافة الي هذا الاجراء

اريد ان اقوم بتفقيط الفاتورة

فقمت بتصميم Stored Procedure آخر يقوم بعمل التجميع المطلوب مع تفقيط الفاتورة كالتالي

ALTER Proc [dbo].[SumTafkeet]

@DAdd_Doc nvarchar (5) = null
as
begin

SELECT  dbo.Tafkeet_EGP (Sum(GrandTotal)) as Tafkeet
FROM         Transactions
WHERE    isnull(DAdd_Doc,DAdd_Doc) = isnull(@DAdd_Doc,DAdd_Doc)

الان اصبح لدي 2 Stored procedure ومن المفترض انه سيكون التقرير مصدرة هذين الاجرائين لعرض بيانات الفاتورة ثم يتم تجميع صافي الفاتورة ثم تفقيطها كالتالي والتقرير يعمل بشكل سليم كما تشاهد

post-46243-068504700 1349021723_thumb.jp

وبعد ربط التقرير بعد تصميمة ظهرت لي مشكلة فتح التقرير

اتمني ان يكون المطلوب اتضح الان

المرفقات
1.jpg

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 30 سبتمبر 2012 في 20:47

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#6

فهمت قصدك فى المرة الاولى

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

مربوطه بالسيرفر

بقليل من الاكواد

#7

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

  1. تظهر رسالة تطالب بوضع قيمة للبارمتر إذا لم يتم تمريره برمجيا .
  2. myDataReport.SetParameterValue("MyParameter", "Hello");

  3. رابط.

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

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

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

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

#8

لقد رفعت لكم تجربتي مع التقرير كمثال للمساعدة فيه

مرفق قاعدة البيانات مع المثال

أخي الفاضل حسام

ارفقت لك Script DB لكي تعمل علي اصدار 2005 طرفك

وشكرا لكم علي التعاون

WindowsApplication1.rar

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 1 أكتوبر 2012 في 08:32

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#9

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

  1. نجعل الــ Modifier الخاص بــ Crystal Report Viewer كــ Public , و نمرر له التقرير من خارج الفورم , أي يكون لدينا الفورم عام لإظهار أي تقرير نريده و ليس لتقرير محدد . و هو فورم عليه الــ Viewer فقط و دون أي كود داخله.
  2. الكريستال ريبورت يقوم بالاتصال بقاعدة البيانات إذا لم يتم تمرير كافة البيانات له , و إذا لم يستطع الاتصال بالسيرفر نتيجة تغيير اسم السيرفر (بسبب النقل) تظهر نافذة تطالب بتحديد السيرفر و اسم المستخدم و قاعدة البيانات .
  3. و إذا لم يتم تمرير قيم البارمترات برمجيا , تظهر نافذة تطالب بإدخال قيمة البارمتر .
  4. كود الطباعة هو :
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        	SQLCon.Open()
    
        	Dim cmd As New SqlCommand("RptTransIn", SQLCon)
        	cmd.CommandType = CommandType.StoredProcedure
        	Dim cmd2 As New SqlCommand("SumTafkeet", SQLCon)
        	cmd2.CommandType = CommandType.StoredProcedure
    
        	Dim _TexPrint As String = Convert.ToString(Me.TextBox1.Text)
    
        	cmd.Parameters.Clear()
        	cmd2.Parameters.Clear()
    
        	cmd.Parameters.Add("@DAdd_Doc", SqlDbType.Int, 4).Value = _TexPrint
        	cmd.Parameters.Add("@HAdd_Doc", SqlDbType.Int, 4).Value = _TexPrint
        	cmd2.Parameters.Add("@DAdd_Doc", SqlDbType.Int, 4).Value = _TexPrint
    
        	Dim dt1 As New DataTable
        	Dim dt2 As New DataTable
    
        	Dim dr As SqlDataReader
        	Dim dr2 As SqlDataReader
        	dr = cmd.ExecuteReader()
        	dt1.Load(dr)
        	dr.Close()
    
        	dr2 = cmd2.ExecuteReader()
        	dt2.Load(dr2)
        	dr2.Close()
        	SQLCon.Close()
    
    
        	Dim rpt As New Rpt_TransIn
        	rpt.Load(Application.StartupPath & "\Reports\" & "Rpt_TransIn.rpt")
    
        	rpt.Database.Tables(0).SetDataSource(dt1)
        	rpt.Database.Tables(1).SetDataSource(dt2)
        	rpt.SetParameterValue("@DAdd_Doc", "DDDDD")
        	rpt.SetParameterValue("@HAdd_Doc", "LLLLL")
        	Form1.CrystalReportViewer1.ReportSource = rpt
        	Form1.Show()
    
    	End Sub

  5. المرفق بعد التعديل.

WindowsApplication1.rar

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

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

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

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

#10

أخي الفاضل حسام

شكرا جزيلا علي دعمك الدائم للمنتدي ولي شخصيا

التقرير اشتغل تمام التمام

و فكرة عمل Viewer واحد لجميع التقارير فكرة ممتازة جدا ولا كانت تخطر علي بالي وتستاهل عليها + 1000 :)

لكن لي سؤال أخير ماذا تعني "DDDDD" و "LLLLL"

post-46243-075861900 1349100745_thumb.jp

وشكرا لك حلولك الاكثر من رائعة ودعمك الدائم للمشاكل التي نواجهها

المرفقات
1.jpg

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 1 أكتوبر 2012 في 17:12

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#11

الاستاذ مجمد

اين فورم الفاتورة

يكفيني الننموذج الحالي مع طباعته

وهو عندك في مشروعك

شكرا

#12

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

بارك الله بك أخي محمد ....

اقتباس
لكن لي سؤال أخير ماذا تعني "DDDDD" و "LLLLL"
يوجد في التقرير بارمتران و كما قلنا , يجب تمرير قيم للبارمترات برمجيا حتى لا تظهر النافذة التي تطالبك بإدخال قيمة البارمتر , هذه هي الصورة :

post-46243-066528200%201348982713.jpg

و لكن بما ان البارمتران غير مسحوبين على التقرير , فإن التقرير يعمل دون تمرير القيم و بالتالي يمكن حذف هذين السطرين , و أنا في الحقيقة لم أعرف القيمة المطلوب تمريرها للبارمترين , فقمت بتمرير قيمتين عشوائتين هما DDDDD و LLLLL.

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

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

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

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

#13

شكرا جزيلا أخي الفاضل حسام علي الايضاحات

certifiedj.jpg

 

 

Image Hosted by ImageShack.us

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