有多個網友多次咨詢如何獲得SBO的資料表--包括系統表和使用者自定義表的清單與中文描述,繼而獲得SBO的資料表結構特别是字段中文描述。
SBO在這方面提供了充分的資料表結構與字段屬性提取接口,很容易得到上述要求的結果。
1、如何獲得SBO的資料表中文描述?
首先定義個一個SBO資料表業務對象執行個體
SAPbobsCOM.SBObob boTable = fsSboCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoBridge) as SAPbobsCOM.SBObob;
然後獲得此執行個體關聯的資料表結構屬性資訊清單。
SAPbobsCOM.Recordset rsTable = boTable.GetTableList();
最後通過循環方式獲得資料表結構資訊,進而達到對所有資料表或者指定表結構資訊的提取。
if (rsTable.Record__count > 0)
{
rsTable.MoveFirst();
while (!rsTable.EoF)
{
string strTableCode = rsTable.Fields.Item("Alias").Value.ToString();
string strTableName = rsTable.Fields.Item("Description").Value.ToString().Trim();
//在此進行資料表屬性的相關操作吧
rsFields.MoveNext();
}
}
上面程式中的strTableCode和strTableName就是資料表名稱和資料表的中文描述了。當然如果您使用的不是SBO中文版,其描述就是對應語言的資料表名稱描述了。
2、如何獲得SBO的資料表字段中文描述?
類似的,首先定一個SBO資料表字段業務對象。
SAPbobsCOM.SBObob boFields = fsSboCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoBridge) as SAPbobsCOM.SBObob;
獲得此對象關聯的使用者興趣表的字段屬性清單
SAPbobsCOM.Recordset rsFields = boFields.GetTableFieldList(strTableCode);
下面的代碼就不需要介紹了吧?!很好了解的。
if (rsFields.Record__count > 0)
rsFields.MoveFirst();
while (!rsFields.EoF)
{
string strFieldCode = rsFields.Fields.Item("FieldName").Value.ToString().Trim();
string strFieldName = rsFields.Fields.Item("FieldDesc").Value.ToString().Trim().Trim();
string strFieldLen = rsFields.Fields.Item("FieldLength").Value.ToString();
string strFieldType = rsFields.Fields.Item("FieldType").Value.ToString();
string strIsNull = rsFields.Fields.Item("IsNullable").Value.ToString();
string strIsValid = rsFields.Fields.Item("IsValidValues").Value.ToString();
string strLinkTo = rsFields.Fields.Item("LinkedTo").Value.ToString();
//在此進行字段屬性的相關操作吧
rsFields.MoveNext();
以上代碼經本人在多個系統軟體中反複調用,不存在任何問題。支援的開發平台包括VS 2003-2008,當然開發語言是C#;資料庫可以是Sql 2000/2005;SBO可以使SBO 2004、2005、2007版本。
本文轉自foresun 51CTO部落格,原文連結:http://blog.51cto.com/foresun/176590,如需轉載請自行聯系原作者