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

مشكلة مع clear & fill dataset

مغلق
بدأه عبدالسميع في 13 فبراير 2005 · 3 رد · 686 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم،

وصف البرنامج :

عند اختيار اسم معين من combobox فإن بيانات التقرير المتعلق بهذا الاسم سيظهر في ال datagrid .

طريقة العمل :

يتم تكوين ال select command في اثناء عمل البرنامج و تخزين النتيجة في dataset اسمها reports1

المقطع المهم من الكود :

If OleDbConnection1.State = ConnectionState.Closed Then
            OleDbConnection1.Open()
            Me.OleDbDataAdapter4.SelectCommand.CommandText = " SELECT actiontaken, comments, desciption, employeeID, recordedby, refencedate, refrence, reportdate, reporttype FROM report" _
        & " where employeeid='" & ComboBox2.SelectedValue & "'"


                       Me.Reports1.Clear()

                        Try

                Me.OleDbDataAdapter4.Fill(Reports1)
                

            Catch efill As System.Exception
                MessageBox.Show(efill.Message)
                Throw efill
            End Try
            OleDbConnection1.Close()
                end if

المشكلة :

لاحظت اني في كل مرة اختار اسم مختلف فإن نتيجة ال select تضاف الى النتائج السابقة المعروضة في الdatagrid

قلت ربما يجب أن اعمل على مسح النتائج القديمة من الديتاست قبل الملأ بنتائج جديدة

فأضفت reports1.clear

أصبحت لا تظهر نتائج بالمرة في الديتاقريد

أضفت سطر جديد بعد سطر Me.OleDbDataAdapter4.Fill(Reports1)

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

datagrid1.datasource=reports1.report

فأصبح يعمل !

المطلوب :

هل توجد طريقة أفضل للوصول الى النتيجة المطلوبة وهي التخلص من النتائج القديمة في كل مرة

وهل تعمل clear على محو الارتباطات ؟!

تحياتي لكم.

تم تعديل هذه المشاركة بواسطة عبدالسميع في 13 فبراير 2005 في 21:01

#2

السلام عليكم و رحمه الله

تستطيع تحديد الـdatasource للـdatagrid عن طريق قائمه الــProperties الخاصه بالـ datagrid

ضع هذا الكود في الــForm_Load

Me.OleDbDataAdapter1.Fill(Me.Ds1, " report")

Ds1 اسم الـ Data set

و report اسم الـ Table

ثم ضع هذا الكود في الـ combobox

If Me.Ds1.Tables("report").Rows.Count > 0 Then

Me.Ds1.Tables("report").Rows.Clear()

End If

Me.OleDbDataAdapter1.SelectCommand.CommandText = "SELECT actiontaken, comments, desciption, employeeID, recordedby, refencedate, refrence, reportdate, reporttype FROM report where employeeid=" & Me.ComboBox1.SelectedItem

Me.OleDbDataAdapter1.Fill(Me.Ds1, "report")

#3

هل حاولت أن تستخدم ال DataView ؟؟

كل ماعليك هو أن تقوم باختيار جميع البيانات من قاعدة البيانات مرة واحدة فقط وفي كل مرة تريد أن تقوم بالبحث تستخدم ال DataView وتجعلها DataSource لل DataGrid

مثلاً:

Dim dv As New DataView(Ds1.Report)
dv.RowFilter="EmployeeID=" & ComboBox1.SelectedItem
DataGrid1.DataSource=dv

والله الموفق

#4

مستر كراك و عمار جعفر

شكرا لكما

أفادتني طريقة عمار باستخدام داتا فيو كثيراً .

احببت توثيق الحل للمستقبل.

شكرا لكما مرة أخرى.

هذا الموضوع مغلق.

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