ax在插入一條紀錄的時候會自動生成recid,每條紀錄的recid是全域性唯一的,如果知道了recid和tableid,關於如何找到紀錄已經有很多的介紹,典型的做法是:
public common findrecord(tableid _tableid, recid _recid, boolean _forupdate = false)
還有一種做法是使用query:
query q = newquery;
querybuilddatasource qbds;
queryrun qr;
;qbds =q.adddatasouce(tableid);
qbds.addrange(tableid2name(tableid), recid)).value(queryvalue
(yourrecid));
qr = new
queryrun(q);
if(queryrun.next())
但是如果在我們不知道tableid的情況下如何來查詢呢,似乎只能通過遍歷所有的table的id了,遍歷所有的table也有幾種方法,我們依次來看。
第一種 使用dictionary
dictionary dictionary;tableid tableid;
tablename tablename;
common c;
dicttable dt;
; dictionary = new
dictionary();
tableid = dictionary.tablenext(0
);
tablename =dictionary.tablename(tableid);
while
(tableid)
}
第二種 使用sqldictionary
sqldictionary dicttable;common c;
dicttable dt;
;while
select * from dicttable where dicttable.fieldid == 0
}
此外還可以使用utilidelements來查詢表:
utilidelements uie;common c;
dicttable dt;
;while
select uie where uie.recordtype==utilelementtype::table
}
但是這樣執行ax就崩潰了,從列印出來的uie.name我們能看到重複的表名稱,這是因為這個表可能在多個層上被修改過,查詢時需要加入層的過濾,比如
whileselect uie where uie.recordtype==utilelementtype::table
&& uie.utillevel==utilentrylevel::usr
但是這樣的問題是你只能得到某乙個層上的表物件,所以對這個問題處理不如方法一和方法二的查詢辦法了。還要說的是還有乙個名為utilelements的類,它和utilidelements的方法、屬性基本上都上一樣的,不同的地方是utilelements沒有id屬性,只有乙個source屬性,這個source是個container物件,遍歷了一下所有表,這個source都是空的,不知道是被設計來做什麼的了。
通過TCODE查詢User Exit
report zfind userexit no standard page heading.tables tstc,tadir,modsapt,modact,trdir,tfdir,enlfdir.tables tstct.data jtab like tadir occurs 0 with he...
通過TCODE查詢User Exit
z find user exit report z find user exit no standard page heading.tables tstc,tadir,modsapt,modact,trdir,tfdir,enlfdir.tables tstct.data jtab like tad...
通過兄弟查詢元素
xpath還是蠻好用的,有各種的查詢方式 單個屬性識別 屬性組合識別,通過兒子找父親,通過父親找兒子,通過爺爺找孫子,通過兄弟來定位,簡直不要太全面。今天用到的是通過兄弟來識別元素。問題 想驗證點選tab成功。正愁用頁面資料判斷來判斷不好做,猛地發現只有被選擇的tab下面帶了橫線。但是這個元素只有c...