AOTTableFieldList       AOTTableFieldList ,TableFieldNode;
TableName tableName = "SML_InventTableExt";
FieldName newFieldName = "SML_StorageLifeType";
Types newFieldType = Types::Integer;
int newFieldLength = 30;
str labelId = literalstr("@SML7726"); str ExtendedDataType ="";
ExtendedTypeId ExtendedTypeId = ExtendedTypeName2Id(ExtendedDataType); str EnumType = "SML_DaysUnitType"; TreeNode tableNode ,fieldNode ;
DictType DictType; #AOT
#Properties
#ACT_DynamicReport
;
tableNode = TreeNode::findNode(#TablesPath+'\\'+tableName) ;
AOTTableFieldList = TreeNode::findNode(#TablesPath+'\\'+tableName+'\\'+#ACT_AOTFieldsNode); fieldNode = AOTTableFieldList.AOTfindChild( newFieldname); if( fieldNode != null)
throw error(newFieldName + " allready exists in table " + tableName); if( ExtendedDataType )
{
if( ! ExtendedTypeId)
throw error( "ExtendedType type num error"); DictType = new DictType(ExtendedTypeId);
newFieldType = dictType.baseType();
}
else if (EnumType)
{
newFieldType = types::Enum;
} switch( newFieldType)
{
case Types::Date: AOTTableFieldList.addDate( newFieldName); break; case Types::Enum:
AOTTableFieldList.addEnum(newFieldName); break; case Types::Guid:
AOTTableFieldList.addGuid(newFieldName);
break; case Types::Int64:
AOTTableFieldList.addInt64(newFieldName);
break; case Types::Integer:
AOTTableFieldList.addInteger(newFieldName);
break; case Types::Real:
AOTTableFieldList.addReal(newFieldName);
break; case Types::String:
case Types::RString:
case Types::VarString:
AOTTableFieldList.addString(newFieldName);
break; case Types::DateTime:
AOTTableFieldList.addTime(newFieldName); break;
case Types::Container: // can add
continue; } TableFieldNode = AOTTableFieldList.AOTfindChild( newFieldName); if( newFieldType == types::String || newFieldType == Types::RString || newFieldType == Types::VarString )
TableFieldNode.AOTsetProperty("StringSize", newFieldLength); if( labelId)
TableFieldNode.AOTsetProperty("Label", labelId);
if( ExtendedDataType)
TableFieldNode.AOTsetProperty("ExtendedDataType", ExtendedDataType);
if( EnumType)
TableFieldNode.AOTsetProperty("EnumType", EnumType); tableNode.AOTcompile(1);
tableNode.AOTsave(); info("successed add field " + newfieldname);

  在AX4.0中用JOB测试通过。

在AX部署代码时,若是涉及比较大的表的字段的新增,在表上用按钮直接操作,往往耗费很多的时间在等待AOT的编译上面,若是同一表要加多个字段的时候,等的简直让人抓狂,用这个job, 一次加一个字段,速度相当快。

原因在于在表上面用按钮直接加字段,系统会编译所有用到此TABLE的所有的相关VIEW和QUERY。
而用代码加字段,我们只编译了该TABLE所在的节点,所以比较快。

用代码给TABLE 添加字段,设置属性并编译的更多相关文章

  1. shapefile添加字段 设置文件名为字段内容

    转眼间,这一年又结束了,再记录一点知识吧 同事说他有好多shapefile,想给每个shapefile添加一字段,并设置该字段的内容为shapefile文件名,想着用arcpy实现,于是有了下面的代码 ...

  2. JS添加、设置属性以及鼠标移入移出事件

    源代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  3. asp.net 后台给前台控件添加及设置属性

    txtTopImgBox.Attributes.Add("title", "12312121"); Text1.Style["background-c ...

  4. 解决由于服务器调用删除或添加字段后CXF客户端未更新导致异常问题org.apache.cxf.interceptor.Fault: Unmarshalling Error: Unexpected element

    采用CXF客户端调用Webservice服务,由于服务端时不时会对Webservice服务删除或添加一些字段,而CXF未及时更新客户端代码导致再次调用服务时报异常错误: Interceptor for ...

  5. 在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?

    在高并发.高负载的情况下,如何给表添加字段并设置DEFAULT值? 在Oracle 12c之前,当Oracle表数据量上亿时,对表执行“ALTER TABLE XXX ADD COLUMN_XX VA ...

  6. MySQL的常用命令:添加外键,修改字段名称,增加字段 设置主键自增长等

    Mysql命令添加外键 前提是有这么几个表  以mall_product 和 mall_category为例 ALTER TABLE mall_product ADD CONSTRAINT fore_ ...

  7. Yii2给数据库表添加字段后对应模型无法识别到该属性的原因和解决办法

    Yii2给数据库表添加字段后对应模型无法识别到该属性的原因和解决办法 应为数据库表的结构被缓存了.删除runtime文件夹或者执行 //清理指定表结构缓存数据 Yii::$app->db-> ...

  8. JavaScript Dom基础-9-Dom查找方法; 设置DOM元素的样式; innerHTML属性的应用; className属性的应用; DOM元素上添加删除获取属性;

    JavaScript Dom基础 学习目标 1.掌握基本的Dom查找方法 domcument.getElementById() Domcument.getElementBy TagName() 2.掌 ...

  9. 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO

    刷新SQL Server所有视图.函数.存储过程 更多   sql   此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...

随机推荐

  1. kafka模拟客户端发送、接受消息

    producer   消息的生成者,即发布消息 consumer   消息的消费者,即订阅消息 broker     Kafka以集群的方式运行,可以由一个或多个服务组成,服务即broker zook ...

  2. java学习日志(1):命令行and小程序

    1.dos命令行,常见的命令 dir:列出当前目录下的文件以及文件夹md:创建目录rd:删除目录(必须空)cd:进入指定目录cd.. :退回到上一级目录cd/:退回到根目录del:删除文件exit:退 ...

  3. 特殊情形的Riemann引理

    设 $f(x)$ 是 $[0,\infty)$ 上的单调函数, 则对任意固定的 $a$, 有 $\dps{\vlm{n}\int_0^a f(x)\sin nx\rd x =0}$; 若同时还有 $\ ...

  4. purple-class2-默认选项切换

    ylbtech-class:purple-class2 A, 返回顶部 1,默认选项切换 #region 默认选项切换 public delegate IList<SelectListItemI ...

  5. MySQL 开启与关闭远程访问&&授权前需执行GRANT USAGE ON *.* TO 'cai'@'%' IDENTIFIED BY 'caigan2015';才能终端访问

    MySQL 开启与关闭远程访问 (1)通过MySQL用户去限制访问 权限系统目的: MySQL基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限,今天介绍的就 ...

  6. Python进阶06 循环对象

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 这一讲的主要目的是为了大家在读Python程序的时候对循环对象有一个基本概念. 循 ...

  7. 使用Async和Await进行异步编程(C#版 适用于VS2015) z

    你可以使用异步编程来避免你的应用程序的性能瓶颈并且加强总体的响应.然而,用传统的技术来写异步应用是复杂的,同时编写,调试和维护都很困难. VS2012介绍了简单的方法,那就是异步编程,它在.Net F ...

  8. SIT和UAT的区别

    SIT和UAT有什么区别?谢谢! 系统内部集成测试(System   Integration   Testing) SIT 用户验收测试(User   Acceptance Testing) UAT ...

  9. C++学习36 string类和字符串

    C++大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的数据类型 string.string 类处理起字符串来会方便很多,完全可以代替C语言中的 char 数组或 char 指针. ...

  10. 【转】深入理解Java:注解(Annotation)自定义注解入门

    http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的me ...