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

يرجى توضيح لماذا لا تظهر نتيجة مع ان الكود نفسه في تعبئة داتا سيت

بدأه m.aljoul في 24 يوليو 2013 · 1 رد · 460 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم عندي الكود التالي لتعبئة داتا سيت:

                Dim Da As New SqlDataAdapter
                Dim CMD As New SqlCommand
                Dim x As New DataSet

                CMD.CommandText = "SELECT InvId, Resources_Table.ResName, InvDate, InvType, DocNo, Invoice_Header_Table.ResId, InvTotalQuantit," & _
                                "InvTotalPrice FROM Invoice_Header_Table INNER JOIN Resources_Table ON Resources_Table.ResId= Invoice_Header_Table.ResId " & _
                                "Where (InvDate Between @D1 And @D2) And (InvType = N'نقدي') Or (InvDate Between @D2 And @D1) And (InvType = N'نقدي')"

                CMD.Parameters.Add("@D1", SqlDbType.Date).Value = txtDate1.Value.Date.ToShortDateString
                CMD.Parameters.Add("@D2", SqlDbType.Date).Value = txtDate2.Value.Date.ToShortDateString

                CMD.Connection = Conn
                Conn.Open()
                CMD.ExecuteNonQuery()
                Da.SelectCommand = CMD

                Da.Fill(x)
                Conn.Close()
             
                MsgBox(x.Tables(0).Rows.Count)

وهو يعطيني نتيجة صحيحة:

والكود التالي:

Dim SQL_STR As String = "SELECT InvId, Resources_Table.ResName, InvDate, InvType, DocNo, Invoice_Header_Table.ResId, InvTotalQuantit," & _
                                "InvTotalPrice FROM Invoice_Header_Table INNER JOIN Resources_Table ON Resources_Table.ResId= Invoice_Header_Table.ResId " & _
                                "Where (InvDate Between @D1 And @D2) And (InvType = N'نقدي') Or (InvDate Between @D2 And @D1) And (InvType = N'نقدي')"



                Dim DA As New SqlDataAdapter(SQL_STR, Conn)
                Dim cmd As New SqlCommand(SQL_STR, Conn)

                cmd.CommandType = CommandType.Text

                cmd.Parameters.Add("@D1", SqlDbType.Date).Value = txtDate1.Value.Date.ToShortDateString
                cmd.Parameters.Add("@D2", SqlDbType.Date).Value = txtDate2.Value.Date.ToShortDateString

                'إذا كان الاتصال مع قاعدة البيانات مفتوح أغلقه
                If Conn.State = ConnectionState.Open Then Conn.Close()

                Conn.Open() 'فتح الاتصال
                cmd.ExecuteNonQuery()
                Me.DS_Res_Search.Clear()
                DA.Fill(Me.DS_Res_Search) 'تعبئة الداتا سيت باستخدام الداتا أدابتر
                Conn.Close() 'إغلاق الاتصال

                MsgBox(Me.DS_Res_Search.Tables(0).Rows.Count)

طبعاً بالكود الثاني هناك متغير على مستوى النموذج هو:

Dim DS_Res_Search As New DataSet

المهم الكود الأول يعطيني نتيجة

اما الثاني فيعطيني رسالة الخطأ التالية:

 

Must declare the scalar variable "@D1"

 

ما هو الخطأ أعزائي ؟؟

والسلام عليكم

اللهم اجعلنا أهلاً لحمل رسالة العلم ونشرها

لتنعم أمة الإسلام بخير العلم ونوره

www.ijoul.com

#2

هل انت عم تستعمل هذان الكودان بهذا التسلسل مع بعض؟

 

جرب cmd.Parameters.Clear قبل زيادة parameter في الكود الثاني ثم اضف ال parameter

Samir Ibrahim

VFP Blog

VB.NET Blog

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

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

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

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

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