2010-05-10 21 views
1

J'essaie de lire à partir d'une matrice. Le code que j'ai jusqu'à maintenant:SAP B1: lecture à partir de la matrice

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(); 

Aucun des Lices (cellule et f) me donne la valeur de la cellule ...

Toute idée?

Répondre

2

@Miguel essayer ce code

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 vérifier en outre la SAP Business One SDK Forum pour toute question sur SAP B1.

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(); 
0

nous pouvons également écrire les mêmes de la manière suivante. J'ai fait cela dans 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 

Ici le nombre de cellules est 2 et le numéro de colonne est 3. La valeur f sera donc la 2ème ligne de la valeur de 3 colonnes.

0

Si vous essayez de lire certaines valeurs de colonne à partir d'un formulaire, il serait beaucoup plus facile d'utiliser des requêtes SQL. C'est ce que je fais.

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(); 
} 

J'ai eu la même question que vous. Mais après que j'ai eu cette idée, il était si facile de lire des valeurs de n'importe quelle forme avec le nombre de colonnes. Tout ce que vous avez à faire est "Afficher -> Informations système" et savoir dans quelle base de données, les valeurs sont stockées. Ensuite, écrivez votre requête SQL souhaitée.

Espérons que ce soit utile!

0

Si vous avez besoin d'obtenir des données de Matrix:

var = CellValue oMatrix.Columns.Item (Id de colonne ou Index) .Cells.Item (l'indice de rang) .Specific.Value;

Mais si vous avez besoin de mettre à jour la valeur de la matrice doivent jeter à col EditText obj comme:

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