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

Updatebe And Delet In Datagrid

بدأه fadhelabass في 9 نوفمبر 2009 · 15 رد · 1,451 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي قاعدة بيانات مكونة من جدول واحد وعملت برنامج يربط مع القاعدة ويعرضه في الداتا كرد واظفت ازرار تعديل وحذف لكل سجل لكن ماعملت معي ارجو تعديل الكود الاسفل او عمل برنامج مبسط لكل اساتذتي الاجلاء لاني بحث في جميع المنتديات لكن لم اجد الحل

Imports System.Data.SqlClient

Imports System.Data

Public Class Form1

Dim queryString As String

Dim adapter As New SqlDataAdapter

Dim StrTbl As String

Dim dataSet As DataSet

Dim Dt As New DataTable

Private viewAc As New DataView

Dim Myds As New DataSet

Public connectionString As String = "Data Source=" + My.Computer.Name & "\SQLEXPRESS" + ";Initial Catalog=office;Integrated Security=True"

Public conn As New SqlConnection(connectionString)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim connectionString As String = "Data Source=FLH;Initial Catalog=office;Integrated Security=True"

Dim conn As New SqlConnection(connectionString)

conn.Open()

If conn.State = ConnectionState.Open Then

MsgBox("تم الأتصال بقاعدة البيانات بنجاح", MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = False + MsgBoxStyle.MsgBoxRtlReading = False + MsgBoxStyle.OkOnly, "برنامج الاتصال بقاعدة البيانات")

Else

MsgBox("لم يتم الاتصال ", MsgBoxStyle.Information + MsgBoxStyle.MsgBoxRight = False + MsgBoxStyle.MsgBoxRtlReading = False + MsgBoxStyle.OkOnly, "برنامج الاتصال بقاعدة البيانات")

End If

Dim Myds As New DataSet

Dim sql(1) As String

sql(0) = "select * from department "

Dim adapter As New SqlDataAdapter(sql(0), conn)

adapter.Fill(Myds, "department")

adapter.Fill(Dt)

conn.Close()

viewAc = Dt.DefaultView

DGRD.Rows.Clear()

For I As Integer = 0 To viewAc.Count - 1

With viewAc.Item(I)

Dim depid As String = .Item("depid")

Dim namedep As String = .Item("namedep")

Dim row As String() = {depid, namedep, "حفظ", "حذف"}

DGRD.Rows.Add(row)

End With

Next

End Sub

Private Sub DGRD_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGRD.CellContentClick

Try

'UPDATE

If e.ColumnIndex = 2 Then

With DGRD.CurrentRow

Dim depid As Integer = .Cells(0).Value

Dim namedep As String = .Cells(1).Value

Dim conn As New SqlConnection(connectionString)

Using command As New SqlCommand("department", conn)

command.CommandType = CommandType.StoredProcedure

command.Parameters.Add(New SqlParameter("@depid", depid))

command.Parameters.Add(New SqlParameter("@namedep", namedep))

conn.Open()

command.ExecuteNonQuery()

End Using

End With

MsgBox("تم تعديل السجل")

End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

End Class

#2

أخي العزيز, لماذا لا تستعمل الوضع المنفصل لربط الداتاجريد فيو مع الجدول على قاعدة البيانات.

- أولا, قم بربط قاعدة بيانات إلى المشروع و يقوم فيجوال ستوديو بإنشاء و تهيئة داتاست من أجلك

- ثانيا, قم بزيادة الداتاجريدفيو إلى الفورم و اختر الخاصية DataSource من على نافذة الخصائص و ستجد الجداول الموجودة على قاعدة البيانات التي قمت بزيادتها و عند اختيار الجدول سيقوم فيجوال ستوديو بزيادة الكائنات اللازمة لربط الداتاجريدفيو و ستكون عمليات الزيادة و الحذف و التعديل أوتوماتيكية في هذه الحالة بدون اللجوء إلى الكود.

إذا كنت تريد القيام بالأمر بالطريقة التي ذكرت فاعلم أن الطريقة التي اخترت معقدة جدا حيث ستحتاج إلى تسجيل وضع كل سطر من أسطر الداتاجريد (جديد, محذوف, محرر,...) و ستحتاج إلى جملة سكل لكل وضع من أوضاع السطر و هذا ما يقدمه لك الوضع المنفصل بدون كود معقد.

ملاحظة : ابحث في المنتدى عن درس حول ربط المشروع بقاعدة بيانات.

تحياتي...

#3

