表格内显示多表关联数据解决方案(Join,View,Lookup)
作者:C/S框架网  发布日期:2011/06/13 21:19:05
  表格内显示多表关联数据解决方案(Join,View,Lookup)

表格内显示多表关联数据解决方案(Join,View,Lookup)

文档介绍


开发基于数据库管理应用系统时,特别是业务单据的主从表会关联大量数据字典,比如订单业务会关联客户名称,产品名称,单位名称,货币名称等,而表结构只定义相关编号,如CustomerCode,ProductCode,UnitCode,CurrencyCode,业务表与字典表是通过编号建立主外键关联,但是在界面上,用户希望看到的不是编号而是名称。



最简单的做法是拖放一个表格,然后通过关联查询一次性取数据下来展示,用户即能看到编号又能看到对应的名称,两全其美。关于如何显示关联数据有很多种做作法,可谓仁者见仁,智者见智,实现上视需求不同而不同,下面我介绍几种常用做法:



1. 多表JOIN 查询,表格内显示多个表的数据。将查询逻辑写入存储过程,数据层调用SP。

2. 使用视图,将业务表与字典表作为视图关联起来,数据层从该视图获取数据。

3. 使用Lookup参照字段,适用于小数据量的字典表。



优缺点


方案1. 多表JOIN 查询,将SQL写入数据层或封装成SP。缺点是数据层SQL语句或存储过程会很多,不易维护。

方案2. 数据层SQL语句较少,业务表与字典表的逻辑关联在视图 (View) 内实现。

方案3. 使用LookUpEdit组件显示关联数据可减少DB服务器的查询压力,并且可以共享客户端缓存的字典数据,但有个致命的缺点:必须保证从数据库下载了字典数据才能使用LookUpEdit组件。此作法适用于显示少数据量的字典数据,比如:货币名称,单位名称,毕竟系统内用到的货币和单位数据不多。



建议选择性的使用以上三种方案。


方案1 GridColumn.ColumnEdit属性绑定LookUpEdit组件,用于显示产品名称或用户名。

贴图图片



贴图图片



方案3 GridColumn.ColumnEdit属性绑定LookUpEdit组件后数据显示,黄底色是参照字段(LookUpEdit)自动显示的数据。


贴图图片



贴图图片


C# Code:

/// <summary>
/// 查询类型
/// </summary>
public enum QueryType
{
   /// <summary>
   /// 多表Join查询
   /// </summary>
   JoinSQL,
   
   /// <summary>
   /// 从视图取数据
   /// </summary>
   View,
   
   /// <summary>
   /// 不使用任何关联查询,表格内用LookUpEdit控件展示关联数据。
   /// </summary>
   LookupField
}




 

C# Code:

/// <summary>
/// 本示范程序查询功能接口
/// </summary>
public interface IMultiQuery
{
   DataSet GetData(string PK);
   void ShowData(DataSet data);
}




 

C# Code:

/// <summary>
/// 对象工厂,跟据查询类型创建BLL。
/// </summary>
public class ObjectFactory
{
   public static IMultiQuery CreateQuery(QueryType queryType, XtraTabPage page, GridControl gc)
   {
      if (QueryType.JoinSQL == queryType) return new Demo_Join(page, gc);
      if (QueryType.View == queryType) return new Demo_View(page, gc);
      if (QueryType.LookupField == queryType) return new Demo_PhysicalTable(page, gc);
      return null;
   }
}





 贴图图片


如转载请注明出处,www.csframework.com C/S框架网


先附加数据库,然后修改DBHelper._ConnectionString 。


Source Code for VIP:




C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务

点击下载附件 点击下载附件 (如下载失败,请邮件通知我们寄回给您,或QQ:23404761留言.)
上一篇 下一篇