微软ERP dynamics Axapta中的保留字
?微軟ERP dynamics Axapta中的保留字Axapta中的保留字 作者:Farseer 看到一份微軟的文檔,介紹了Axapta中的保留字,把Axapta中特有的一些保留字和摘錄如下:anytype:說明:該類型的方法可以返回任意類型的數據.舉例:anytype Method1(Args a){// CommandsReturn 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' againchangeCompany('ccc'){// default company is now 'ccc'Custtable = NULL;// clear Custtable to let the select work on new default companywhile 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 = [1, 3.14, “abc”]; Date:說明:日期類型,包含年月日. Delete_From:說明:如果要刪除多條記錄可以用這個關鍵字節省語句,另外由于只需要訪問一次數據庫就可以刪掉多條記錄,大多數情況下要比Delete的效率高一些.舉例:MyTable myTable;DELETE_FROM myTableWHERE MyTable.AmountMST <='1000';display:說明:方法修飾符(類似于Static,Private,Publci等).用于標識該方法的返回值是用于在Form或者Report上顯示.返回值通常是通過計算得到的,比如sum.舉例:// displays Subtotal_A and Subtotal_B, along with their totaldisplay 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 CustGroupwhere 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 ledgerJournalTransindex hint NumVoucherIdxwhere 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 ledgerJournalTransindex hint NumVoucherIdxwhere 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 myTableSETTING field1 = 1;Example 2: Increments a field in all records in a table by 10%:UPDATE_RECORDSET myTableSETTING 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;…}
總結
以上是生活随笔為你收集整理的微软ERP dynamics Axapta中的保留字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游苏州拙政园谈园林艺术与休闲游戏
- 下一篇: originlab matlab,Mat