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. Eclipse快捷键 列表整理

    参考: http://www.roboticfan.com/blog/user_2005/104/archives/2005/20051213213755.shtml Ctrl+1 快速修复(最经典的 ...

  2. OpenCV中Delaunay三角网算法例子

    #include <opencv2/opencv.hpp> #include <vector> using namespace cv; using namespace std; ...

  3. Spark MLlib知识点学习整理

    MLlib的设计原理:把数据以RDD的形式表示,然后在分布式数据集上调用各种算法.MLlib就是RDD上一系列可供调用的函数的集合. 操作步骤: 1.用字符串RDD来表示信息. 2.运行MLlib中的 ...

  4. jsp自定义标签1

    1.编写一个实现tag接口的java类 package cn.itcast.web.tag; import java.io.IOException; import javax.servlet.http ...

  5. python函数参数前面单星号(*)和双星号(**)的区别

    在python的函数中经常能看到输入的参数前面有一个或者两个星号:例如 def foo(param1, *param2): def bar(param1, **param2): 这两种用法其实都是用来 ...

  6. windows service自动启动相关设置

    http://blog.csdn.net/thebesttome/article/details/7590025   原帖:http://www.cnblogs.com/junior/archive/ ...

  7. [ActionScript 3.0] AS3.0根据当天日期获取明天,后天...日期

    const dayTime:Number=24*3600*1000//一天毫秒数 var date:Date = new Date(); trace("今天:"+ date.toD ...

  8. [Java] java中的异常处理-续

    异常处理器,它由try, catch, finally以及随后的程序块组成.finally不是必须的. catch的括号有一个参数,代表所要捕捉的异常的类型.catch会捕捉相应的类型及其衍生类.tr ...

  9. [ActionScript] AS3 涂鸦的擦除和撤销功能

    package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BlendMo ...

  10. Java中的Comparable<T>和Comparator<T>接口

    有的时候在面试时会被问到Comparable<T>和Comparator<T>的区别(或者Java中两种排序功能的实现区别). 1) 在使用普通数组的时候,如果想对数据进行排序 ...