[
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
هذا على حسب فهمي
أذا كان في كلامي خطاء الخبراء بارك الله فيهم مايقصروا بالشرح
والله اعلم