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

نسخة كاملة : جربت كل الحلول المقترحة لتحديث Datagridview
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السَّلَامُ عَلَيْكُمْ وَرَحْمَةُ اللَّهِ وَبَرَكَاتُهُ 

وجدت حلولا لجميع سؤالاتي السابقة بارك الله فيكم

الان حصل لي مشكل  لا يتم تحديث البيانات في Datagridview في الفورم الثاني (FRM_EXAM) بعد اضافة  فحص جديد حتى اخرج و اعاود الدخول الى الفورم

(ملاحظة: يتم التحديث عادي. في الفورم الاول Patients_List بعد الاضافة بشكل عادي)

كيف الحل ؟ جزاكم الله خيرا
وعليكم السلام ورحمة الله وبركاته :

تم تعديل بعض الأكواد في بعض النوافذ ،، ولكن من أجل السرعة نسخت كل الاكواد التي في النافذة 
لذا عليك نسخ كامل الكود واستبداله بالكود الذي لديك في نفس النافذة ..
الاكواد تخص ثلاثة نوافذ ..

الأكواد في Form1 :

كود :
Imports System.Data.OleDb
Imports System.Data.SqlClient
Public Class Patients_LIST

   Dim ConStr As String = ("Provider=Microsoft.jet.oledb.4.0;" & "Data source =" & Application.StartupPath & "\MyData.mdb")
   Dim Conn As New OleDbConnection(ConStr)
   Dim SQLStr As String = "SELECT * From Table1"
   Public DataAdapter1 As OleDbDataAdapter
   Public Dt As New DataTable

   Sub fillDGV()

       Dt.Rows.Clear()
       DataAdapter1 = New OleDbDataAdapter(SQLStr, Conn)
       DataAdapter1.Fill(Dt)

       Me.dgvStudents.DataSource = Dt


   End Sub


   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       fillDGV()
   End Sub

   Private Sub txtSearch_TextChanged(sender As Object, e As EventArgs) Handles txtSearch.TextChanged

       Try

           Dim Dtcopy As DataTable = Dt.Copy

           Dim dv As DataView = Dtcopy.DefaultView

           dv.RowFilter = "ID+Nom+Prenom+Adresse+Tel like '%" & txtSearch.Text & "%'"

           dgvStudents.DataSource = dv
       Catch ex As Exception
           Exit Sub
       End Try

   End Sub

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

       ' Dim frm As New FRM_ADD_PATIENT

       FRM_ADD_PATIENT.ToDo = "add"
       FRM_ADD_PATIENT.Text = "Ajouter nouveau malade"
       FRM_ADD_PATIENT.Button1.Text = "Ajouter"
       FRM_ADD_PATIENT.Show()

   End Sub

   Private Function DataUpdate() As Boolean
       Try
           Me.BindingContext(Dt).EndCurrentEdit()
           Dim save As New OleDbCommandBuilder(DataAdapter1)
           DataAdapter1.Update(Dt)
           Dt.AcceptChanges()
           Return True
       Catch ex As Exception
           MsgBox(ex.Message)
           Return False
       End Try
   End Function

   Private Sub btnEdit_Click(sender As Object, e As EventArgs) Handles btnEdit.Click
       Try
           '  Dim frm As New FRM_ADD_PATIENT

           FRM_ADD_PATIENT.ToDo = "edit"

           FRM_ADD_PATIENT.Text = "Modifier le dossier de: " & dgvStudents.CurrentRow.Cells(1).Value
           FRM_ADD_PATIENT.Button1.Text = "Modifier"

           FRM_ADD_PATIENT.Id_Patient = dgvStudents.CurrentRow.Cells(0).Value

           FRM_ADD_PATIENT.TextBox1.Text = dgvStudents.CurrentRow.Cells(1).Value
           FRM_ADD_PATIENT.TextBox2.Text = dgvStudents.CurrentRow.Cells(2).Value
           FRM_ADD_PATIENT.TextBox3.Text = dgvStudents.CurrentRow.Cells(3).Value
           FRM_ADD_PATIENT.TextBox4.Text = dgvStudents.CurrentRow.Cells(4).Value
           FRM_ADD_PATIENT.TextBox5.Text = dgvStudents.CurrentRow.Cells(5).Value
           FRM_ADD_PATIENT.ComboBox1.Text = dgvStudents.CurrentRow.Cells(6).Value
           FRM_ADD_PATIENT.DateTimePicker1.Value = dgvStudents.CurrentRow.Cells(7).Value
           FRM_ADD_PATIENT.TextBox6.Text = dgvStudents.CurrentRow.Cells(8).Value


           FRM_ADD_PATIENT.Show()

           fillDGV()
       Catch ex As Exception
           Exit Sub
       End Try


   End Sub

   Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
       Try
           cmd = New OleDbCommand("Delete from Table1 where ID=" & dgvStudents.CurrentRow.Cells(0).Value, con)

           con.Open()

           cmd.ExecuteNonQuery()

           con.Close()

           MsgBox("Dossier supprimé", MsgBoxStyle.Information, "Supprimer")
           fillDGV()
       Catch ex As Exception
           Exit Sub
       End Try
   End Sub

   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
       Try
           'Dim frm As New FRM_EXAM

           FRM_EXAM.ToDo = "edit"

           FRM_EXAM.Text = "Le dossier de: " & dgvStudents.CurrentRow.Cells(1).Value

           FRM_EXAM.Id_Patient = dgvStudents.CurrentRow.Cells(0).Value

           FRM_EXAM.TextBox7.Text = dgvStudents.CurrentRow.Cells(0).Value
           FRM_EXAM.TextBox1.Text = dgvStudents.CurrentRow.Cells(1).Value
           FRM_EXAM.TextBox2.Text = dgvStudents.CurrentRow.Cells(2).Value
           FRM_EXAM.TextBox3.Text = dgvStudents.CurrentRow.Cells(3).Value
           FRM_EXAM.TextBox4.Text = dgvStudents.CurrentRow.Cells(4).Value
           FRM_EXAM.TextBox5.Text = dgvStudents.CurrentRow.Cells(5).Value
           FRM_EXAM.ComboBox1.Text = dgvStudents.CurrentRow.Cells(6).Value
           FRM_EXAM.DateTimePicker1.Value = dgvStudents.CurrentRow.Cells(7).Value
           FRM_EXAM.TextBox6.Text = dgvStudents.CurrentRow.Cells(8).Value


           FRM_EXAM.Show()

           '  fillDGV()
       Catch ex As Exception
           Exit Sub
       End Try
   End Sub
