2017-10-16 70 views
0

我正在使用VB来改变数据库中的记录。我有一个名为tblCustomers的表。当用户单击homeForm上的一个按钮时,会出现一个名为FormNewCustomer的新窗体,其中包含用于输入要放入数据库的信息的文本框。提交后,数据会插入,但不会显示在datagridview中。以另一种形式刷新数据网格

这是我的代码:

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

那不是它的工作原理。如果2个表单共享一个数据源,并通过该数据源(数据表,数据适配器)添加数据,则新数据将自动显示。此外,您不需要特殊表格 - 您可以将数据直接输入到数据绑定的DGV中。请阅读[问]并参加[游览] – Plutonix

+0

是的,这就是我设计它的原因。我将它设置为只读,以便用户只能通过表单更改它。有没有办法可以继续工作? – Joepowell567

+0

请阅读[问]并参加[旅游]。我建议的方法*避免*你遇到的问题。您还应该使用创建并使用表单实例 – Plutonix

回答

0

试试这个代码:

Dim objDataGridView As YourFormClassName = New YourFormClassName 
    objDataGridView.ShowDialog() 
相关问题