这个类在很多代码中出现,在启动报表的时候也需要用到它. 简单来说这个类用于共享构造参数.在Axapta中之所以可以用Args的方式,是因为: 1.通常参数的数目比较少. 2.用的参数类型很类似. 3.有时候构造一个主要的对象,需要构造与之相关的对象,在构造这些对象时需要用到相 同的构造参数. 在传统的OO世界里,一个对象往往有多个重载的构造函数,通常情况下这没什么问题,但 当一个主要的对象需要通过特定构造器去构造相关的对象时,事情变得糟糕起来.有时候需要 通过逻辑判定到底该构造哪个构造函数,并且要在很多层之间传递这些信息.事实证明在 Axapta中,很多报表,窗体,Action类的构造参数都是 Read More
不过为了系统将来的扩展性最好使用SysQuery::valueEmptyString();以免将来空值的含义发生变化。SysQuery::valueEmptyString();这个方法的注释也说明了把空置封装成方法的原因是为了将来的兼容性。在用QueryBuildRange的value属性时,如果value的值是‘’,则查询会忽略该Range,好像没有这个Range一样,比如如下语句:用这种方式也可以达到一样的效果staticvoidEmptyTest(){Queryq;QueryRunqr;CustTablecust;;q=newQuery();q.addDataSource(tableNu Read More
update 是执行表里update的方法,再update到数据库。doupdate 是直接update到数据库,不执行表里的update的方法。doinset,inset同理。。。。。。这两个方法都是Xrecord类的方法,都会在插入数据时产生系统字段。区别是:Insert()方法执行完父类的方法后还执行表里的Insert方法(可以被重载),DoInsert()不被重载,不执行表里Insert()方法,只执行父类方法。Clear 和Doclear,delete和Dedelete等方法意义类似; Read More
这三个都是数据源的方法,意思又有些相似,所以不少人有些模糊。ReSearch():在保留当前的条件下,包括过滤条件、排序等,从数据库中重新刷新数据源的数据;若要改变查询条件或者排序条件,我们应该使用executeQuery而不是ReSearch();Refresh(): 重新从数据源中读取当条记录。Reread(): 重新从数据库中读取当条记录。数据库 --> datasource -- > 界面Reread() : 数据库 -〉datasourceRefresh() : datasource -> 界面Research() : 数据库 -> 界面一般在Form中为了使 Read More
X++语言特性 X++是Axapta MorphX的开发语言,它也是一种面向对象的开发语言。由于Axapta是一套ERP平台,使得用X++进行ERP业务的二次开发变得非常简单。与其它面向对象的语言不同,X++具有一些自己的特性。1、 Class VariablesX++ 的类级别变量都是protected型的,也就是说,无法从类的外部访问这些变量。在子类中可以访问父类的类级别变量。如果非要从外部访问类级别变量,可以使用parm类型的方法来实现,这种方法在系统中被广泛使用。例如,在某个类的classDeclaration中定义了一个int类型的类级别变量 value,那么就可以在该类中定义如下的 Read More