zoukankan      html  css  js  c++  java
  • 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端,如果是实例方法,那只能跟这Class的Runon属性混了.
                举例:

    client Static xy(args a)
    Container:
                说明:X++中的一般类型,可以认为无类型的动态数组,可以存放int等primitive类型的数据,也可以存放Array,Container.同一个Container变量可以存放不同的数据类型.Runbase的Pack和Unpack方法就是用了Container.
                举例:
    container c = [13.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)
    = 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:
            说明:该关键字告诉数据库在执行包含Join的SQL语句的时候,先取主表中的一条记录,然后再取对应的明细记录,如此往复,直到结束.通常与关键字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;
        …
    }

      

  • 相关阅读:
    C语言字母频率统计
    C语言文件操作相关函数
    【蓝桥杯】历届试题 回文数字
    【蓝桥杯】历届试题 蚂蚁感冒
    【蓝桥杯】历届试题 地宫取宝
    【蓝桥杯】历届试题 分糖果
    【蓝桥杯】历届试题 兰顿蚂蚁
    JDK的安装和配置
    【蓝桥杯】历届试题 错误票据
    【蓝桥杯】历届试题 带分数
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/472476.html
Copyright © 2011-2022 走看看