End Class


الأكواد في FRM_EXAM : 
كود :
Imports System.Data.OleDb
Imports System.Data.SqlClient
Public Class FRM_EXAM
   Dim ConStr As String = ("Provider=Microsoft.jet.oledb.4.0;" & "Data source =" & Application.StartupPath & "\MyData.mdb")
   Dim Conn As New OleDbConnection(ConStr)
   Dim SQLStr As String = "SELECT * From TBL_Exam"
   Public DataAdapter1 As OleDbDataAdapter
   Public Dt As New DataTable
   Public ToDo As String = "add"
   Public Id_Patient As Integer

   Dim cmdb As OleDbCommandBuilder

   Sub FillDGV()

       Try
           Dim sql As String = "select * from TBL_EXAM where ID_Malade=" & TextBox7.Text


           con.Open()
           Dim adapt As New OleDb.OleDbDataAdapter(sql, Conn)
           Dim dt As New DataTable()
           adapt.Fill(dt)
           Me.dgvCourses.DataSource = dt

       Catch ex As Exception
           MsgBox(ex.Message)
       Finally
           con.Close()
       End Try
   End Sub

   Private Sub FRM_EXAM_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       'Dim query As String
       'If ToDo = "add" Then
       '    query = "INSERT INTO Table1  (Nom, Prenom, Age, Adresse, Tel, Groupage, DateConsult, atcd) values (@Nom, @Prenom, @Age, @Adresse, @Tel, @Groupage, @DateConsult, @atcd)"

       'Else
       '    query = "Update Table1 set Nom=@Nom, Prenom=@Prenom, Age=@Age, Adresse=@Adresse, Tel=@Tel, Groupage=@Groupage, DateConsult=@DateConsult, atcd=@atcd where ID=" & Id_Patient

       'End If

       FillDGV()
   End Sub

   Private Sub btnNEW_Click(sender As Object, e As EventArgs) Handles btnNEW.Click

       Try
           Dim frm As New FRM_ADD_EXAM
           frm.ToDo = "add"
           frm.Text = "Nouvelle Consultation"
           frm.Button1.Text = "AJOUTER"
           frm.Show()

           frm.Text = " Nouvelle Consultation "

           frm.TextBox8.Text = Me.TextBox7.Text

           FillDGV()

       Catch ex As Exception
           Exit Sub
       End Try



   End Sub

