有多個網友多次諮詢如何獲得SBO的數據表--包括系統表和用戶自定義表的列表與中文描述,繼而獲得SBO的數據表結構特別是字段中文描述。
SBO在這方面提供了充分的數據表結構與字段屬性提取接口,很容易得到上述要求的結果。
1、如何獲得SBO的數據表中文描述?
首先定義個一個SBO數據表業務對象實例
SAPbobsCOM.SBObob boTable = fsSboCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoBridge) as SAPbobsCOM.SBObob;
然後獲得此實例關聯的數據表結構屬性信息列表。
SAPbobsCOM.Recordset rsTable = boTable.GetTableList();
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();
//在此進行數據表屬性的相關操作吧
{
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);
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.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版本。