SAP B1:从Matrix读取

时间:2010-05-10 17:34:24

标签: c# user-interface sap sapb1

我正在尝试从矩阵中读取。 我到现在的代码是:

SAPbouiCOM.Matrix matrix = (SAPbouiCOM.Matrix SBO_Application.Forms.ActiveForm.Items.Item("38").Specific;              
SAPbouiCOM.Column col = matrix.Columns.Item("1") ;
SAPbouiCOM.Cells cells = col.Cells;
String cell = cells.Item(2).Specific.ToString();
String f = cell.ToString();

没有一个字符串(单元格和f)给我单元格的值......

任何想法?

5 个答案:

答案 0 :(得分:4)

@Miguel尝试此代码

  string ColId   = "1"; //Set The Column Name to read
  Int32  Row     = 2; //Set the Row to Read
  Matrix oMatrix =(Matrix)SBO_Application.Forms.ActiveForm.Items.Item("38").Specific; //Get Access to the Matrix
  EditText oEdit =(EditText)oMatrix.Columns.Item(ColId).Cells.Item(Row).Specific; //Cast the Cell of the matrix to the respective type , in this case EditText
  string sValue  = oEdit.Value; //Get the value form the EditText

Miguel另外检查SAP Business One SDK Forum是否有关于SAP B1的任何问题。

答案 1 :(得分:0)

SAPbouiCOM.EditText EditValue;
string strValue;
String ColUId = "col_1"  // Column UID
Int32 Row     = 1        //Row Number
Item item     = form.Items.Item("38");
Matrix matrix = ((Matrix)(item.Specific));
EditValue     = (SAPbouiCOM.EditText)matrix.GetCellSpecific(ColUId, Row );
strValue      = EditValue.Value.ToString().Trim();

答案 2 :(得分:0)

我们也可以用以下方式写出相同的内容。我是在vb.net中做到的。

Dim  matrix  as  SAPbouiCOM.Matrix 

matrix =  oForm.Items.Item("38").Specific 


dim f as string = matrix .Columns.Item("3").Cells.Item(2).Specific.value.tostring

此处单元格编号为2,列编号为3。所以f值将是第3列的第2行值。

答案 3 :(得分:0)

如果您尝试从表单中读取某些列值,则使用SQL查询会更容易。这就是我的工作。

 string firmenname = "";
 string ort = "";
 string plz = "";
 string strasse = "";
 SAPbobsCOM.Recordset mRs1 = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
 string sqlstring = " select top 1 street, zipcode, city, country, address from CRD1 where cardcode = '" + codeid + "' and adrestype ='B' ";
 mRs1.DoQuery(sqlstring);
 while (!mRs1.EoF)
 {
 strasse = mRs1.Fields.Item("street").Value.ToString();
 ort = mRs1.Fields.Item("city").Value.ToString();
 plz = mRs1.Fields.Item("zipcode").Value.ToString();
 firmenname = mRs1.Fields.Item("address").Value.ToString();
 mRs1.MoveNext();
 }

我和你有同样的问题。但是在我想出这个想法之后,很容易从任何具有列数的表单中读取值。您所要做的就是"查看 - >系统信息"并且知道在哪个数据库表中存储值。然后编写所需的SQL查询。

希望这能帮到你!

答案 4 :(得分:0)

  

如果您需要从Matrix获取数据:

var cellValue = oMatrix.Columns.Item(Column' s Id或Index).Cells.Item(Row' s Index).Specific.Value;

  

但是如果你需要更新矩阵值必须将col转换为EditText   obj喜欢:

var oEdit = (SAPbouiCOM.EditText)oMatrix.Columns.Item(Column's Id or Index).Cells.Item(Row's Index).Specific;
 oEdit.Value = "1";