End Class


الأكواد في FRM_ADD_EXAM : 
كود :
Imports System.Data.OleDb
Imports System.Data.SqlClient

Public Class FRM_ADD_EXAM
   Dim ConStr As String = ("Provider=Microsoft.jet.oledb.4.0;" & "Data source =" & Application.StartupPath & "\MyData.mdb")
   Dim Conn As New OleDbConnection(ConStr)
   Dim SQLStr As String = "SELECT * From TBL_EXAM"
   Public DataAdapter1 As OleDbDataAdapter
   Public Dt As New DataTable
   Public ToDo As String = "add"
   Public Id_Patient As Integer

   Dim cmdb As OleDbCommandBuilder


   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Try
           Dim query As String
           If ToDo = "add" Then
               query = "INSERT INTO TBL_EXAM  (ID_Malade, TA, Gly, Temperature, Saturation, FC, Diagnostic, Ordonance, LastDate) values (@ID_Malade, @TA, @Gly, @Temperature, @Saturation, @FC, @Diagnostic, @Ordonance, @LastDate)"

           Else
               query = "Update TBL_EXAM set ID_Malade=@ID_Malade, TA=@TA, Gly=@Gly, Temperature=@Temperature, Saturation=@Saturation, FC=@FC, Diagnostic=@Diagnostic, Ordonance=@Ordonance, LastDate=@LastDate where ID=" & Id_Patient

           End If


           cmd = New OleDb.OleDbCommand(query, con)

           cmd.Parameters.Add(New OleDb.OleDbParameter("@ID_Malade", OleDb.OleDbType.VarChar)).Value = TextBox8.Text
           cmd.Parameters.Add(New OleDb.OleDbParameter("@TA", OleDb.OleDbType.VarChar)).Value = TextBox1.Text
           cmd.Parameters.Add(New OleDb.OleDbParameter("@Gly", OleDb.OleDbType.VarChar)).Value = TextBox2.Text
           cmd.Parameters.Add(New OleDb.OleDbParameter("@Temperature", OleDb.OleDbType.VarChar)).Value = TextBox3.Text
           cmd.Parameters.Add(New OleDb.OleDbParameter("@Saturation", OleDb.OleDbType.VarChar)).Value = TextBox4.Text
           cmd.Parameters.Add(New OleDb.OleDbParameter("@FC", OleDb.OleDbType.VarChar)).Value = TextBox5.Text
           cmd.Parameters.Add(New OleDb.OleDbParameter("@Diagnostic", OleDb.OleDbType.VarChar)).Value = TextBox6.Text
           cmd.Parameters.Add(New OleDb.OleDbParameter("@Ordonance", OleDb.OleDbType.VarChar)).Value = TextBox7.Text

           cmd.Parameters.Add(New OleDb.OleDbParameter("@LastDate", OleDb.OleDbType.Date)).Value = DateTimePicker1.Value.Date

           con.Open()

           cmd.ExecuteNonQuery()

           MsgBox("Succés", MsgBoxStyle.Information, "Dossier")
           Me.Hide()



       Catch ex As Exception
           MsgBox(ex.Message)
       Finally
           con.Close()
       End Try

       FRM_EXAM.FillDGV()

   End Sub

   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
       Close()
   End Sub

End Class




للتبسيط ، المشكلة كانت أنك تستخدم نسخة من النافذة وليست النافذة نفسها
لذا عدلت الكود وقمت بإلغاء بعض الأكواد التي لا فائدة منها

ويحتاج الكثير من التعديلات ولكن ليس لدي الوقت الكافي للتعديل على المشروع أكثر..
وبات الان بإمكانك استكمال مشروعك ..
أحسن الله إليك