Axapta中的保留字

 

看到一份微软的文档,介绍了Axapta中的保留字,Axapta中特有的一些保留字和摘录如下:

anytype:

    说明:该类型的方法可以返回任意类型的数据.
   
举例:

anytype Method1(Args a)
{
    
// Commands
    Return xyz;
}

at   

说明:跟保留字Window结合使用,可以指定输出窗体在Axapta主窗体的相对位置.
   
举例:

static void Job4(Args _args)
{
    CustTable ct;
    window 80,30 at 5,3;

    
while select name from ct
     {
        print ct.name;
    }
}

Breakpoint:   

说明:添加一个断点用于调试.这确实是个保留字,不过还真不知道怎么玩.
    
举例
:
            
可以在代码编辑器里按Shift+F9显示所有的断点及其位置
.

ChangeCompany:

    说明:用数据库中另一个公司的数据,数据库表中有个字段DataAreaId用于表示某条记录是哪个公司的.
    
举例:              

static void main()
{
    Custtable Custtable;
    
// Assume that we are running in company 'aaa'
    changecompany('bbb')
     {
        
// default company is now 'bbb'
        Custtable = NULL;
        
while select Custtable
         {
            
// Custtable is now selected in company 'aaa'
        }
}
// default company is now set back to 'aaa' again

changeCompany('ccc')
     {
        
// default company is now 'ccc'
        Custtable = NULL;
        
// clear Custtable to let the select work on new default company
        while select Custtable
             {
                
// Custtable is now selected in company 'ccc'
            }
    }
    
// default company is now 'aaa' again

 

Client:           

说明:指定方法运行的位置.如果方法是static,那么可以在声明的时候用Client指定其运行在Client,如果是实例方法,那只能跟这ClassRunon属性混了.
            
举例:

client Static xy(args a)

 

Container:

说明:X++中的一般类型,可以认为无类型的动态数组,可以存放intprimitive类型的数据,也可以存放Array,Container.同一个Container变量可以存放不同的数据类型.RunbasePackUnpack方法就是用了Container.
           
举例:

container c = [1, 3.14, “abc”];

 

Date:             

说明:日期类型,包含年月日.

Delete_From:            

说明:如果要删除多条记录可以用这个关键字节省语句,另外由于只需要访问一次数据库就可以删掉多条记录,大多数情况下要比Delete的效率高一些.
            
举例:

MyTable myTable;
DELETE_FROM myTable
WHERE MyTable.AmountMST <='1000';

 

display:            

 

说明:方法修饰符(类似于Static,Private,Publci).用于标识该方法的返回值是用于在Form或者Report上显示.返回值通常是通过计算得到的,比如sum.
            
举例:

// displays Subtotal_A and Subtotal_B, along with their total
display int SubtotalSum()
{
    
return this.Subtotal_A + this.Subtotal_B;
}

 

div:

            

说明:返回两个数(可以是整数也可以是浮点数)相除所得的整数部分.
            
举例:

 
// Returns integer division of 100 by 21. i=4(4*21 = 84, remainder 16)
i = 100 div 21; 

edit:            

说明:edit方法是display的扩展,除了可以显示数据外,还可以获取用户的输入.方法参数有一个boolean类型的值set,用于表示对应的控件值是否被改写过,另一个是对应控件的值.
            
举例:       

edit description getGrpName(Boolean set, Description value)
{
    
if (set)
        Box::Info(‘The contents of the field 
is: ‘+value);
    
return (select CustGroup
    where CustGroup.CustGroup==
this.CustGroup).Name;
}

firstFirst:        

说明:意味着在取数据的时候第一条优先取出来,但这种情况下整体数据的速度有可能会慢一些.多用于对话框的更新.
         
举例:

select firstfast custTable order by accountNum;

firstOnly:        

说明:只取第一条数据.

select firstonly custTable order by accountNum;

flush:

        说明:清空整张表的缓存.

forceLiterals:        

说明:告诉Axapta Kernel在数据库引擎优化的时候向数据库引擎提供where字句中的真实值.在涉及多个表的join,默然采用该方式.

forceNestedLoop:        

说明:该关键字告诉数据库在执行包含JoinSQL语句的时候,先取主表中的一条记录,然后再取对应的明细记录,如此往复,直到结束.通常与关键字ForceSelectOrder搭配使用.

forcePlaceholders:        

说明:告诉Axapta Kernel在数据库引擎优化的时候不要向数据库引擎提供where字句中的真实值,而是用占位符代替.在没有Join语句的时候默认采用这种方式.优点是对于相似的语句可以重复使用查询计划,缺点是不会针对具体的值优化查询.

forceSelectOrder:        

说明:告诉SQL Server引擎在获取数据的时候按照Join的顺序取数据,先取Join的第一个表中的数据,再取第二个......,forceNestedLoop配合使用.

forUpdate:        

说明:取出数据更新,对于不同的数据库引擎,可能会锁定相应的记录.
       
举例:

static void deleteTransFromVoucher(JournalNum _journalNum, 
                                                           Voucher _voucher)
{
    LedgerJournalTrans ledgerJournalTrans;
    LedgerJournalTable ledgerJournalTable =
    LedgerJournalTable::find(_journalNum);
    Counter counter;
    ttsBegin; 
    
while select forUpdate ledgerJournalTrans
    index hint NumVoucherIdx
    where ledgerJournalTrans.journalNum == 
        _journalNum &&  ledgerJournalTrans.voucher == _voucher
     {
        ledgerJournalTrans.doDelete();
        counter++;
    }
    
if (counter && ledgerJournalTable.journalType != 
        LedgerJournalType::Periodic)
    NumberSeq::release(ledgerJournalTable.voucherSeries, _voucher);
    ttsCommit;
}

hint:        

说明:给数据库查询引擎一个提示,提示让其按照特定的引擎去排序抓取的数据,当然既然是个提示,数据库查询引擎可以当它不存在.
        
举例:

while select forUpdate ledgerJournalTrans
index hint NumVoucherIdx
where ledgerJournalTrans.journalNum == _journalNum 

insert_RecordSet:        

说明:批量插入数据.
        
举例:

INSERT_RECORDSET myTable (myNum,mySum) 
SELECT myNum, SUM(myValue) FROM anotherTable GROUP BY myNum WHERE myNUM <= 100;

nofetch:        

说明:表示语句当前不取任何数据,通常用在当前的select将会传递给其他应用程序对象的情况,比如query真正执行查询.
        
举例:

select nofetch custTable order by accountNum

 

print:       

说明:打开Print窗体输出结果.print后面要跟pause,要不然一闪而过,啥玩意都看不到.
       
举例:

do
{
    ++ii;
    print (ii<=3?"Summen er =< 3":"Summen er over 3");
while (ii < 10);
pause;

reverse:       

说明:把结果以相反的顺序输出.       

举例:

select reverse custTable order by accountNum;

server:       

说明:Client,不过运行在服务器端而已.
       
举例:

server static xy(Args a)

Setting:       

说明:Update_RecordSet配合使用,更新满足条件的一批数据,value可以是表达式.
       
举例:

Example 1: assigns a single value to a field in all records in a table:
UPDATE_RECORDSET myTable
    SETTING field1 = 1;

Example 2: Increments a field 
in all records in a table by 10%:
UPDATE_RECORDSET myTable
    SETTING field1 = myTable.field1 * 1.10;

Update_RecordSet:       

说明:批量更新数据.
       
举例:

UPDATE_RECORDSET myTable 
SETTING field1 = myTable.field1 * 1.10;

Window:    

说明:调整输出窗体的大小.
     
举例:

static void Job4(Args _args)
{
    str navn;
    
int jjj=1;

    window 80,30;
    …
}

 

 

字符窜操作

strlen(str text)

作用:获取字符串的长度
参数:text,待获取长度的字符串
返回值:字符串的长度

static void strlenExample(Args _args)
{
     str source;
     
int i ;
    ;
    source = "Axapta";
     i = strlen(source);
     print i;
     pause;
}

strfind

strfind(str source,str toFindCharacters,int position ,int number)

 

作用:发现某个字符的位置
参数:source  源字符串
            toFindCharaters:
待发现的字符
            position:
开始搜索的位置
            number:
搜索字符的个数
返回值:字符的位置

static void strfindExample(Args _args)
{
     str source;
     str destination;
     
int i ;
     ;

     source = "Axapta Axapta";
     destination = 'x';
     i = strfind(source,destination,3,100);
     print i;
     pause;
}

strins

3.strins(str source ,str toInsertStr,int postion)
作用:在源字符串的指定位置插入字符串
参数:source 源字符串
            toInsertStr
待插入的字符串
            postion
插入字符串的位置
返回值:插入字符串后的字符串

static void strinsExample(Args _args)
{
     str source;
     str destination;
     
int i ;
     ;

     source = "Axapta Axapta";
     destination = ' Axapta';
     source = strins(source,destination,7);

     print source;
     pause;
}

 

strdel

4.strdel(str source,int postion,int number)
作用:从指定位置开始在源字符串中删除指定长度的字符
参数:source源字符串
            postion
删除的开始位置
            number
删除字符的个数
返回值:删除指定字符后的字符串

static void strdelExample(Args _args)
{
     str source;
     str destination;
     
int i ;
     ;

     source = "Axapta Axapta";
     source = strdel(source,1,7);

     print source;
     pause;
}

strLFix,strRFix
这个难得说清楚,看代码吧,一看就明白了。

static void SpecialQueryBuild2()
{
    str newStr;
    ;
    newStr = strLfix(int2str(8),10,"0");
    print(newStr);
    newStr = strRfix(int2str(8),10,"0");
    print(newStr);

    pause;
}

strpoke

6.strpoke(str text1,str text2, int position)

说明:覆盖text1position开始的字符为text2.

例子:

   strpoke('123456789','ABC',3)

   返回的字符串是 '12ABC789'

strrem

7.strrem(str text1,str text2)

 说明:text1中移除text2中所提供的字符.

 例子: strrem('ACBDEFGAEFGD','AF')

       返回的值是:'CBDEGEGD'.

strLine

8.strLine(str text1,int counter)

  说明: 返回text1counter行的字符串.

  例子:  strtemp='SDFEG-jui/nkjedss/nuikjh344/n'

         strline(strtemp,1)

         返回值是:'kjedss'.

StrRep

9 StrRep

       str StrRep(str text,int number)
    

Description

Repeats the string of characters specified in text. The string of characters is repeated the number of times specified by number.

Examples

Str StrL;
StrL = StrRep("AB",6)
returns the text string "ABABABABABAB"

 

你可能感兴趣的:(Axapta,开发技术)