在一个datagrid中显示两个表或多个表的内容,这种情况下如何更新操作?谁能提供个操作实例?谢谢!!

yanwc 2005-07-21 02:54:35
例如:
有一个员工工资表emp_salary
emp_id(员工编号) salary(薪水)
0001 3000
0002 3400

员工资料表 employee
emp_id emp_name(员工名称)
0001 张大海
0002 高大山

因为查询时总想带出员工的名称,所以,将数据源设置为:
select emp_salary.emp_id, employee.emp_name, emp_salary.salary
from emp_salary inner join employee
on emp_salary.emp_id = employee.emp_id

我是希望通过定义的次dataAdpter生成dataset,然后dataset连到dataGrid,dataGrid内容更新后,反映到dataSet,然后调用dataAdapter的方法提交,但是由于此处的数据源是从两个表里连接得到的,dataAdapter的InsertCommand、UpdateCommand、DeleteCommand无法自动生成了,所以,就无法通过自动生成的代码提交了,如果手工写会很麻烦,因为有的表的字段非常的多,比如说100个!

我连接的目的是取相关的员工姓名,这个例子是简化的,真实数据可能是极为复杂的,比如销售订单,需要连接获取客户名称、仓库名称、业务员名称、运输公司名称等等。

我想要的是:1,能通过连接获取我想要的相关的信息,2,希望能象操作单表那样方便的通过dataAdapter方便的提交dataSet中的数据。

想听听大家对这种情况如何处理?
...全文
305 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
蜗牛水里爬 2005-07-28
  • 打赏
  • 举报
回复
UP怎么还没解决啊,困死了~
yanwc 2005-07-27
  • 打赏
  • 举报
回复
自己顶一下,谁能提供个完整的解决方案?谢谢
yanwc 2005-07-23
  • 打赏
  • 举报
回复
谁还有好的建议,谢谢!!!
chenyun_424 2005-07-22
  • 打赏
  • 举报
回复
up
chenxianchu 2005-07-22
  • 打赏
  • 举报
回复
关注,慢慢看
w3k 2005-07-22
  • 打赏
  • 举报
回复
循环大量数据的时候,很慢
super_zhaowenke 2005-07-22
  • 打赏
  • 举报
回复
up
sz_lgp 2005-07-22
  • 打赏
  • 举报
回复
怎样来就怎样回去,用循环方式最好,是较麻烦一点,但不是难!
chamys 2005-07-22
  • 打赏
  • 举报
回复
關注中!
StarsRiver 2005-07-22
  • 打赏
  • 举报
回复
gz
蜗牛水里爬 2005-07-22
  • 打赏
  • 举报
回复

上次给你发的不能处理同时多个表的内容
现在下面这段是把DataGrid中的内容导回Table中,用上下2段代码组合起来处理就可以了。
Dim i, j As Integer
row = myTable.NewRow()
Me.DataGridView1.ReadOnly = False
MessageBox.Show(Me.DataGridView1.Rows.Count.ToString)
For j = 0 To Me.DataGridView1.Rows.Count - 2 '这里Me.DataGridView1.Rows.Count有点小问题,它会读取最后一行后面的不存在的行会报错,如果改成-2的话又少了内容。郁闷了,该上班了,晚上回来在看看~
For i = 0 To Me.DataGridView1.Columns.Count - 1
If j = 0 Then
myTable.Columns.Add((Me.DataGridView1.Columns.Item(i).Name.ToString))
End If
ss = Me.DataGridView1.Columns.Item(i).Name.ToString
If i = Me.DataGridView1.Columns.Count - 1 Then
row = myTable.NewRow()
End If
row(ss) = Me.DataGridView1.Item(i, j).Value.ToString

'MessageBox.Show(Me.DataGridView1.Item(i, j).Value.ToString)
If i = Me.DataGridView1.Columns.Count - 1 Then
myTable.Rows.Add(row)
End If
Next
Next
蜗牛水里爬 2005-07-21
  • 打赏
  • 举报
回复
Using myconn As New OleDbConnection("provider=microsoft.jet.oledb.4.0;password=''; user id =admin;data source = .\DATA.dll;")
myconn.Open()
Dim cmd As New OleDbCommand("Select * from 用户", myconn)
'Dim rdr As OleDbDataReader
Dim myTable As DataTable = New DataTable("myTable")
Dim dv As New DataView(myTable)
Dim myReader As OleDbDataReader = cmd.ExecuteReader
Dim i, j As Integer
Dim myDataRow As DataRow = myTable.NewRow
' myDataRow = myTable.NewRow()
j = 0
For i = 0 To myReader.FieldCount - 1
myTable.Columns.Add(myReader.GetName(i))
Next
' Dim colCount As Int32 = myReader.FieldCount
While myReader.Read
Dim RowValues(myReader.FieldCount - 1) As Object
'MessageBox.Show(myReader.GetValues(RowValues))
myReader.GetValues(RowValues)
'MessageBox.Show(myTable.LoadDataRow(RowValues, True))
myTable.LoadDataRow(RowValues, True)
End While
有多少个表就处理多少个表结构,加到myTable里面组合就可以了。
上面的是加载了一个表,后面可以在用SQL语句处理表,处理之后在加载就行了。
myconn.Close()
Me.DataGridView1.DataSource = myTable
End Using
hamadou 2005-07-21
  • 打赏
  • 举报
回复
通常的解决方法有两种
1。采用单条循环更新的方法,当然这样也就不会使用dataadapter了,那么这样的灵活性也最大,完成多表更新没有问题。
2。使用dataadapter,但是,你要在更新前分离你的datatable,因为这个datatable里面显示的是多表的数据,不是单表的。也就是说对于dataadapter来说,它根本就不支持多表更新操作,你必须分开来,使一个表对应一个dataadapter,分离后的datatable再指定给和它关联的dataadapter然后update回去。但是,这样的问题是,分离操作比较烦琐,而且效率未必就高!
不务正 2005-07-21
  • 打赏
  • 举报
回复
碰到过一样的问题,没有更好的方法,只好自己写update语句

string strUpdate=UPDATE score set "学号="+Int32.Parse(((TextBox)e.Item.Cells[1].Controls[0]).Text)+"',姓名='"+((TextBox)e.Item.Cells[2].Controls[0].Text+"',语文='"+Int32.Parse(((TextBox)e.Item.Cells[3].Controls[0]).Text)+"',数学='"+Int32.Parse(((TextBox)e.Item.Cells[4].Controls[0]).Text)+"',英语='"+Int32.Parse(((TextBox)e.Item.Cells[5].Controls[0]).Text)+"',政治='"+Int32.Parse(((TextBox)e.Item.Cells[6].Controls[0]).Text)+"' where 学号 like"+Int32.Parse(((TextBox).eItem.Cells[1].Controls[0]).Text)+;

关注!
zf19811031 2005-07-21
  • 打赏
  • 举报
回复
可以分别对他们操作的吧

16,556

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