同一个datagridview中使用两个不同数据源的问题
时间:2011-12-26
来源:互联网
如题,在实际工作中,遇到一部分数据从SQL server来(作为主表),一部分数据从DB2来(作为从表),需要把这两者显示在一个datagridview中,并且主表中的值,从表中未必有,相当于一个left join的关系,但是无法使用单纯的数据库办法解决
查了一下,用到datarelation,不过还是没效果,按照下面的代码,datagridview中没有显示任何东西。。。。
求帮助,还是有其他办法
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Public Class Form1
'set sqlserver
Dim sqlconnection As New OleDbConnection _
("Provider=SQLOLEDB.1;server:192.168.2.1;database=myDB;connect timeout=0;user_id=XX;password=XXX")
'set db2 object
Dim db2connection As New OleDbConnection _
("Provider=IBMDADB2;database=RPTDB;hostname=cshax9;protocol=TCPIP;port=50000;uid=xxxxx;pwd=xxxx;")
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sql1 = "select EQP_ID,AREA_ID from t_eqp_udata_name"
Dim sqlDataAdpapter = New OleDbDataAdapter(sql1, sqlconnection)
Dim ds = New DataSet()
sqlDataAdpapter.Fill(ds, "tableSQL")
Dim bs1 = New BindingSource()
bs1.DataMember = "EQP_ID"
bs1.DataSource = ds.Tables("tableSQL")
Dim sql2 = "select EQP_ID,State from fveqp"
Dim db2DataAdpapter = New OleDbDataAdapter(sql2, db2connection)
db2DataAdpapter.Fill(ds, "tableDB2")
'建立两表之间的关系
Dim parentColunm = New DataColumn
parentColunm = ds.Tables("tableSQL").Columns("EQP_ID")
Dim childColunm = New DataColumn
childColunm = ds.Tables("tableDB2").Columns("EQP_ID")
Dim dr = New DataRelation("NEQP_ID", parentColunm, childColunm, False)
ds.Relations.Add(dr)
DataGridView1.DataMember = "NEQP_ID"
DataGridView1.DataSource = bs1
sqlDataAdpapter.Dispose()
sqlconnection.Close()
End Sub
查了一下,用到datarelation,不过还是没效果,按照下面的代码,datagridview中没有显示任何东西。。。。
求帮助,还是有其他办法
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.SqlClient
Public Class Form1
'set sqlserver
Dim sqlconnection As New OleDbConnection _
("Provider=SQLOLEDB.1;server:192.168.2.1;database=myDB;connect timeout=0;user_id=XX;password=XXX")
'set db2 object
Dim db2connection As New OleDbConnection _
("Provider=IBMDADB2;database=RPTDB;hostname=cshax9;protocol=TCPIP;port=50000;uid=xxxxx;pwd=xxxx;")
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim sql1 = "select EQP_ID,AREA_ID from t_eqp_udata_name"
Dim sqlDataAdpapter = New OleDbDataAdapter(sql1, sqlconnection)
Dim ds = New DataSet()
sqlDataAdpapter.Fill(ds, "tableSQL")
Dim bs1 = New BindingSource()
bs1.DataMember = "EQP_ID"
bs1.DataSource = ds.Tables("tableSQL")
Dim sql2 = "select EQP_ID,State from fveqp"
Dim db2DataAdpapter = New OleDbDataAdapter(sql2, db2connection)
db2DataAdpapter.Fill(ds, "tableDB2")
'建立两表之间的关系
Dim parentColunm = New DataColumn
parentColunm = ds.Tables("tableSQL").Columns("EQP_ID")
Dim childColunm = New DataColumn
childColunm = ds.Tables("tableDB2").Columns("EQP_ID")
Dim dr = New DataRelation("NEQP_ID", parentColunm, childColunm, False)
ds.Relations.Add(dr)
DataGridView1.DataMember = "NEQP_ID"
DataGridView1.DataSource = bs1
sqlDataAdpapter.Dispose()
sqlconnection.Close()
End Sub
作者: bsbwind 发布时间: 2011-12-26
DataRelation 用来绑定两个DataGridView 可以连动,你只绑一个表自然只显示一个表的数据。
你这个问题我想直接用 DataTable Merge 就可以了。但是Merge相当于 Full outter join
VB.NET code
你这个问题我想直接用 DataTable Merge 就可以了。但是Merge相当于 Full outter join
VB.NET code
Dim dt1 As New DataTable dt1.Columns.Add("a") dt1.Columns.Add("b") dt1.Rows.Add("a1", "b1") dt1.Rows.Add("a2", "b2") dt1.Rows.Add("a3", "b3") dt1.Rows.Add("a4", "b4") dt1.PrimaryKey = New DataColumn() {dt1.Columns(0)} Dim dt2 As New DataTable dt2.Columns.Add("a") dt2.Columns.Add("c") dt2.Rows.Add("a1", "c1") dt2.Rows.Add("a2", "c2") dt2.Rows.Add("a5", "c5") dt2.PrimaryKey = New DataColumn() {dt2.Columns(0)} dt1.Merge(dt2) For Each row As DataRow In dt1.Rows Console.WriteLine(String.Join(",", row.ItemArray)) Next
作者: fangxinggood 发布时间: 2011-12-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28