为何放弃INNER JOIN而改用DataRelation Object来建立一个RelationShip于两个Table。
2005-04-01 00:50
567 查看
(華版)
一般我们都是用INNER JOIN把来自不同table里的数据连接起来,而所得到的数据是整行(row);如果bind到DataGrid控件上,感观上不是那那么的好!反而如果我们用DataRelation来代替此INNER JOIN然后才bind到DataGrid控件上就会有更好的界面效果(见圖)。
'声明变量
Dim cn As SqlConnection
Dim da1 As SqlDataAdapter
Dim da2 As SqlDataAdapter
Dim ds As DataSet
Dim ParentColumn As DataColumn
Dim ChildColumn As DataColumn
Dim dr As System.Data.DataRelation
Try
'实例化SqlConnection Object
cn = New SqlConnection("Data Source=localhost;initial catalog=northwind;integrated security=true;")
cn.Open()
'实例化地一个别SqlDataAdapter于Customers表里的数据
da1 = New SqlDataAdapter("SELECT * FROM Customers", cn)
da2 = New SqlDataAdapter("SELECT * FROM Orders", cn)
'实例化DataSet Object
ds = New DataSet
'把所读取的数据储存到DataSet里
da1.Fill(ds, "Customers")
da2.Fill(ds, "Orders")
'创建DataRelation里的linking column
ParentColumn = ds.Tables("Customers").Columns("CustomerID")
ChildColumn = ds.Tables("Orders").Columns("CustomerID")
'实例化DataRelation Object
dr = New System.Data.DataRelation("Detail-Orders", ParentColumn, ChildColumn)
ds.Relations.Add(dr)
'将DataSet里的数据绑定到DataGrid控件里
DataGrid1.DataSource = ds
Catch ex As SqlException
'
MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
一般我们都是用INNER JOIN把来自不同table里的数据连接起来,而所得到的数据是整行(row);如果bind到DataGrid控件上,感观上不是那那么的好!反而如果我们用DataRelation来代替此INNER JOIN然后才bind到DataGrid控件上就会有更好的界面效果(见圖)。
'声明变量
Dim cn As SqlConnection
Dim da1 As SqlDataAdapter
Dim da2 As SqlDataAdapter
Dim ds As DataSet
Dim ParentColumn As DataColumn
Dim ChildColumn As DataColumn
Dim dr As System.Data.DataRelation
Try
'实例化SqlConnection Object
cn = New SqlConnection("Data Source=localhost;initial catalog=northwind;integrated security=true;")
cn.Open()
'实例化地一个别SqlDataAdapter于Customers表里的数据
da1 = New SqlDataAdapter("SELECT * FROM Customers", cn)
da2 = New SqlDataAdapter("SELECT * FROM Orders", cn)
'实例化DataSet Object
ds = New DataSet
'把所读取的数据储存到DataSet里
da1.Fill(ds, "Customers")
da2.Fill(ds, "Orders")
'创建DataRelation里的linking column
ParentColumn = ds.Tables("Customers").Columns("CustomerID")
ChildColumn = ds.Tables("Orders").Columns("CustomerID")
'实例化DataRelation Object
dr = New System.Data.DataRelation("Detail-Orders", ParentColumn, ChildColumn)
ds.Relations.Add(dr)
'将DataSet里的数据绑定到DataGrid控件里
DataGrid1.DataSource = ds
Catch ex As SqlException
'
MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
相关文章推荐
- C# 在一个SqlConnection中打开两个SqlDataReader
- IIS建立两个站点服务,只有一个公网IP
- 同一个页面中建立两个表单 各自提交
- 一个界面中如何使用两个tableView
- 11. 23. 4. 读写一个多边形 Reading Basic Data From an Object Stream
- 建立一个控制台应用程序向应用程序添加一个学生类,至少包含学号和成绩两个成员
- 使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)
- ORA-31693:Table data object xxx failed to load
- Qlikview Data Modeling---创建一个Key/Link Table
- csharp: DataRelation objects to represent a parent/child/Level relationship
- JQuery创建object 并自定义键、值(获取table中数据,封装成一个对象)
- 在一个DataWindow中修改多个Table
- Java中堆内存和栈内存_在建立一个对象时从两个地方都分配内存,在堆中分配的内存实际建立这个对象,而在堆栈中分配的内存只是一个指向这个堆对象的指针(引用)。修改栈指针就可以把栈中的内容销毁.这样最快
- ECLIPSE导入一个工程报了如下两个错误 (其中一个是The type java.lang.Object cannot be resolved )
- 通过View.post()获取View的宽高引发的两个问题:1post的Runnable何时被执行,2为何View需要layout两次;以及发现Android的一个小bug
- 多表-连表筛选代码(其中一个view有两个表格tableView)
- jface databinding:label provider 实现多列表格(Table)数据绑定的两个途径
- 一个form里有一个table,有两个按纽,如何提交到两个不同的action
- 用table表格建立一个课程表
- 建立一个table