الى اساتذتي الاجلاء لقد ارفق مثال لطلبي ارجو التعديل عليه جزاكم الله خيرا

update_in_datagrid.rar

#4

اتبع الخطوات التي كتبتها لك في ردي السابق و لن تكون مجبرا على كتابة كل ذلك الكود, فيجوال ستوديو يتكلف بكل شيء من أجلك.

ها هو نفس المشروع بستة أسطر كود فقط.

كان هناك درس جيد في الموضوع على منتدى ADO.NET و لكن صور الدرس تم حذفها لأنه لم يتم تحميلها على سيرفر المنتدى.

أخي العزيز, إبحث عن درس في موضوع ربط قاعدة بيانات بالمشروع عن طريق فيجوال ستوديو, الأمر بسيط و فعال...

update_in_datagrid.rar

#5

اخي جزاك الله خيرا

لكن بدي اعرف كيف اعملها بالكود لكل سجل جزاك الله خيرا كما في المثال السابق

#6

الى اساتذتي الاجلاء

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

#7

إليك المشروع بعد التعديل. أولا, التعديل يجب أن يكون عند نهاية تحرير الخلية أي في الحدث CellEndEdit. الكود الذي قمت بتحريره أو زيادته قمت بزيادة تعليق عليه (تحرير ') كي تستطيع مقارنته بالكود السابق...

update_in_datagrid.rar

#8

الى اساتذتي الاجلاء

شكرا علىالرد الذي اوصلني الى الحل لكن عندما احذف سجل لا يختفي اي لايحذف الا عندما اغلق البرنامج وافتحه من جديد

________________.rar

#9

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

لحل المشكل المطروح قم بزيادة السطر التالي مباشرة بعد conn.Close() في كود الحذف :

If n = 1 Then DGRD.Rows.RemoveAt(e.RowIndex)

هذا لا يحل مشكل الخلط بين الوضعين المتصل و المنفصل.

#10

استاذي الجليل محمد رضى وكل اساتذتي

كما تقول ان هناك خلط في الوضع المتصل والمنفصل

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

#11

استاذي الجليل محمد رضى وكل اساتذتي

انا في الانتضار

#12

الى اساتذتي الكرام واستاذي العزيز محمد رضى ارجو اعطائي بعض الملاحظات والتعديل عليه لانكم اكثر خبرة مني ومنكم تعلمت

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

_____________________.rar

المثال التالي فيه عندما اضيف صف واغلق البرنامج لايضيف الصف الا اضيف صف جديد فيظهر الصف القديم

de_up_ad_in_datagrid.rar

جزاكم الله خيرا

#13

بالنسبة للفئة OleDbAdapter التي تمكننا من قراءة و زيادة و تحرير و حذف البيانات من قاعدة البيانات في الوضع المنفصل, يمكنك تهيئة كائن واحد global على مستوى Form في الحدث Load بجمل سكل لتحميل و زيادة و تحرير و حذف التسجيلات من الجدول و بعد عملية التهيئة تستطيع التعامل به وقتما شئت بدون الحاجة لإنشاء كائنات اخرى من نفس النوع.

سأقوم إن شاء الله بتعديل البرنامج حالما أجد بعض الوقت لذلك.

#14

جزاك الله خيرا وانا في الانتضار

#15

المشروع المرفق يتصل بقاعدة البيانات في الوضع المنفصل و يقبل كل العمليات من زيادة, حذف, تحرير بدون أي كود لأن الداتاجريدفيو تقوم بكل ذلك في الوضع المنفصل. الفورم ليست به أزرار فقط قم بتحرير الخلية و سيتم حفظ عملية التحرير عند النقر على الزر حفظ. لزيادة تسجيل جديد قم بالكتابة على السطر الأخير المخصص لزيادة سطر جديد. لحذف سطر قم بالنقر على الهيدر الموجود على اليسار حتى يتم تحديد السطر بكامله ثم اضغط على الزر Del من على لوحة المفاتيح.

الكود معلق عليه بالتفصيل.

أتعبتك معي أخي fadhelabass و لكن هذه قوانين المنتدى و المنتدى غرضه تعليمي بالدرجة الأولى.

de_up_ad_in_datagrid.rar

#16

استاذي العزيز محمد رضى

اسف لتاخيري على الرد عليك

جزاك الله خيرا لكن اريد الحفظ لكل سجل في الدات كرد وليس البيانات ككل في الداتا كراد لاني محتاجة في موظوع اخر جزاك الله خيرا

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