منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : العودة الي نفس السجل الذي تم تعديله
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
[attachment=1373]
السادة الافاضل

هذا مثال ممتاز لعملية الاضافة - الحذف والتعديل



لكن

كيف يتم العودة الي نفس السجل الذي تم تعديله
كود :
Private Sub btnEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEdit.Click
    ' برمجة الزر تعديل
    ' وهنا نفحص قائمة المشتركين، إن كانت فارغة يتم عرض رسالة تفيد ذلك
    ' وإلا فيتم عرض فورم تعديل السجل المختار وتحديث قاعدة البيانات والداتاقريدفيو

    If dgvList.Rows.Count < 2 Then
        MsgBox("القائمة فارغة", MsgBoxStyle.Critical, "عذراً")
    ElseIf dgvList.SelectedRows(0).Cells(0).Value = Nothing Then
        MsgBox("يجب اختيار سجل لتعديله", MsgBoxStyle.Critical, "عذراً")
    Else

        Dim displayRow As Integer = dgvList.FirstDisplayedScrollingRowIndex    '<<<<<<<<<<<<<<<<<<<<<<<<
        Dim indexRow As Integer = dgvList.SelectedRows(0).Index                '<<<<<<<<<<<<<<<<<<<<<<<<

        With frmEdit
            .RecID = Val(dgvList.SelectedRows(0).Cells(0).Value)
            .TheName = dgvList.SelectedRows(0).Cells(1).Value
            .TheBirthDate = dgvList.SelectedRows(0).Cells(2).Value
            .ShowDialog()
        End With

        dgvList.Rows(indexRow).Selected = True                  '<<<<<<<<<<<<<<<<<<<<<<<<
        dgvList.FirstDisplayedScrollingRowIndex = displayRow    '<<<<<<<<<<<<<<<<<<<<<<<<

    End If

End Sub
شكرا علي الكود البسيط الممتاز
الكود في المشاركة السابقة موجود أصلاً في المثال المرفق الأصلي.
الاستاذ ابو بكر
للاسف انا ممكن لا اكون شاهدته
وايضا مكان وضع الكود هو المهم

وهذا جهد للزميل يشكر عليه


واستكمالا

كيف عند اضافة سجل جديد اذا كان موجود من قبل يعطي رسالة بانه موجود من قبل ؟؟؟
شكرا
frmNew.vb

كود :
Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
    If txtName.Text = Nothing Then
        MsgBox("يجب إدخال الاسم", MsgBoxStyle.Critical, "عذراً")
        txtName.Focus()
    Else

        If ExistName(txtName.Text) Then '<<<<<<<<<<<<<<<<<<<<<<<<<
            MsgBox("الاسم موجود مسبقاً", MsgBoxStyle.Critical, "عذراً") '<<<<<<<<<<<<<<<<<<<<<<<<<
            Exit Sub                        '<<<<<<<<<<<<<<<<<<<<<<<<<
        Else
            SaveData()                      '<<<<<<<<<<<<<<<<<<<<<<<<<
        End If

        MsgBox("تم تخزين البيانات بنجاح", MsgBoxStyle.Information, "ألف مبروك")
        txtName.Text = Nothing
        txtName.Focus()
    End If
End Sub

Private Function ExistName(ByVal theName As String) As Boolean '<<<<<<<<<<<<<<<<<<<<<<<<<<
    Dim ExistDataSQl As String = "SELECT [TheName] FROM [TheTable] WHERE [TheName]=@TheName"
    Dim ExistDataCMD As New OleDbCommand(ExistDataSQl, Con)
    ExistDataCMD.Parameters.AddWithValue("@TheName", theName)
    Dim ExistDataADP As New OleDbDataAdapter(ExistDataCMD)
    If ExistDataADP.Fill(New DataTable) > 0 Then Return True
End Function
هو المطلوب بالضبط
شكرا
اول مرة اشوف هذا الكود
If ExistDataADP.Fill(New DataTable) > 0 Then Return True
اللي اعرفه انا هو
ExistDataADP.fill(dataset,"thetable")
برجاء توضيح الكود
الكود السابق يوضح اضافة جدول جديد من نوع داتا تيبول في الذاكره المؤقته ram من نفس الاسم ExistDataADP
مش الواحد يقوم بتعريف dataset مثلآ
فلما اروح اسوي new
معناته انا اعتمدت على متغير واحد من نوع داتا سيت معرف سابقآ في ميدوال
وبدأت انشاء له فضاء اخر بنفس الاسم
بدل ان اقوم بتعريف متغير اخر بأسم مثلآ dataset2
والداتا سيت هي عباره عن جدول في الداتا ادبتر
عند الاستعلام قام بأنشاء جدول جديد في الداتا أدبتر
وكذالك قام بالتحقق من هذا الجدول الجديد
مثل عملية تعريف ExistDataADP.fill(dataset.table) > 0
هذا على حسب فهمي
أذا كان في كلامي خطاء الخبراء بارك الله فيهم مايقصروا بالشرح
والله اعلم