06-05-17, 04:45 PM
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
اخواني اعضاء المنتدى تحياتي لكم جميعاً
عندما اقوم بسحب البيانات من الداتا بيس (sql server 2008) وعرضها في الداتا كريد باستخدام الــ Threading
اول عمليه يتم عرض البيانات بدون اي خطا ولكن بعد ثاني عمليه يظهر الخطا , ورسالة الخطا ادناه
.System.IndexOutOfRangeException: Index 0 does not have a value
(at System.Windows.Forms.CurrencyManager.get_Item(Int32 index
(at System.Windows.Forms.DataGridView.DataGridViewDataConnection.GetError(Int32 rowIndex
وهذه الاكواد التي استخدمتها
هذه دالة عرض البيانات
()Private Sub GetData1
Try
If cs1.State = ConnectionState.Closed Then
() cs1.Open
End If
()ds1.Clear
("da1.Fill(ds1, "tablename
()cs1.Close
Catch
("تنبيه", MsgBoxStyle.OkOnly, "يوجد خطا")MsgBox
End Try
("Me.dg1.DataSource = ds1.Tables("tablename
End Sub
وفي الحدث لود
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CheckForIllegalCrossThreadCalls = False
End Sub
وهنا يتم تنفيذ الدالة
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
(thread1 = New System.Threading.Thread(AddressOf GetData1
()thread1.Start
End Sub
عندما يتم تنفيذ اول عملية تمام يتم سحب البيانات ولكن بعد العملية الثانية او الثالثة تبدأ رسالة الخطا بلظهور اعلاه
مع العلم انه اذا حذفت هذا الكود ("Me.dg1.DataSource = ds1.Tables("tablename
الموجود في الدالة يتم تنفيذ الكود بدون اخطاء ما سبب ظهور هذه الرسالة ارجو المساعده وشكراُ لكم

