3

我正在尝试从矩阵中读取。到目前为止,我拥有的代码是:

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)给我单元格的值......

任何想法?

4

5 回答 5

5

@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 论坛,了解有关 SAP B1 的任何问题。

于 2010-05-11T00:52:54.600 回答
1

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

var cellValue = oMatrix.Columns.Item(Column's Id or 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";
于 2018-02-12T20:58:19.497 回答
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 列值的第二行。

于 2013-05-06T10:34:51.223 回答
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();
于 2012-06-19T07:39:58.230 回答
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 查询。

希望这对你有帮助!

于 2015-10-22T13:57:37.203 回答