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

التحديث في الاتصال المنفصل ؟؟؟؟

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

مرحبا ..عندي استفسار ومحتاجة توضيح

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

جربت في البداية هذا الاسلوب :

ملاحظة استخدمت بعض الرموز للسرعة + ارفقت ملف بألأكواد

nada.doc

#2

السلام عليكم

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

اللهم انصر الاسلام والمسلمين

2035881233.gif

#3

السلام عليكم

حياك الله أختي واحسن إليكِ

لنفترض أولاً أن لدينا العنصر BindingManagerBase لأجل الابحار و الاختصار في كل العمليات المتعلقة بمجموعة البيانات

لنبدأ بتعريف العنصر في اعلى صفحة تحرير النصوص البرمجية للنموذج

Dim BMB As BindingManagerBase

وهذا عنصر البيانات المرئية  DataView لتسهيل و التحكم بالصلاحيات او جمل الاستعلام والحذف ,,, وغير ذلك.
  Dim DVAuthors As DataView

ثم في حدث تحميل النموذج Form Load Event نقوم بربطة بهذا الشكل

DVAuthors = New DataView(DsMain1.Tables("Authors"))
BMB = Me.BindingContext(DVAuthors)

الان عند حدث الضغط على الزر حذف نكتب النصوص البرمجية التالية ,,

   Try
            With BMB

                'if There's no, this happend when no fill statement called.
                If .Position = -1 Then
                    btnDelete.Enabled = False
                    Exit Sub
                End If

                'if there  at least one or more rows
                If .Count > 0 Then

                    'Hold Current Position
                    HoldPosition = .Position

                    'Reomve the current Row
                    .RemoveAt(.Position)

                    Me.SBInfo.Text = "  السطر الحالي جاهز للحذف  "
                    UpdateDisplay()

                    'Conform Deletion
                    Dim msg As String
                    Dim title As String
                    Dim style As MsgBoxStyle
                    Dim response As MsgBoxResult
                    msg = "هل تريد متابعة حذف المؤلف الحالي  ؟"   ' Define message.
                    style = MsgBoxStyle.DefaultButton2 Or _
                       MsgBoxStyle.ApplicationModal Or MsgBoxStyle.YesNo Or MsgBoxStyle.MsgBoxRight
                    title = "تأكيد عملية الحذف"   ' Define title.
                    ' Display message.
                    response = MsgBox(msg, style, title)
                    If response = MsgBoxResult.Yes Then
                        Me.pboxAuthor.Image = Nothing
                        ConfirmDelectionData()
                        UpdateDisplay()
                        Me.SBInfo.Text = " تم حذف الؤلف رقم " & _
                        Me.txtAutorID.Text & " بنجاح   "

                    Else
                        Me.DsMain1.RejectChanges()
                        Me.SBInfo.Text = "تم تعطيل الحذف الحالي"

                        ' UpdateDisplay()
                        If HoldPosition > 0 Then
                            .Position = HoldPosition + 1
                            UpdateDisplay()
                        Else
                            .Position = HoldPosition
                            UpdateDisplay()
                        End If

                    End If
                End If
            End With
        Catch ex As Exception
            MessageBox.Show(ex.Message)

        End Try
    End Sub


وظيفة العرض للتحديث التلقائي تكون كالتالي 

 Public Sub UpdateDisplay()
        Try
            lblDisplayRecords.Text = (BMB.Position + 1).ToString()
            lblDisplayRecords.Text &= " / "
            lblDisplayRecords.Text &= BMB.Count.ToString()
            ReadImages()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

    End Sub


في عملية الحذف نحدث جدول الابن أولاً ثم جدول الاب بهذا الشكل

 Public Sub ConfirmDelectionData()
        Me.BindingContext(DVAuthors).EndCurrentEdit()
        Me.BindingContext(DsMain1, "Books").EndCurrentEdit()
        Try
            DABooks.Update(DsMain1, "Books")
            DAAuthors.Update(DsMain1, "Authors")
            Me.SBInfo.Text = "تم حذف المؤلف رقم " & "بنجاح"
            btnNew.Enabled = True
            EnableNButtons()
            InsertFlag = False
            DsMain1.AcceptChanges()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

في عملية التحديث أو التعديل يكون كالتالي 

  Public Sub UpdateDataSet()
        Me.BindingContext(DVAuthors).EndCurrentEdit()
        Me.BindingContext(DsMain1, "Books").EndCurrentEdit()
        Try
            Dim DataSetCopy As New DSMain
            With DsMain1
                DataSetCopy = DirectCast(.GetChanges, DSMain)
                DAAuthors.Update(DataSetCopy)
                .Merge(DataSetCopy)
                .AcceptChanges()
                If InsertFlag AndAlso identityMissingBool Then
                    .Authors.Rows.RemoveAt(BMB.Current)
                End If
            End With

            DABooks.Update(DataSetCopy)
            SBInfo.Text = "تم تحديث بيانات المؤلف الحالي بنجاح"
            btnNew.Enabled = True
            EnableNButtons()
            InsertFlag = False
            identityMissingBool = False
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

بالتوفيق إن شاء الله.

في المثال يتضح المقال

#4

ممتاز ..أخي يعطيك العافية فعلا كنت محتاجة افهم هاي الطريقة ..مشاء الله عليك بالتوفيق

بالي كثير كان مشغول ومحيرتني لكن ظروف عملي ماقدرت ادخل الا اليوم النت ...شكرا لك

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

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