环思产品论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2561|回复: 0
打印 上一主题 下一主题

[47759]设计表结构

[复制链接]

72

主题

76

帖子

533

积分

高级会员

Rank: 4

积分
533
跳转到指定楼层
楼主
发表于 2016-3-14 16:44:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liuyang 于 2016-6-16 11:22 编辑

概要:设计表结构主要是各个表里的字段进行统一管理。

功能描述:

首先【表名】是必填的,【单据类型】要注册生成,具体操作如下:
如何生成单据类型

1、输入表名

2、点击【保存】下面的【注册主档】就会自动生成一个单据类型

3、再点击【保存】下面的【跳到单据类型】进行单据类型的配置([24230]系统单据类型管理


单点功能说明
添加的单个按钮的业务描述

【注册为单据】把本表注册为单据,回写表的链接单据类型ID

【注册为主档】把本表注册成主档,回写表的链接单据类型ID

【跳转到单据类型】点击跳转到该表的单据类型管理

【跳转到DB脚本】点击跳转到该单据类型的DB脚本

【跳转到常量】选中有常量值的一行字段,点击跳转就可以对该字段的常量值进行管理

【跳转到单据公式】选中已生成常量值的一行字段,点击跳转就可以对该字段的常量值进行管理

【复制到产品】选中已经生成了编码规则的一行字段,点击跳转就可以对该字段的单据公式进行管理

【复制到产品】把本表复制到其他产品

【剪切到产品】复制出来的表剪其他产品

【注册表类型】相当于表变量

【生成表类型脚本】

【生成Trigger文件】

【父表名】相当于继承关系,父表里有的数据,子表里面就一定存在,但是字表里面也可以再添加新的数据。

【标题】表名的标题

【iIdenGroup】ID分组归类

【分组字段】、【所属项目】根据实际情况填写


字段
【导入】导入其他表的字段
【合并父类字段】父表里有的字段字表里没有就需要合并父类字段,保持子表和父表字段一致,查询父表必填字段,非必填但本表中有的也要合并本表中的重载字段,不合并父类字段

【从父表同步】当本表和父表的字段不一致时,就同步父表即可

【注册到标准库】把本表的某个字段注册到标准库

【从标准库同步】本表和标准库的字段不一致

【复制选中字段名】对该行数据进行复制的功能

【显示废弃字段】勾选上就会看到废弃了不用的字段,这边用到的action
DoIf(:f[bsEntityInfo.bShowAbandonedColumn]=0,EntitySet.Filter(dtlEntitySet,bAbandoned=0));#当这个字段名=0(未勾选),是否废弃字段(bAbandoned)也是未勾选,就不显示废弃字段
DoIf(:f[bsEntityInfo.bShowAbandonedColumn]=1,EntitySet.Filter(dtlEntitySet))#当这个字段名=1(勾选),dtl实体集的数据都会显示出来

【字段名】,【类型】
  
字段类型
  
描述
  bit
  0或1的整型数字
  int
  从-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型数字
  nvarchar
  变长Unicode的字符型数据,最大长度为8000
  varchar
  变长非Unicode的字符型数据,最大长度为8000  
  decimal
  从-10^38到10^38-1的定精度与有效位数的数字  
  numeric
  decimal的同义词
  float
  从-1.79E+308到1.79E+308可变精度的数字
  char
  定长非Unicode的字符型数据,最大长度为8000
  datetime
  从1753年1月1日到9999年12日31的日期和时间数据,最小时间单位为百分之三秒或3.33毫秒
  smallint
  从-2^15(-32,768)到2^15(32,767)的整型数字
  tinyint
  从0到255的整型数字
  money
  从-2^63(-922,337,203,685,477.5808)到2^63-1(922,337,203,685,477.5807)的货币数据,最小货币单位千分之十
  smallmoney
  从-214,748.3648到214,748.3647的货币数据,最小货币单位千分之十
  real
  从-3.04E+38到3.04E+38可变精度的数字
  smalldatetime
  从1900年1月1日到2079年6月6日的日期和时间数据,最小时间单位为分钟
  timestamp
  时间戳,一个数据库宽度的唯一数字
  Uniqueidentifier
  全球唯一标识符GUID
  text
  变长非Unicode的字符型数据,最大长度为2^31-1(2G)  
  nchar  
  定长Unicode的字符型数据,最大长度为8000
  ntext
  变长Unicode的字符型数据,最大长度为2^31-1(2G)
  binary
  定长二进制数据,最大长度为8000
  varbinary
  变长二进制数据,最大长度为8000
  image
  变长二进制数据,最大长度为2^31-1(2G)
【默认值】,一般时间是当前时间(getdate())
【UI可见】(界面上能不能看到),【UI非空】(字段名不能为空)
【链接常量】【常量值】自动注册生成,当该字段为枚举类型就需要有常量值。
【录入方式】用户手工录入,程序录入,程序回写,参照自动写入......
【资源】对字段名进行解释
【编码规则】字段名后有【编码规则】编号时,录入方式一定是程序写入,【编码规则】是对字段进行要求系统自动生成一个新的是生成几位年几位月的新的编号。
【自定义外键】主外键关系
【往来字段】
【DB外键】
【是否冗余字段】当该字段有【冗余依赖字段】就需要在【是否冗余字段】里打钩
【是否重载】当保存时字段报错,就需要在相对应的字段后面把【是否重载】给勾选上
索引
常规索引:IX_表名_字段名   IX__fiAmountDtl_iHdrId
主键索引:PK_表名      PK__fiAmountHdr
唯一索引:UQ_表名_字段名   UQ__fiAmountHdr_sBillNo

主键索引和唯一索引的字段值都是唯一的

约束:
要约束的名称和文本
校验:
1. 表的所属组织=产品组织2. 系统表必须是物理表,而且不能有项目分支3. 系统表不能有项目分支字段4. 校验单据类型是否有效5. 基表一定要设置分组字段
6. 表被多个过程insert,应该添加表类型7. 字段名不能重复8. Decimal字段要设置整数精度和小数精度9. 业务字段表必须填写录入方式10. 表变量类型,不能有iIden字段(模板会自动生成)
11. 表变量类型,不能有计算字段12. 表变量类型,不需要有回写字段13. 表变量类型,不需要冗余字段14. 表类型中的字段,原表必须有15.单据头表要添加时间戳字段
16. 非计算字段NVARCHAR(1000)以上的,建议NVARCHAR(MAX)17. 字段资源要写18. 业务表的sBillNo必须指定录入方式19. sBillNo如果是程序写入,必须指定单据编号公式ID
20. 公式中不允许有dbo.函数的调用21. 字段单号编码规则ID,是否存在22. 字段单号编码规则,是否合法23. tinyint类型,一定要有常量ID24. 检验字段前缀与类型,是否匹配25. 判断冗余字段是否存在
26. 冗余字段必须要指定往来字段27. i*ID命名的INT字段,要有外键28. DB外键与自定义外键,只允许有一个29. iHdrid的自定义外键不能指向自己30. 校验外键的表字段是否存在
31. 计算字段的公式,要非空(_基表除外)32. 表的分组字段,必须存在33. 表的分组字段,必须存在,而且是计算字段34. 有设置公式的,则必须是计算字段
35. 有设置数字公式,则必须设置常量值iConstValue(Hdr.iBillTableld=0的除外)36. 字段设置了常量值,则录入方式,必须定义为3,常量37. 字段设置常量值,则必须是计算字段,且公式=常量值,基表除外
38. iBillTypeId字段必须设置常量值,且必须=表的单据ID39. iBillTableId字段,必须设置常量值40. 单据内当前产品中是否有表的BillTableid重复
41. Char,varchar应设置为nchar,nvarchar(标准库设置为char的除外)42. 校验字段的长度类型,是否匹配43. 录入方式为程序回写的,必须备注或需求中说明在哪里回写,如何回写的
44. 字段链接常量的ID是否存在45. 字段链接的常量ID是否合法(产品树中存在且可用)46. 有默认值的,可以设置为非空47. 判断字段和标准库配置是否相同
48. 计算字段有约束的,必须要设置持久化49. 计算字段不能设置默认值50. 表字段有外键,应设置为非空51. 查找父表的ID,判断父表是否存在
52. 查找父表属性,判断iIdenGroup与父表的iIdenGroup是否相同,不同要报错的53. 父表里字段设置为废弃的,则子表里就不应该存在54. 校验父类字段是不是都是已经添加
55. 子表字段和父表的类型所有都一样56. 父表字段链接了常量,则子表链接的常量=父表链接常量57. 父类设置了常量字段,则子表常量值应该=父类的常量的值(iBillTableId除外)
58. 父表字段设定了单据公式id,则子表的单据公式=父表59. 父表字段非空,则子表必须非空60. 父表字段设置了默认值,则子表默认值应=父表默认值
61. 父表字段设置了录入方式,则子表录入方式要和父表一样62. bool类型的字段,录入方式应为763. ibillTableid字段的常量值=父表的分区字段,常量*10+父表的常量值,父表分组字段中包含ibillTypeid的除外64. iBillTableId是单据的区分点,如果按照iBilltype分组,iBillTableId不需要以上的原则65. 父表字段设置了计算公式的,则子表录入公式=父表公式66. 父表字段设置了新增/更新默认值的,则子表=父表
67. 非空无默认值的,UI非空应该=true68. 2个及以上的冗余字段的INT型字段,UI不可见(iMaterialid,sMaterialNo,sMaterNameiMaterlIdUI不可见)
69. 有冗余字段,且源字段链接了常量,冗余字段UI不可见(iStatus,sStatus,则sStatus字段UI不可见)70. 冗余字段分组共2个字段且类型不同的,只能有一个UI可见(iUnitid,sUnit)
71. 校验往来字段的类型,长度,精度,非空是否一致72. 检验表是否设置了主键73. 校验表外键是否有索引74. 父表的索引是否已经添加(父表是物理表的除外,可选字段索引除外)
75. 父表的约束是否添加76. 检测索引的字段是否存在77. 检测缺少的外键(UML中有外键,DB中没有的)78. 检测的那个表有FileStream列时候,是否有RowGuidcol列
参数:
【隐藏动态工具栏按钮】:按控件名称匹配,从FormConfig70项中排除控件
取消审核,审核,添加字段,生成Trigger文件,复制到产品,剪切到产品,注册为主档,注册为单据,跳转到单据公式,跳转到单据类型,跳转到常量,跳转到DB脚本,注册表类型,生成表类型脚本
参照说明:

【级联】;是85常量值,分为级联删除、级联更新、忽略约束

【录入方式】229常量,分为1.用户手工录入、2.程序写入、3.固定常量、4.外部导入、5.程序回写、6.计算字段、7.程序/用户录入、8.参照自动写入、9.用户参照录入

状态】1113常量,分为0.新建、1.提交、2.审核、3.开发完成、4.测试通过、9.无、99.废弃

单据类型】从系统单据类型,根据产品的所有父产品进行筛选

插入默认值】union all一起的数据包括 'getdate()'、 '#XX'、':iUserId'、 ':sUserNo'、':sUserName'、 ':iCompanyId'

【父表名】从表定义(存储表属性及说明),根据产品的所有父产品进行筛选

所属项目】从项目表(dvProject)根据所属产品读取数据

【类型】91常量,sql字段类型

UI显示与控制

【编辑】按钮,设置了权限功能,只有开通权限才可以对表里的数据进行编辑。

【添加字段】:个人需要在表里添加的字段需要在这里自己点击新增添加,经理审核后才可以通过。如下图

这里用到的action

EntitySet.ValidateEmpty(mainEntitySet);


       Entity.Retrive(outParam,42231,mainEntitySet);#执行 SQL,结果合并到 Entity 中,在sql里在原表名的前面加#的临时表,SELECT sTableName='#'+@sTableName1,iProductId=@iProductId1,iTableType=CASE                      WHEN@sTableNameFirst='#' THEN 1 ELSE 0 END

IF(:f[outParam.iTableType]=0);#确保表的类型是物理表

Invoke(AddNew);#调用新增的action

Entity.SetFieldValue(mainEntitySet,sTableName,:f[outParam.sTableName]);#表名的值传过来

Entity.SetFieldValue(mainEntitySet,iProductId,:f[outParam.iProductId]);#所属产品传过来

Entity.SetFieldValue(mainEntitySet,iTaskStatus,0);#表的状态为草稿


RefreshControl(btnAddColumn,false);#刷新添加字段按钮

约束:

QQ截图20160315140128.png (8.15 KB, 下载次数: 138)

QQ截图20160315140128.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|上海环思 ( 沪ICP备11022428号 )

GMT+8, 2024-11-9 04:19 , Processed in 0.107692 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表