لدي بيانات تظهر على اداة الداتاقريد وارغب عند تحديد مجموع سجلات من خلال اداة على الداتا قريد من نوع CheckBox
يتم تعديل السجلات كلا حسب رقم السجل الخاص به بحيث يصبح في حقل CheckBox الى False ولكن جميع السجلات المحددة على القريد من خلال التشك بوكس
السلام عليكم ورحمة الله وبركاته
اخي الكريم مثالك عمل معي بعض المشكلات مع كريستال ريبورت لذلك انشأت مثالا جديدا من عندي
اولا اختر حملة الاتصال التي تناسب البروفايد الذي عندك قاعدة البيانات اكسس 2003
لم افهم المطلوب بالضبط ولكن اعتقد انك تريد عملية حذف للسجلات بدون ان تحذف من الجدول فقط تتغير خالة التحميل الى الداتاغرايد من True الى false ولتنفيذ الامر يجب ان يكون لديك حقل في الجدول من نوع yes/no يتم التعديل عليه الى فولس عند اختيار السجل او السجلات التي تحدد من عمود Selected
الداتاغرايدفيو منعناها من انشاء الاعمدة بشكل اتوماتيكي وقمنا باضافة الاعمدة وربطناها بحقول الجدول واضفنا عمود اسميناه Selected نختار منه السجلات التي نريد لحذفها
اعمل الخير وأجرك لا تنتظره فالله خير من إليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات
05-03-21, 07:18 AM (آخر تعديل لهذه المشاركة : 05-03-21, 07:20 AM {2} بواسطة aftfm.)
الف شكر اخي العزيز ابراهيم مثالك ما اشتغل عندي على 2008
ولكن الفكرة ان لدي جدولين للاصناف وفيه حقل من نوع yes/no
وجدول آخر فيه نفس الحقول الجدول السابق
إذا تم حذف البيانات من الجدول الاول لا تحذف من الجدول الثاني فقط يتم التعديل على حقل yes/no تصبح تساوي False
اعمل على vb 2008
حاولت اعدل على كود الاخ الفاضل إبراهيم بارك الله فيه
لاضافة التعديل على الملاحظات وايضاً لم يتم التعديل الا في سجل واحد
كود :
If Con.State = ConnectionState.Open Then Con.Close()
Con.Open()
For i As Integer = 0 To Dgv_Table.Rows.Count - 1
If Dgv_Table.Rows(i).Cells("Column5").Value = True Then
Dim Cmd As New OleDbCommand("Update tblDropping SET Notes=@Notes, Cv_State=@Cv_State Where ID=@ID", Con)
Cmd.Parameters.Add(New OleDbParameter("@Notes", OleDbType.Char)).Value = Dgv_Table.Rows(i).Cells("Column1").Value.ToString
Cmd.Parameters.Add(New OleDbParameter("@Cv_State", OleDbType.Boolean)).Value = False
Cmd.Parameters.Add(New OleDbParameter("@ID", OleDbType.Integer)).Value = Dgv_Table.Rows(i).Cells("ID").Value
Cmd.ExecuteNonQuery()
End If
Next
Con.Close()
MessageBox.Show("تم تعديل البيانات في الارشيف", "تعديل", MessageBoxButtons.OK, MessageBoxIcon.Information)
SelectAll_Personal()
(05-03-21, 07:18 AM)aftfm كتب : الف شكر اخي العزيز ابراهيم مثالك ما اشتغل عندي على 2008
ولكن الفكرة ان لدي جدولين للاصناف وفيه حقل من نوع yes/no
وجدول آخر فيه نفس الحقول الجدول السابق
إذا تم حذف البيانات من الجدول الاول لا تحذف من الجدول الثاني فقط يتم التعديل على حقل yes/no تصبح تساوي False
اعمل على vb 2008
' حذف المحدد ' #Region " DeleteSelections() " Private Sub DeleteSelections() Try Dim w As New List(Of String) Dim chks As Integer = 0 For Each r As DataGridViewRow In Me.DataGridView1.Rows If r.Cells("printCheckBox").Value = True Then chks += 1 Next If chks > 0 Then Using conn As New OleDbConnection(connString) conn.Open() Dim sqlupdate = "UPDATE [tblDropping] SET [Notes]=@notes, [Core]=True WHERE [p_num]=@p_num" Dim sqldelete = "DELETE FROM [persons] WHERE [p_num]=@p_num" Using cmd As New OleDbCommand cmd.Connection = conn For Each r As DataGridViewRow In Me.DataGridView1.Rows If r.Cells("printCheckBox").Value = True Then ' تنفيذ التعديل ' cmd.CommandText = sqlupdate cmd.Parameters.Clear() cmd.Parameters.AddWithValue("@notes", If(r.Cells("Notes").Value Is Nothing, "", r.Cells("Notes").Value)) cmd.Parameters.AddWithValue("@p_num", r.Cells("p_num").Value) cmd.ExecuteNonQuery() ' تنفيذ الحذف ' cmd.CommandText = sqldelete cmd.Parameters.Clear() cmd.Parameters.AddWithValue("@p_num", r.Cells("p_num").Value.ToString) cmd.ExecuteNonQuery() End If Next End Using conn.Close() End Using ' تعبئة الداتاجريدفيو ' FillDataGridView() Else MsgBox("لم تقم بإختيار أي عنصر للطباعة", MsgBoxStyle.Exclamation, "خطأ") End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub #End Region