Previous topicNext topic
Help > 使用指南 > 数据规范 >
数据规范说明

数据规范主要是指解决我们在表中输入、显示数据时几种通用的模式、规范。我们也可以换一种叫法:数据录入规范。我们可以通过这些规范的设置,即可以做到不写代码也可以完成常规开发的70-80%功能。

数据规范的类型有以下几种:请根据索引到相应的章节去详细了解其功能与使用方法。

ID 数据规范分类
1 自动编号
2 窗口选择
3 标准字典
4 图片字典
5 列表项目
6 系统变量
7 目录树筛选
8 自动填充
9 智能筛选

打开方式

打开表属性设置窗口——》点击“列数据规范”按钮切换到相应的视图——》点击“数据规范(RuleID)”列、“自动录入(RuleID)”、“字典规范(RuleID)”都可以打开“数据规范管理”窗口。

一些共性的属性介绍

规范名称 数据规范的名称,方便自己管理。

分类 给数据规范起一个目录名称,方便进行分类管理。也方便筛选。

数据源名称:是指当前数据规范涉及的数据库来源。

SQL语句:加载数据所用的SQL语句。这里的SQL语句不仅支持常规的SQL语句,另外还支持几种特殊的参数。 点击右边的编辑按钮还可以打开“SQL编辑”窗口,具体教程可以参考“SQL编辑窗口”。

框架中所有数据规范用到SQL语句的地方都增加了添加变量参数的功能。这样,我们就可以利用以下几种变量,以实现灵活的加载、筛选,甚至是做一些权限的设置。像全国地区下拉选择这样的需求,也可以利用变量实现有条件地动态加载。某种意义上,这种方式变相的实现了类似存储过程的效果。

1.全局代码中的系统变量。比如Proj.User.UserID这类的。

特殊字符 代表全局变量 实际引用属性
{U.S.E.R.N.M} 用户名称 Proj.User.UserName
{U.S.E.R.I.D} 用户ID Proj.User.UserID
{U.S.E.R.D.P.N.M} 部门名称 Proj.User.GroupName
{U.S.E.R.D.P.I.D} 部门ID Proj.User.GroupID
{U.S.E.R.P.G.I.D} 项目ID Proj.User.ProgramID
{U.S.E.R.P.G.N.M} 项目名称 Proj.User.ProgramName
{U.S.E.R.P.S.I.D} 职位ID Proj.User.PositionID
{U.S.E.R.P.S.N.M} 职位名称 Proj.User.PositionName
{U.S.E.R.C.P.I.D} 公司ID Proj.User.CompanyID
{Contain.Admin} 包含管理员权限 Proj.User.Roles.Contains(Proj.AdminRoleID)
{Contain.Developer} 包含开发者权限 Proj.User.Roles.Contains(Proj.DeveloperRoleID)
{AdminID} 管理员ID Proj.AdminRoleID
{DeveloperID} 开发者ID Proj.DeveloperRoleID

注意:在使用这类系统变量时得用一对单引号包住,如:GroupID='{U.S.E.R.D.P.I.D}'。另外,这类系统变量不是凭空就有的,需要我们在“代码管理 ”——>“登陆事件”——>“AfterConfirm”事件里面给每个用户根据实际的业务数据赋上值。

下面以一个示例来说明如何操作,示例中仅给用户的部门ID赋值,其他的如部门名称、公司名称这些得靠自己去扩展。

 Vb.Net
Dim dt As DataTableHelp=Proj.SysDataFactory("UserDB").ExecuteDataTableHelp("select * from EmployeeInfo where EmployeeID='" & Proj.User.UserID & "'")
If dt IsNot Nothing AndAlso dt.DataRows.Count>0 Then
    Dim dr As RowData=dt.DataRows(0)
    Proj.User.GroupID=dr("Department").ToString()
End If

 C#
DataTableHelp dt = Proj.SysDataFactory("UserDB").ExecuteDataTableHelp("select * from EmployeeInfo where EmployeeID='" + Proj.User.UserID + "'");
if (dt != null && dt.DataRows.Count > 0)
{
    RowData dr = dt.DataRows(0);
    Proj.User.GroupID = dr("Department").ToString();
}

2.当前行指定字段的值。

格式说明:{ R("字段名称")} R代表Proj.CurrentGrid.CurrentRowData

示例:

select typename from  PMWordtype where ID like '%{ R("ID")}'

3.指定当前窗体指定表当前行指定字段的值。

格式说明:{T("表名称").R("字段名称")}T代表当前窗口中名为“表名称”的表,R代表当前行中“字段名称”字段中的值。

4.指定窗体指定表当前行指定字段的值。

格式说明:{F("窗体名称").T("表名称").R("字段名称")},这个参数就跟代码Proj.OpenedForms("窗体名称").Grids("表名称").CurrentRowData("字段名称")的值一致。

5.Var变量

格式说明:{Vars("变量名")},这个参数就跟代码Proj.Vars("变量名")的值一致。

6、当前桌面当前窗体指定表当前行指定字段的值

格式说明:{D("表名称").R("字段名称")},这个参数就跟代码Proj.CurrentDesktop.CurrentForm.Grids("表名称").CurrentRowData("字段名称")的值一致。

7、父表的当前行指定字段的值

格式说明:{ P("字段名称")} P代表Proj.CurrentSmGrid.Relation.ParentGrid.CurrentRowData("字段名称")