void clicked(){#ExcelHWND HWND;SysExcelApplication excel;SysExcelWorkbooks books;SysExcelWorkbook book;SysExcelWorksheets sheets;SysExcelWorksheet sheet;SysExcelRange columns;SysExcelRange column;SysExcelCells cells;SysExcelCell cell;SysExcelStyle ExcelStyle;SysExcelFont ExcelFont;SysExcelFormatCond Read More
posted @ 2009-04-26 12:02 Fandy Xie Views(206) Comments(0) Diggs(0) Edit
RunOn,顾名思义,就是指Object在那一层上面运行,客户端,还是服务器端?当然,前提是要在三层结构下面。Axapta当中与RunOn有关的,大概在以下这几个地方:相关的Object,如Form, Report, Class等,Class当中的静态方法,以及MenuItem。 Form和Report是不能设置RunOn属性的,Form只能是运行在客户端,而Report则是由MenuItem所决定的,因为它的RunOn属性其实是被设为(Always)Called from的。当然,假如Report不用MenuItem指定激活的话,如直接在AOT当中用右键打开(Open),那就肯定是在客户端生 Read More
posted @ 2009-04-26 11:59 Fandy Xie Views(186) Comments(0) Diggs(0) Edit
方法一,把所有的参数放到一个字符串里,用特殊符号分开,用args().parm() ,传到另一个form,然后再按照规则读出参数。方法二,把参数保存到一个class,用方法 args.parmObject(_objectname); 传递class到另外一个form,然后用 方法 _objectname = element.args().parmObject();得到class;方法三,使用临时表,用方法 args().record(YourTmpTable); 传递临时表; 方法四,作者:MAXFara,原贴:http://www.qiuhao.com/boke.asp?maxfara.sh Read More
posted @ 2009-04-26 11:57 Fandy Xie Views(254) Comments(0) Diggs(0) Edit
比如要在下拉框中显示ItemID,但是只显示ItemGroup='Group1' 且 ItemType='Bom'的物项,那么传统的使用扩展类型的方法就不使用了,因为扩展类型不能动态传递参数(Itemgroup和ITEMTYPE)。方法1,在InventTable里建立一个方法,lookupItemByItemTypeGroup,client static void lookupItemByItemTypeGroup(FormStringControl lookupCtrl,ItemGroupId ItemGroupId,ItemType _ItemTYpe=I Read More
posted @ 2009-04-26 11:55 Fandy Xie Views(711) Comments(0) Diggs(0) Edit
首先解释一下什么是Ax系统中的Label。起初我们的应用程序是为某个特定的国家的客户来编写的,而且这家客户只是在某个国家内进行交易,因此他们的语言是相同和单一的,在这样的前提下我们的应用程序只需要把客户能够理解的语言把系统的提示和界面上的信息显示出来即可。这样子就可以满足使用单一语言的客户了。接下来我们发现更多的特殊的客户需要我们的系统尤其是他们具有很多的跨国子公司,那么肯定在这些子公司中不会完全使用一种语言来***作系统,因此我们的应用程序需要把程序内信息改成相对应的语言给指定的国家的子公司,这样子我们需要把信息按照语言分成很多类然后只要设定一个开关就可以把不同的信息发布给需要那种语言的客户 Read More
posted @ 2009-04-26 10:58 Fandy Xie Views(357) Comments(0) Diggs(0) Edit
这个类在很多代码中出现,在启动报表的时候也需要用到它. 简单来说这个类用于共享构造参数.在Axapta中之所以可以用Args的方式,是因为: 1.通常参数的数目比较少. 2.用的参数类型很类似. 3.有时候构造一个主要的对象,需要构造与之相关的对象,在构造这些对象时需要用到相 同的构造参数. 在传统的OO世界里,一个对象往往有多个重载的构造函数,通常情况下这没什么问题,但 当一个主要的对象需要通过特定构造器去构造相关的对象时,事情变得糟糕起来.有时候需要 通过逻辑判定到底该构造哪个构造函数,并且要在很多层之间传递这些信息.事实证明在 Axapta中,很多报表,窗体,Action类的构造参数都是 Read More
posted @ 2009-04-24 23:32 Fandy Xie Views(166) Comments(0) Diggs(0) Edit
不过为了系统将来的扩展性最好使用SysQuery::valueEmptyString();以免将来空值的含义发生变化。SysQuery::valueEmptyString();这个方法的注释也说明了把空置封装成方法的原因是为了将来的兼容性。在用QueryBuildRange的value属性时,如果value的值是‘’,则查询会忽略该Range,好像没有这个Range一样,比如如下语句:用这种方式也可以达到一样的效果staticvoidEmptyTest(){Queryq;QueryRunqr;CustTablecust;;q=newQuery();q.addDataSource(tableNu Read More
posted @ 2009-04-24 23:21 Fandy Xie Views(324) Comments(0) Diggs(0) Edit
update 是执行表里update的方法,再update到数据库。doupdate 是直接update到数据库,不执行表里的update的方法。doinset,inset同理。。。。。。这两个方法都是Xrecord类的方法,都会在插入数据时产生系统字段。区别是:Insert()方法执行完父类的方法后还执行表里的Insert方法(可以被重载),DoInsert()不被重载,不执行表里Insert()方法,只执行父类方法。Clear 和Doclear,delete和Dedelete等方法意义类似; Read More
posted @ 2009-04-24 23:15 Fandy Xie Views(492) Comments(0) Diggs(0) Edit
这三个都是数据源的方法,意思又有些相似,所以不少人有些模糊。ReSearch():在保留当前的条件下,包括过滤条件、排序等,从数据库中重新刷新数据源的数据;若要改变查询条件或者排序条件,我们应该使用executeQuery而不是ReSearch();Refresh(): 重新从数据源中读取当条记录。Reread(): 重新从数据库中读取当条记录。数据库 --> datasource -- > 界面Reread() : 数据库 -〉datasourceRefresh() : datasource -> 界面Research() : 数据库 -> 界面一般在Form中为了使 Read More
posted @ 2009-04-24 23:13 Fandy Xie Views(473) Comments(0) Diggs(0) Edit
X++语言特性 X++是Axapta MorphX的开发语言,它也是一种面向对象的开发语言。由于Axapta是一套ERP平台,使得用X++进行ERP业务的二次开发变得非常简单。与其它面向对象的语言不同,X++具有一些自己的特性。1、 Class VariablesX++ 的类级别变量都是protected型的,也就是说,无法从类的外部访问这些变量。在子类中可以访问父类的类级别变量。如果非要从外部访问类级别变量,可以使用parm类型的方法来实现,这种方法在系统中被广泛使用。例如,在某个类的classDeclaration中定义了一个int类型的类级别变量 value,那么就可以在该类中定义如下的 Read More
posted @ 2009-04-24 23:09 Fandy Xie Views(1326) Comments(0) Diggs(0) Edit