2017-10-16 3 views
0

J'utilise VB pour faire quelque chose pour changer les enregistrements dans une base de données. J'ai une table appelée tblCustomers. Lorsque l'utilisateur clique sur un bouton de la page d'accueil, un nouveau formulaire appelé FormNewCustomer apparaît et comporte des zones de texte pour que l'utilisateur saisisse les informations à mettre dans la base de données. Après l'avoir soumis, les données sont insérées, mais elles n'apparaissent pas dans la vue de données.Actualiser une grille de données sous une autre forme

Ceci est mon code:

Imports System.Data.OleDb 
Public Class FormNewCustomer 
    Public connstring As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=ProgramDatabase.accdb" 
    Public conn As New OleDbConnection(connstring) 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnCancel.Click 
     Me.Close() 
    End Sub 

    Private Sub btnCopy_Click(sender As Object, e As EventArgs) Handles btnCopy.Click 
     If txtCustomerName.Text = "" Or txtAC.Text = "" Then 
      MsgBox("Enter a Customer Name and a Customer Reference.") 
     Else 
      conn.Open() 
      Dim SqlQuery As String = "INSERT INTO tblCustomers (CustomerName,AC,Address,Phone,Email) VALUES (@CustomerName,@AC,@Address,@Phone,@Email)" 
      Dim SqlCommand As New OleDbCommand 
      With SqlCommand 
       .CommandText = SqlQuery 
       .Parameters.AddWithValue("@CustomerName", txtCustomerName.Text) 
       .Parameters.AddWithValue("@AC", txtAC.Text) 
       .Parameters.AddWithValue("@Address", txtAddress.Text) 
       .Parameters.AddWithValue("@Phone", txtPhone.Text) 
       .Parameters.AddWithValue("@Email", txtEmail.Text) 

       .Connection = conn 
       .ExecuteNonQuery() 
      End With 
      conn.Close() 
      MsgBox("Successfully added new Customer.") 
      FormHome.DataGridView1.Refresh() 
      Me.Close() 

     End If 
    End Sub 
End Class 
+1

Cest pas comment cela fonctionne. Si les 2 formulaires partagent une source de données et que vous ajoutez les données via cette source de données (datatable, dataadapter), les nouvelles données apparaîtront automatiquement. En outre, vous n'avez pas besoin d'une forme sperate - vous pouvez entrer des données directement dans une DGV liée à des données. S'il vous plaît lire [demander] et prendre le [tour] – Plutonix

+0

ouais, c'est juste comment je l'ai conçu pour être. Je l'ai mis en lecture seulement pour que l'utilisateur puisse seulement le changer à travers le formulaire. Y a-t-il un moyen de continuer à travailler? – Joepowell567

+0

S'il vous plaît lire [Ask] et prendre le [tour]. Je suggère des façons d'éviter les problèmes que vous rencontrez. Vous devez également utiliser créer et utiliser des instances de formulaire – Plutonix

Répondre

0

Essayez ce code:

Dim objDataGridView As YourFormClassName = New YourFormClassName 
    objDataGridView.ShowDialog()