السلام عليكم عندي الكود التالي لتعبئة داتا سيت:
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"
ما هو الخطأ أعزائي ؟؟
والسلام عليكم