如何更新DataGrid中的记录?
A窗体中有一个DataGrid控件,显示数据库表C中的所有记录,向B窗体中输入数据,单击B窗体的确定按钮,保存数据到表C并且更新A窗体中DataGrid控件中的数据。这个更新如何实现?向各位大侠请教具体代码。 问题点数:30、回复次数:8Top
1 楼starsoft2006()回复于 2006-05-04 08:14:30 得分 0
重新给datagrid绑定数据就可以了
dim str as integer
dim dt as new datatable
str="select * from c "
dt=getdatatable(str) 'getdatatable是一个返回datatable的函数。
if dt.rows.count<> 0 then
datagrid1.datasource=dt
else
datagrid1.datasource=nothing
endifTop
2 楼drk928(一起看斜阳)回复于 2006-05-04 10:29:07 得分 0
1,B保存后,根据你的部局,找到A窗体.{MDI,父窗体等.}
2,更新A的DATAGRID.DATASOURCETop
3 楼alpha368(海纳百川)回复于 2006-05-04 12:53:47 得分 0
单击B窗体中的保存按钮,保存B窗体中的数据,然后用下面的语句更新,但仍然不行:
Me.SqlDataAdapter1.Update(Me.DsMoneyInOut1)
Dim frmB1 As New frmB
frmB1.DataGrid1.DataSource = DsMoneyInOut1.收支记录表
Top
4 楼alpha368(海纳百川)回复于 2006-05-04 14:44:13 得分 0
哪位大侠帮帮小弟啊,在线急等!Top
5 楼D303365900()回复于 2006-05-10 09:16:40 得分 0
我也正为这问题犯愁 !!Top
6 楼starring(漂流⊙一组)回复于 2006-05-10 09:40:53 得分 0
在B窗体下的按钮事件里面添上这些应该可以的了,其中A.后面是你在A窗体里面对象。如;adapter ds .
还有一点 你要更新时SELECT 语句里面必须有不绑定表的主键
Try
Dim cBuilder As New OleDbCommandBuilder(A.adapter) '创建一个CommandBuilder对象
A.adapter.UpdateCommand = cBuilder.GetUpdateCommand '为数据适配器adapter的更新命令赋值
A.adapter.Update(A.ds, "Grade") '更新数据集
A.ds.Clear() '清空当前数据集
A.adapter.Fill(A.ds, "Grade") '重新绑定数据适配器
DataGridView1.DataSource = A.ds.Tables(0).DefaultView '在datagrid中显示更新后数据
MsgBox("更新数据成功!", MsgBoxStyle.OkOnly, "请确认") '提示更新数据成功
Catch sqlExc As Exception '异常处理
MessageBox.Show(Err.Description)
Exit Sub
End TryTop
7 楼starring(漂流⊙一组)回复于 2006-05-10 10:02:24 得分 0
'以下为模块中定义的变量
Public Const connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\桌面\1dbTT.mdb"
Public conn As New OleDbConnection(connstring) '定义conn为连接数据库的实列
Public adapter As OleDbDataAdapter '定义数据适配器'
Public ds As DataSet '定义数据集'
‘此为A窗体中绑定数据库的代码
Try
Dim strQuery As String
strQuery = "select id as 序号,SendNumber as 报文名 from tab_DATA_Send order by queueDateTime desc"
adapter = New OleDbDataAdapter(strQuery, conn)
ds = New DataSet
adapter.Fill(ds, "Grade") '往适配器中添加数据集,表名为DOCTOR
DataGridView1.DataSource = ds.Tables(0).DefaultView
Catch sqlExc As Exception '异常处理
MessageBox.Show(Err.Description)
Exit Sub
End Try
'此为B窗体中按钮事件的代码
Try
Dim strCommand As New OleDbCommand
Dim strString As String
strString = "insert into tab_DATA_Send (SendNumber) values(" & "'" & TextBox1.Text & "') "
With strCommand
.Connection = Conn
.CommandText = strString
.ExecuteNonQuery()
End With
Dim cBuilder As New OleDbCommandBuilder(adapter) '创建一个CommandBuilder对象
adapter.UpdateCommand = cBuilder.GetUpdateCommand '为数据适配器adapter的更新命令赋值
adapter.Update(ds, "Grade") '更新数据集
ds.Clear() '清空当前数据集
adapter.Fill(ds, "Grade") '重新绑定数据适配器
DataGridView1.DataSource = ds.Tables(0).DefaultView '在datagrid中显示更新后数据
MsgBox("更新数据成功!", MsgBoxStyle.OkOnly, "请确认") '提示更新数据成功
Catch sqlExc As Exception '异常处理
MessageBox.Show(Err.Description)
Exit Sub
End Try
Top
8 楼starring(漂流⊙一组)回复于 2006-05-10 10:13:30 得分 0
还有个更简单的,就是把你在B窗体的保存按钮事件中保存代码的后面加上重新绑定数据库的代码(也就是重新扫描数据库)就行了。也能更新
'以下为模块中定义的变量
Public Const connstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\桌面\1dbTT.mdb"
Public conn As New OleDbConnection(connstring) '定义conn为连接数据库的实列
Public adapter As OleDbDataAdapter '定义数据适配器'
Public ds As DataSet '定义数据集'
‘此为A窗体中绑定数据库的代码
Try
Dim strQuery As String
strQuery = "select id as 序号,SendNumber as 报文名 from tab_DATA_Send order by queueDateTime desc"
adapter = New OleDbDataAdapter(strQuery, conn)
ds = New DataSet
adapter.Fill(ds, "Grade") '往适配器中添加数据集,表名为DOCTOR
DataGridView1.DataSource = ds.Tables(0).DefaultView
Catch sqlExc As Exception '异常处理
MessageBox.Show(Err.Description)
Exit Sub
End Try
'此为B窗体中按钮事件的代码
Try
Dim strCommand As New OleDbCommand
Dim strString As String
strString = "insert into tab_DATA_Send (SendNumber) values(" & "'" & TextBox1.Text & "') "
With strCommand
.Connection = Conn
.CommandText = strString
.ExecuteNonQuery()
End With
Dim strQuery As String
strQuery = "select id as 序号,SendNumber as 报文名 from tab_DATA_Send order by queueDateTime desc"
adapter = New OleDbDataAdapter(strQuery, Conn)
ds = New DataSet
adapter.Fill(ds, "Grade") '往适配器中添加数据集,表名为DOCTOR
Form4.DataGridView1.DataSource = ds.Tables(0).DefaultView '在datagrid中显示更新后数据
MsgBox("更新数据成功!", MsgBoxStyle.OkOnly, "请确认") '提示更新数据成功
MsgBox("更新数据成功!", MsgBoxStyle.OkOnly, "请确认") '提示更新数据成功
Catch sqlExc As Exception '异常处理
MessageBox.Show(Err.Description)
Exit Sub
End Try
Top




