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

  表格内显示多表关联数据解决方案(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框架网|原创作品.质量保障.竭诚为您服务

版权声明:本文为CSFramework文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

表格显示关联数据解决方案(Join,View,Lookup)
DevExpress表格某个列不显示数据解决方案(图)
C#开发实例-数据字典作为参考数据表格显示的两种方案
Winform软件快速开发平台 - 关于数据权限,表格列权限控制两种解决方案
GridView.OptionsView.ShowButtonMode 表格显示置按钮图标
表格指示列自动显示行号,表格数据源为空在表格中间显示提醒字符
Dev GridView Lookup组件同时操作编号和名称
表格GridView.CustomDrawEmptyForeground事件显示没有查询到数据
SQL UPDATE语句关联值函数(CROSS APPLY)关联更新数据
新增菜单窗体没有显示也不能导入菜单解决方案 - MenuItemTag详解
注意:更新结构后一定要刷新相关的View!
增值功能:数据字典自动生成流水号解决方案
原创:C/S架构快速开发框架通用可配置的数据修改日志解决方案
C# Dev GridView表格使用RepositoryItemPictureEdit显示图标或图片
CS开发框架对大并发大数据量以及数据库的支持方案是怎样的?
C/S框架-WebService架构下分页查询数据解决方案
解决组件被遮挡的问题(表格的滚动条不显示或隐藏)
数据字典与业务数据关系与查询
删除用户前逻辑判断,检查当前用户是否关联业务数据或创建业务数据
数据字典基础资料窗体主键设置为自动生成流水号码解决方案