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. 手把手教你玩转Git分布式版本控制系统! (转载)

    目录 Git诞生历史 Git环境准备 Git安装部署 Git常用命令 Git基本操作 Git管理分支结构 Git管理标签 GitLab安装部署 GitHub托管服务 Git客户端工具 Git诞生历史 ...

  2. 动态WebService方法

    [转] 调用Webservice的方法一般是通过右击项目-->添加服务引用-->输入Webservice地址-->前往-->确定,这样可以顺利调用服,但是需要注意的一点是:如果 ...

  3. Android 区别普通Touch方法和Scroll

    今天想实现这个功能,但只是利用现有的onTouchEvent和GestureDetector感觉做起来有些纠结,原来好像也尝试过,最后搞的程序有点乱,不好维护,那么就利用一下Android程序员最大的 ...

  4. AD9 笔记:

    1 丝印压焊盘违反规则:关闭规则中的Manufacturing(制造规则)分类 >>> Silkscreen Over Component Pads Clearence(丝印与焊盘间 ...

  5. android xml操作

    import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.ArrayList; import ...

  6. Bug 是改不完滴

  7. gcc makefile

    $* 不包含扩展名的目标文件名称 $< 第一个依赖文件名称 $? 所有时间戳比目标文件晚的依赖文件 $@ 目标文件完整名称 $^ 所有不重复的依赖文件

  8. Jmeter Html 报告优化

    转载自南风_real博客园:http://www.cnblogs.com/jaychang/p/5881525.html 但是最近在查阅相关资料时,发现基本都是重复一篇文章Jmeter使用笔记之htm ...

  9. C++学习34 模板类

    C++除了支持模板函数,还支持模板类.模板类的目的同样是将数据类型参数化. 声明模板类的语法为: template<typename 数据类型参数 , typename 数据类型参数 , …&g ...

  10. C++学习27 用全局函数重载运算符

    运算符重载函数既可以声明为类的成员函数,也可以声明为所有类之外的全局函数. 运算符重载函数作为类的成员函数 将运算符重载函数声明为类的成员函数时,二元运算符的参数只有一个,一元运算符不需要参数.之所以 ...