这有点令人沮丧!我有一个搜索部分,您可以使用按钮滚动行,文本框更新行详细信息但是当我将新数据添加到数据库时,返回到我的搜索菜单,新添加的行没有显示?如何重置绑定源以完成此操作,或者至少使两个部分使用相同的数据?
我的代码: 调用Write2tableAddClient() `这里我希望添加这个刷新绑定代码
我的当前绑定在表单加载时触发:
Private Sub click()
sql = "Select * from tbl"
Using dbcon As New OleDbConnection(ACEConnStr)
Using cmd As New OleDbCommand(sql, dbcon)
dbcon.Open()
dtSample = New DataTable
dtSample.Load(cmd.ExecuteReader)
End Using
End Using
' initialize BS from DT
bsSample = New BindingSource(dtSample, Nothing)
TxtCI.DataBindings.Add("Text", bsSample, "ID")
End Sub
AddCustomer:
Private Sub AClient()
If con.State = ConnectionState.Closed Then con.Open()
cmd = New OleDbCommand
cmd.Connection = con
cmd.CommandText = "INSERT INTO tblcustomer(Title)VALUES(?);"
cmd.Parameters.Add("?", OleDbType.VarChar).Value = TxtName.Text
cmd.ExecuteNonQuery()
con.Close()
End Sub
标题
Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.\Database.accdb")
Dim cmd As OleDbCommand
Dim sql As String
Dim ds As New DataSet
Dim da As New OleDbDataAdapter
Dim RecCnt As Integer
Dim inc As Integer
Private ACEConnStr As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.\Database.accdb"
Private bsSample As BindingSource
Private dtSample As DataTable
答案 0 :(得分:1)
这是一个常见的错误。你做错了事。如果您有DataTable
包含数据,则不会将记录添加到数据库,然后刷新DataTable
。首先将记录添加到DataTable
,然后将该更改保存到数据库中。
无需刷新BindingSource
。它会暴露DataTable
中的任何内容。向DataTable
添加一个新行,您将在与BindingSource
绑定的任何内容中看到该行。将行添加到DataTable
后,首先使用您用于检索数据的相同数据适配器或表适配器将更改保存到数据库,即调用Update
on您调用Fill
的同一个适配器。
答案 1 :(得分:0)
如果你像我一样,并且有一些混乱的数据表,你可以随时轻松地重新加载表格,但显示你上次离开时的相同内容!
例如,当我将一个客户添加到数据库并使用绑定进行搜索时,我添加的信息将不会显示,所以在我的情况下,我添加了以下代码,以便我成功添加客户端时:
Dim frm = New main ' duplicate your form
frm.Show() ' show your new duplicated form
frm.AddCustomer() 'load back the menu you just left
Me.Close() ' close the old form as your new form will now load!
这对我来说是一个简单但有效的解决方案!可能不是一个漂亮的,但确实做到了:)在我的addcustomer方法中我有一个if语句所以一旦添加了客户,它会向你显示一个消息框,说明这样但是然后说"重新加载数据,请稍候& #34;所以人们不会去..为什么这只是重装?无论如何它对我有用,我不是世界上最好的编码器,我仍然在学习,但是老实说这是我想出的最好的哈哈。希望你们能与之相关!感谢:)