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

احتاج لكود الدوران على سجلات DataTable لإزالة التحديد عن خانة CheckBox

بدأه m00j في 25 فبراير 2012 · 12 رد · 1,270 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

الاخوة الكرام احتاج لكود يعمل حلقة دوران على كافة سجلات datatable ويزيل الاختيار من حقل باسم CHK وهو من النوع CHECK BOX .. هل هذا الكود صحيح .

For Each row As DataRow In dtDataTable.Rows
  dtDataTable.item("CHK").value = false
Next row

وشكرا

#2

For Each row As DataRow In dtDataTable.Rows

row("CHK").value = false

Next row

#3

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

#4
m00j كتب:

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

 

الأخ  icon_share.pngm00j

أرجوا التكرم بكتابة كود الدوران على السجلات لأني محتاجة جدا ولك جزيل الشكر

حيث كتبت هذا الكود ولا أعرف ما المشكلة

 

اقتباس
Private Sub Button1_Click(sender As Object, e As 
EventArgs) Handles Button1.Click
Try
' افتح قاعد البيانات
If Conn_Mdb.State = ConnectionState.Open Then 
Conn_Mdb.Close()
Conn_Mdb.Open()
Dim Command_Mdb As New OleDbCommand("SELECT * FROM 
[a_pass_log]", Conn_Mdb)
Dim DataTable_Mdb As New DataTable("a_pass_log")
DataTable_Mdb.Load(Command_Mdb.ExecuteReader())
Dim Datareader_Mdb As OleDbDataReader = 
Command_Mdb.ExecuteReader()
Dim a As Integer = 0
For Each row As DataRow In DataTable_Mdb.Rows
row("ID_MM").value = a
a = a + 1
Next row
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub

تم تعديل هذه المشاركة بواسطة ابو رفيق في 1 فبراير 2013 في 22:11

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#5

قد يفيد هذا الكود

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            ' افتح قاعد البيانات
            If Conn_Mdb.State = ConnectionState.Closed Then Conn_Mdb.Open()

            Dim Command_Mdb As New OleDbCommand("SELECT * FROM [a_pass_log]", Conn_Mdb)
            Dim DataTable_Mdb As New DataTable("a_pass_log")

            DataTable_Mdb.Load(Command_Mdb.ExecuteReader())

            For a As Integer = 0 To DataTable_Mdb.Rows.Count
                DataTable_Mdb.Rows(a)("ID_MM").value = a
            Next a
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        Finally
            Conn_Mdb.Close()
        End Try
    End Sub
#6
KARIMSOFT كتب:

 

قد يفيد هذا الكود

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            ' افتح قاعد البيانات
            If Conn_Mdb.State = ConnectionState.Closed Then Conn_Mdb.Open()

            Dim Command_Mdb As New OleDbCommand("SELECT * FROM [a_pass_log]", Conn_Mdb)
            Dim DataTable_Mdb As New DataTable("a_pass_log")

            DataTable_Mdb.Load(Command_Mdb.ExecuteReader())

            For a As Integer = 0 To DataTable_Mdb.Rows.Count
                DataTable_Mdb.Rows(a)("ID_MM").value = a
            Next a
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        Finally
            Conn_Mdb.Close()
        End Try
    End Sub

 

 

الأخ

شاكر ليك تجاوبك مع مشكلتي

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

 

أرجوا مساعدتي

حيث أن المطلوب هو عمل ترقيم تلقائي في الحقل (  ID_MM )  ونوعه رقم وقاعدة البيانات access حتى يمكن الاستفادة منه عند العرض في تقرير أو في داتا جريد فيو

post-221207-0-02077700-1359774914_thumb.

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#7

ممكن ترفق المشروع

يمكن الترقيم في التقرير نفسه دون الحاجة الي الترقيم في الداتا ست او الجدول

 

ما هو نوع التقرير

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 3 فبراير 2013 في 03:43

#8

المطلوب وضع كود تحت المفتاح Update Field ID_MM  from 1 to End

لعمل تعديل من الرقم 1 إلى آخر سجل بغض النظر عن رقم id المستخدم حتى يظهر في الداتا جريد فيو بشكل متسلسل

بحيث لو كان عندي 10 مستخدمين وتم حذف رقم 5 و 9 مثلا فيكون الترقيم من 1 إلى 8 وهكذا حيث نوع الحقل id رقم ونوع ID_MM رقم

Data_Base.rar

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#9

الأخوة الكرام أنا توصلت لهذا الكود وهو يعمل 100 / 100 ولكن مشكلته أنه مرتبط بالداتا جريد فيو بمعني بعد تحميل الداتا جريد فيو  أقوم باستدعاء الكود فيقوم بالتعديل حسب المطلوب ثم أضطر إلى تحديث الداتا جريد مره أخرى وهكذا

 

وهذا هو الكود

 

 

For i As Integer = 0 To DataGridView1.Rows.Count - 1
If DataGridView1.Rows.Count > 1 Then
'*********************************************************
If Conn_Mdb.State = ConnectionState.Open Then Conn_Mdb.Close()
Conn_Mdb.Open()
Command_Mdb.Connection = Conn_Mdb
Command_Mdb.CommandText = "Update a_pass_log Set [ID_MM] = '" & i + 1 
& "' where [id] = " & DataGridView1("ID", i).Value & " "
Command_Mdb.ExecuteNonQuery()
Command_Mdb.Dispose()
Conn_Mdb.Close()
'*********************************************************
'DataGridView1.Rows(i).HeaderCell.Value = i.ToString
End If
Next

 

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

بمعني أقوم بعمل جملة استعلام على كافة حقول الجدول ثم أضع عدد الحقول في متغير ثم ادخل كود التعديل في حلقة تكرار من 1 إلى آخر سجل بناءً على رقم معرف ID داخل الحلقة

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

 

وللعلم أنا بحثت وتوصلت لهذا الكود ولكنه لم يعمل معي

 

فهو قريب مما أريد وأريد التعديل عليه اذا تكرمتم

 

 

 

 
If Conn_Mdb.State = ConnectionState.Open Then Conn_Mdb.Close()
Conn_Mdb.Open()
Command_Mdb.Connection = Conn_Mdb
Command_Mdb.CommandText = "select * from [a_pass_log]"
Dim Datareader_Mdb As OleDbDataReader
Datareader_Mdb = Command_Mdb.ExecuteReader()
Try
While Datareader_Mdb.Read
ListBox1.Items.Add(Datareader_Mdb.Item("id") & " " & 
Datareader_Mdb.Item("full_name"))
If Conn_Mdb.State = ConnectionState.Open Then Conn_Mdb.Close()
Conn_Mdb.Open()
Command_Mdb.Connection = Conn_Mdb
Command_Mdb.CommandText = "Update a_pass_log Set [ID_MM] = '" & 
Datareader_Mdb.Item("id") & "' where [id] = " & 
Datareader_Mdb.Item("ID") & ""
Command_Mdb.ExecuteNonQuery()
Command_Mdb.Dispose()
Conn_Mdb.Close()
End While
TextBox6.Text = Datareader_Mdb.HasRows
Catch OleDbExceptionErr As OleDbException
Debug.WriteLine(OleDbExceptionErr.Message)
Catch InvalidOperationExceptionErr As InvalidOperationException
Debug.WriteLine(InvalidOperationExceptionErr.Message)
End Try
Conn_Mdb.Close()

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#10

اخي وجعتلي دماغي من هذا الكود ممكن ترفق المشروع

ممكن تخبرني بدقة ما الغرض من هذه الفكرة

#11

اخي الفاضل كريم سوفت

تحية طيبة وبعد

اولا نأسف لما سببناه لك من وجع في دماغك

و ألتمس منك سعة الصدر لأني منتقل من vb6 لسة طازة ومعنديش مصدر معلومات غير منتداكم العامر بأعضائه الكرام

 

ثانيا : سيدي الفاضل الفكرة بمنتهى البساطه كما في الجدول التالي وبالمناسبة هذه الفكرة ستتكرر معي كثيرا فيما يخص احتياجاتي في العمل لذلك احتاج لفهمها واتقانها

كما احب أن يكون لي طابعي الخاص في العمل وطريقة البرمجة

 

ID        ID_MM        Full_Name          User_Name        Pass_word
1             1               moh_moh            mm                     mm
2             2               sar _sar               ss                       ss
3             3               raf                        rr                       rr
5             4               sha                      s1                      sq
6             5               nna                      nn                      nn
8             6               kkk                       kk                      kk

 

 

لاحظ أخي ان الرقم 4 و 7 أرقام سجلات محذوفة تحت العمود ID وهذا أمر وارد في قواعد البيانات ولاحظ الحقل ID_MM الأرقام فيه مرتبة بالعدد الفعلي للسجلات تصاعديا ،

انا محتاج كود يقوم قبل ملئ الداتا جريد فيو بعمل تعديل للعمود ID_MM ليكون مرتبا تصاعديا حسب أو بمعلومية العمود ID بحيث استخدمه فيما بعد لعرض بشكل مناسب داخل الداتا جريد فيو أو تقارير كريستال كعمود مسلسل وهكذا

الفائدة الثانية أنا بحتاج كتير في شغلي أن أملئ جدول تمب من جدول أو اكثر حتى يسهل عملية الاستعلام أو الطباعة فلازم كود يمر داخل حلقة تكرار

 

انا كنت بستخدم كود في vb6 كتالي

 

sql = sql statment

rs.movefrist

do while rs.eof

               do some thing       

rs.movenext

loop

 

وبما أني مبتدا فأريد تعلم هذا الكود ومناقشته والإلمام به جيدا  في الدوت نت لأنه سيساعدني كثيرا فيما بعد

أرجوا أن تكون الفكرة واضحة أخي الكريم وألا اكون قد أثقلت عليك وتقبل مني كل التقدير والاحترام على مرورك الكريم بموضوعي والوقوف عليه ووضع رد سواء بالمساعده او عدمه

 

ثالثا : آه بالنسبه للمرفقات ستجدها في المشاركة السابقة 

تم تعديل هذه المشاركة بواسطة ابو رفيق في 3 فبراير 2013 في 08:18

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


#12

جرب هذا الكود

Private Sub DataGridView1_DataBindingComplete(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewBindingCompleteEventArgs) Handles DataGridView1.DataBindingComplete
        Dim DataTable_Mdb As DataTable = DataGridView1.DataSource
        For a As Integer = 0 To DataTable_Mdb.Rows.Count
            DataGridView1.Rows(a).Cells("ID_MM").Value = a
        Next a
    End Sub
End Class
#13

أخيرا تم التوصل للحل بالطريقة إلى أنا محتاجها وبالفكرة إلى في راسي وتعمل بكفاءة والحمد لله وسأضعها ليستفيد للإستفادة

 

 

 

Try
If Conn_Mdb.State = ConnectionState.Open Then Conn_Mdb.Close()
Conn_Mdb.Open()
Command_Mdb.CommandText = "select * from a_pass_log " ' "
Command_Mdb.Connection = Conn_Mdb
Datareader_Mdb = Command_Mdb.ExecuteReader
Dim i As Integer = 1
While Datareader_Mdb.Read
Sql_Mdb = "update [a_pass_log] set [ID_MM] = '" & i & "' where [id] = 
" & Datareader_Mdb.Item("ID") & "" ' "
Try
DataAdapter_Mdb.UpdateCommand = Conn_Mdb.CreateCommand
DataAdapter_Mdb.UpdateCommand.CommandText = Sql_Mdb
DataAdapter_Mdb.UpdateCommand.ExecuteNonQuery()
i = i + 1
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End While
Datareader_Mdb.Close()
Conn_Mdb.Close()
Catch exp As Exception
MsgBox(exp.Message)
End Try

 

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

:)  :)  :)  شكرا لكل من علمني حرفا :)  :)  :)


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

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

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

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

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