Scanning a matrix with collapsible rows
Hello all,
I need to scan the right matrix (ItemUID = "2") on the "Purchase Order Confirmation" form. This matrix has collapsible rows, and I can only scan through them if they are all expanded (not collapsed).
Is there a way to check whether there are any collapsed rows in a matrix on a system form? I tried comparing Matrix.RowCount with Matrix.VisualRowCount, but it didn't work.
An even better solution cound be to expand all the matrix's rows through UIApi, but I couldn't do it either...
Thanks in advance,
Anton
Hi Anton,
Hope these threads will have some values to you:
Data from collapsed grid by Events
Re: difference between Matrix.Visual RowCount and ...
How do you read data from collapsed rows in a matrix
Thanks,
Gordon
Similar Messages
-
Hello all,
Is it possible to create a matrix object with collapsible rows like on the standard form "User-Defined Fields - Management"?
I have found that the Grid has a similar functionality, but it is not exactly the same, because in the Grid each level of nestedness must have a corresponding column, while on the abovementioned SAP form the whole hierarchy is located in the first column.
Thank you in advance,
AntonHi,
I thing It is not possible .in grid its possible. Anyway try like this,
you have to double click event matrix column write a query in order by.
Regards,
Siva -
hi everybody,
I have a problem with a matrix with 838 rows, in my code i have to fill the columns of the matrix before save the sales order, i fill eight columns but when i'm filling the row 500 or sometimes the row 450 or sometimes the row 600, always is different, in the code, i fill the cell correctly just like this
oMatrix.Columns.Item("10002039").Cells.Item(row).Specific.Value = line
but when pass to the other row, i put a watch to see the value of the cell like this "oMatrix.Columns.Item("10002041").Cells.Item(row).Specific.Value" this is empty and this happens with all the following rows.
anyone know anything about this?Hi,
Is the issue is rectifed ???
if yes,can u please close the thread ....!
By marking the "Correct Answer"...
Regards,
Prasad -
Diplaying matrix with drill down (toggle visibility) enabled for 4 row groups
Hello,
I have a matrix in SSRS 2012 with 4 row groups representing a product hierarchy. Product Sub Group, Product, Sub Product and Account Number are the levels of the hierarchy. I have enabled drill down (toggle item visibility) on the first
3 of these levels.
This works great, but my matrix is very wide when it is first rendered. Ideally I want my matrix to expand horizontally as I expand/drill down into each grouping. So when the report is first rendered, and 3 of the groups are invisible, the
matrix will be thin. Is this possible?
Thanks,
GabeHi Gabe,
Based on my test, it cannot achieved in SQL Server Reporting Services (SSRS).
We can hide these column contents in matrix, however, we cannot hide the space in the report. In this situation, I recommend you use table to display these data.
Alternative, we can add a drill-down in the column group to hide the column group when it is first rendered. Please refer to the following screenshot:
If you have any questions, please feel free to let me know.
Regards,
Alisa Tang
Alisa Tang
TechNet Community Support -
How to fill the first column '#' of matrix with row id in user form?
Hi All,
I am having a user defined form in which, I m having a matrix and m populating the matrix with the output of an sql query.
something like this:
SQL_Str= "select col1,col2,......from.... "
OPopDBTable.ExecuteQuery(SQL_Str)
oMatrix.AddRow()
oMatrix.Columns.Item("Col3").DataBind.Bind("PopTable", "col1")
oMatrix.Columns.Item("Col2").DataBind.Bind("PopTable", "col2")
oMatrix.LoadFromDataSource()
Now, in this, how can I assign row number to first column ('#' column ) ??
regards,
BinitaAh...the ROW_NUMBER() was posted by Petr - also thank you (again)
With my example-query from the other thread:
SELECT
CAST(
ROW_NUMBER() OVER (ORDER BY T1.U_LogNo ASC) AS INT
) AS RowCnt,
T1.Code,
T1.U_ParcelNo,
T1.U_LogNo
FROM
[@XXX_EXAMPLE] T1
WHERE
T1.U_ParcelNo='132006'
ORDER BY
T1.U_LogNo ASC
...this works for me (it's quickly copied from several subs/func. - I hope it's not too much disordered):
DtLogs.ExecuteQuery(query)
oMtxLogs.Columns.Item("0").DataBind.Bind("DT_LOGS", "RowCnt")
oMtxLogs.Columns.Item("1")........
oMtxLogs.LoadFromDataSource() -
Hi All,
I need to create a 5/5 matrix in SSRS report. The data will be :
Col_Side Col_Header Col_data
1 1 1
1 1 1
1 2 1
1 5 1
1 5 1
1 5 1
2 3 1
2 5 1
3 1 2
3 1 2
3 1 2
4 2 1
4 4 1
5 1 1
5 1 1
5 5 1
So, the matrix column will be Col_Header and matrix row will be Col_Side and count(Col_data) will be on the data.
Finally, it will create a 5 by 5 matrix with Count(Col_data) as its data for each combinations. If there is no combination (for ex: in the above data we do not have no combination of (1,3) , (1,4) , (2,1) etc..) then the matrix will be filling that corresponding
cell with zero.
Here I need to fill the cells with some colors based on some criteria.
I need to fill (5,3), (5,4), (5,5) combination with "Red" color. Like this , I need to give different colors in each of the cells. Here, (5,5) combination will be having 1 in its cell. (5,4) and (5,3) will be having zero in its corresponding
cells. I 'm trying to fill all the 3 cells with "Red" color. But, I am able to fill only (5,5) with "Red" color. Since the other 2 cells (5,3) and (5,4), has zero in their cells, it will not fill the cells with "Red" color.
How can I fill those two cells (5,3) and (5,4) with red color?
I know this is very vague. I have no option to give the picture here..
Please suggestHi Julie,
According to your description, there is a 5/5 matrix with three fields: Col_Side, Col_Header, Col_data. You drag Col_Side field to Rows, Col_Header to Columns and Col_data to Data, then filling blank cells with zero using expression. Now you want to fill
(5,3), (5,4), (5,5) cells with red color using expression, but it has no effect on cells (5,3) and (5,4).
According to my test, the expression has on effect on cells (5,3) and (5,4) since there is no corresponding data and the cells are blank. As a workaround, we can insert data for cells (5,3) and (5,4) in dataset, then use expression by following steps:
In the dataset, insert two sets of data (5,3,0), (5,4,0).
Right-click the cell of data, click Text Box Properties.
Click Fill in left pane, click (fx) button, then type the expression like below, then click OK.
=iif(Fields!Col_Side.Value=5 and Fields!Col_Header.Value >=3 ,"red","white" )
The following screenshot is for your reference:
If you have any more questions, please feel free to ask.
Thanks,
Wendy Fu -
How to create Matrix with Group report layout in xml
Hi,
i would be glad if anyone could tell me How to create Matrix with Group report layout in xml?
Here i am attaching the required design doc
below is the code
select COST_CMPNTCLS_CODE,
-- crd.RESOURCES,
NOMINAL_COST,
cmm.COST_MTHD_CODE,
-- crd.COST_TYPE_ID,
gps.period_code
-- ORGANIZATION_ID
from CM_RSRC_DTL crd,
gmf_period_statuses gps,
CM_MTHD_MST cmm,
CR_RSRC_MST crm,
CM_CMPT_MST ccm
where gps.period_id = crd.PERIOD_ID
and crd.cost_type_id = cmm.cost_type_id
and crd.RESOURCES = crm.RESOURCES
and crm.COST_CMPNTCLS_ID = ccm.COST_CMPNTCLS_ID
and gps.period_code in (:p_period1, :p_period2, :p_period3)
group by COST_CMPNTCLS_CODE, cmm.COST_MTHD_CODE, gps.period_code,NOMINAL_COST
order by 1,2,3,4.
The o/p of the report shoud be as given below
Period-1 Period-2 Period-3 Period-4
COMPONENT
LABOUR - DIRECT
Actual 1 2 3 4
Actual Rate 10 10 10 10
Standard Rate
Var%
DEPRICIATION-DIRECT
Actual
Actual Rate
Standard Rate
Var%
OVERHEAD - DIRECT
Actual
Actual Rate
Standard Rate
Var%
LABOUR - IN DIRECT
Actual
Actual Rate
Standard Rate
Var%
Thanks in advanceYour friend is obviously not a reliable source of HTML
information.
Murray --- ICQ 71997575
Adobe Community Expert
(If you *MUST* email me, don't LAUGH when you do so!)
==================
http://www.dreamweavermx-templates.com
- Template Triage!
http://www.projectseven.com/go
- DW FAQs, Tutorials & Resources
http://www.dwfaq.com - DW FAQs,
Tutorials & Resources
http://www.macromedia.com/support/search/
- Macromedia (MM) Technotes
==================
"Mr.Ghost" <[email protected]> wrote in
message
news:f060vi$npp$[email protected]..
> One of my friends advised me to develop my whole site on
the layout mode
> as its
> better than the standard as he says
> but I couldnot make an ordinary table with rows and
columns in th layout
> mode
> is there any one who can tell me how to?
> thanx alot
> -
Performance problem on a table with zero rows
I queried the v$sqlarea table to find which SQL statement was doing the most disk reads and it turned out to be a query that read 278 Gigabytes from a table which usually has zero rows. This query runs every minute and reads any rows that are in the table. It does not do any joins. The process then processes the rows and deletes them from the table. Over the course of a day, a few thousand rows may be processed this way with a row length of about 80 bytes. This amounts to a few kilobytes, not 278 Gig over a couple of days. Buffer gets were even higher at 295 Gig. Note that only the query that reads the table is doing these disk reads, not the rest of the process.
There are no indexes on the table, so a full table scan is done. The query reads all the rows, but usually there are zero. I checked the size of the table in dba_segments, and it was 80 Meg. At one point months ago, during a load, the table had 80 Meg of data in it, but this was deleted after being processed. The size of the table was never reduced.
I can only assume that Oracle is doing a full table scan on all 80 Meg of this table every minute. Even when there are zero rows. Dividing the buffer gets in bytes by the number of executions yields 72 Meg which is close to the table size. Oracle is reading the entire table size from disk even when the table has zero rows.
The solution was to truncate the table. This helped immediately and reduced the disk reads to zero most of the time. The buffer gets were also reduced to 3 per execution when the table was empty. The automatic segment manager reduced the size of the table to 64k overnight.
Our buffer cache hit ratio was a dismal 72%. It should go up now that this problem has been resolved.
Table statistics are gathered every week. We are running Oracle 9.2 on Solaris.
Note that this problem is already resolved. I post it because it is an interesting case.
Kevin Tyson, OCP
DaimlerChrysler Tech Center, Auburn Hills, MIKevin,
The solution was to truncate the tableThis is not a scoop... isn't it ?
Table statistics are gathered every weekIs there any reason for that ?
If stats ran when no rows, perf can be very bad after loading data, and if stats ran when thousand rows, perf can be very bad after deleting. Perhaps can you find a more restrictive stat running ?
Nicolas.
Message was edited by:
N. Gasparotto -
NEED HELP IN MATRIX WITH GROUP REPORT
Dear All,
I need small help in MATRIX WITH GROUP REPORT In Report Builder Test Report
In my report, having periods as rows and location as columns as shown below,
1) LOC-A
JAN-10 FEB-10
ITEM-GROUP -1 1 2
ITEM-GROUP-2 3 4
ITEM-GROUP 3 5 6
2) LOC- B
MAR-10 APR-10
ITEM-GROUP -1 7 8
ITEM-GROUP-2 9 10
ITEM-GROUP-3 11 12
But comming to my requirement, the periods should be in fix in matrix as shown below
1) JAN-10 FEB-10 MAR-10 APR-10
LOC-A
ITEM-GROUP -1 1 2
ITEM-GROUP-2 3 4
ITEM-GROUP 3 5 6
LOC- B
ITEM-GROUP -1 0 0 7 8
ITEM-GROUP-2 0 0 9 10
ITEM-GROUP-3 0 0 11 12
I am unable to get this kind of output format
Please kindly waiting for reply from our team....
Regards
krishna.PFor the periods, create a seperate dummy query and then use it as column group in the multi query matrix.
-
How to fill matrix with the output of recordset query?
Hi all,
I want a user matrix to load data when I hit a button and the data to be filled is the output of an sql query. binding the matrix columns with table columns and then load the matrix with DBDatasource attached to that table will not do in this case as the columns in the sql query are from several different tables or views.
writing following line to do this takes several minutes to load the data:
For j = 0 To Reordset.RecordCount - 1
Matrix.AddRow()
Matrix.Columns.Item("col1").Cells.Item(i).Specific.value = Recordset.Fields.Item("cardcode").Value
Recordset.movenext()
next
Is there any other way to fill the matrix in this case, which loads the data faster?
Regards,Hello Binita,
I've tested the CFL for DataTable-Matrixes in my test-AddOn. But there's still one problem left. Maybe you find it out (I will need this in the future too...).
The ChooseFromList must be added behind the DataTable-Bind, which is done on every MTX-Load (it's not from the sample above, so the UIDs are new ones):
oDt = oDts.Item("dt_test")
query = "SELECT * FROM [@T_CONVTOOLS01]"
oDt.ExecuteQuery(query)
oMtx.Columns.Item("0").DataBind.Bind("dt_test", "Code")
oMtx.Columns.Item("1").DataBind.Bind("dt_test", "U_Alpha01")
oMtx.Columns.Item("2").DataBind.Bind("dt_test", "U_Price01")
oMtx.Columns.Item("3").DataBind.Bind("dt_test", "U_Quant01")
oMtx.Columns.Item("4").DataBind.Bind("dt_test", "U_Date01")
AddChooseFromLists()
oMtx.LoadFromDataSource()
...where AddChooseFromLists() is...
Private Shared Sub AddChooseFromLists()
Try
Dim oCfls As SAPbouiCOM.ChooseFromListCollection
Dim oCons As SAPbouiCOM.Conditions
Dim oCon As SAPbouiCOM.Condition
Dim oCfl As SAPbouiCOM.ChooseFromList
Dim oCflCreationParams As SAPbouiCOM.ChooseFromListCreationParams
Dim oBtn As SAPbouiCOM.Button
Dim oMtx As SAPbouiCOM.Matrix
Dim oCol As SAPbouiCOM.Column
Dim oEtx As SAPbouiCOM.EditText
oMtx = oForm.Items.Item("MTX_TEST02").Specific
oCfls = oForm.ChooseFromLists
oCflCreationParams = SboCon.SboUI.CreateObject(SAPbouiCOM.BoCreatableObjectType.cot_ChooseFromListCreationParams)
oCflCreationParams.MultiSelection = False
oCflCreationParams.ObjectType = SAPbouiCOM.BoLinkedObject.lf_BusinessPartner
oCflCreationParams.UniqueID = "CFL_C1"
oCfl = oCfls.Add(oCflCreationParams)
'### OPTION:
'# Shown ChooseFromList restricted by Conditions
oCons = oCfl.GetConditions()
oCon = oCons.Add()
oCon.Alias = "CardType"
oCon.Operation = SAPbouiCOM.BoConditionOperation.co_EQUAL
oCon.CondVal = "C"
oCfl.SetConditions(oCons)
oCol = oMtx.Columns.Item("1")
oCol.ChooseFromListUID = "CFL_C1"
oCol.ChooseFromListAlias = "CardCode"
Catch e As Exception
Microsoft.VisualBasic.MsgBox(className & ".AddChooseFromLists()" & vbCrLf & "Exception:" & vbCrLf & e.Message.ToString)
End Try
End Sub
But I'm running into problems when trying to set the MTX-Cell via DataTable at the CFL-Event (see comment):
If pVal.EventType = SAPbouiCOM.BoEventTypes.et_CHOOSE_FROM_LIST Then
Dim oMtx As SAPbouiCOM.Matrix
Dim oCFLEvent As SAPbouiCOM.IChooseFromListEvent
Dim oCFL As SAPbouiCOM.ChooseFromList
Dim oDataTable As SAPbouiCOM.DataTable
Dim cflID As String
Dim oDt As SAPbouiCOM.DataTable = oForm.DataSources.DataTables.Item("dt_test")
oCFLEvent = pVal
cflID = oCFLEvent.ChooseFromListUID
'Dim oForm As SAPbouiCOM.Form
'oForm = SboConnection.SboUI.Forms.Item(FormUID)
oCFL = oForm.ChooseFromLists.Item(cflID)
If Not oCFLEvent.BeforeAction Then
oDataTable = oCFLEvent.SelectedObjects
If oDataTable Is Nothing Then Exit Sub
'############## Matrix Test #######################################################################
If (oCFLEvent.ItemUID = "MTX_TEST02") Then
oMtx = oForm.Items.Item("MTX_TEST02").Specific
'### CFL Results to UserForm
oDt.Rows.Offset = oCFLEvent.Row - 1
MsgBox(oDt.GetValue("U_Alpha01", oCFLEvent.Row - 1))
MsgBox(oDataTable.GetValue("CardCode", 0))
' PROBLEM - can't get this working - don't know at the moment:
' on other forms SetValue works....
oDt.SetValue("U_Alpha01", oCFLEvent.Row - 1, oDataTable.GetValue("CardCode", 0))
' this also gives me problems...:
'oMtx.Columns.Item("1").Cells.Item(oCFLEvent.Row).Specific.value = oDataTable.GetValue("CardCode", 0)
oForm.Update()
End If
End If
End If
The CFL-Form opens and returns the choosen value(s) at the CFL-event. But writing to MTX still not works with this code...
Maybe you find the last piece. If so: please write here.
Cheers,
Roland
p.s.:
David Nussböck wrote
LOL - ROLAND WAS FASTER ))
...just one minute... -
More than one summary level for a matrix with group
Hello friends at www.oracle.com ,
I have a report where I need to create a summary level for each row and column. In the Report wizard, it works finely, creating the summary for the 1st matrix group level.
However, if I have some extra matrix group levels - that is, a 2nd or a 3rd level -, it seems that Reports doesn't create its summary levels.
How can I create other summary levels at the matrix, outside the inner matrix?
Best regards,
Franklin Goncalves Jr.Hello petpandian,
I have a little example that intends to demonstrate what I really need. Hope it is clear enough.
(Below you can see the output I am looking for)
..................MONTH/YEAR
CITY REGION 04/2005.....05/2005
AA.....BB......$ 10,00.....$ 15,00
...............$ 11,00.....$ 16,00
Totals for BB: $ 21,00.....$ 31,00
..................MONTH/YEAR
CITY REGION 04/2005.....05/2005
AA.....CC......$ 30,00.....$ 11,00
...............$ 40,00.....$ 15,00
Totals for CC: $ 70,00.....$ 26,00
Totals for AA: $ 91,00.....$ 57,00 <-- Totals separated for each region and month/year.
As you can see, I need a matrix with group(s) around it. 1st group level is the city (AA), and I have its regions BB and CC. After showing BB values, I have BB totals for each month/year. Same applies to CC totals.
However, I expect that these results can be showed for its outside group (in this example, CITY AA), and what I have in return is the sum of all values in a single field:
Totals for CC: $ 70,00.....$ 26,00
Totals for AA:.....................$148,00 <--- The sum of all totals: it's not separated as above.
I think I should have a matrix inside a matrix, so I would have totals for each region, and totals for each city, separating by its regions and month/year.
The only solution I found was to calculate it manually via PL/SQL and inserting it into a temporary table. However, I think it is not the ideal solution because PL/SQL instructions have to handle the totals, something that Reports should do, and that's why I need help.
Your help will be greatly appreciated. Thanks in advance.
Best regards,
Franklin Goncalves Jr. -
Matrix with DataTable - GetLineData and SetLineData B1 8.8 Bug
Hi experts,
I have a matrix bounded to a DataTable and I succefully load the matrix with:
DataTable dt = form.DataSources.DataTables.Item("matDT");
dt.ExecuteQuery(sql);
Matrix mat = form.Items.Item("mat").Specific as Matrix;
mat.LoadFromDataSource();
mat.AutoResizeColumns();
Now in Event et_VALIDATE(after), i would like to change some not editable column of the matrix
[B1Listener(BoEventTypes.et_VALIDATE, false)]
public virtual void OnAfterValidate(ItemEvent pVal) {
if(pVal.ItemUID!="mat")
return;
Form form = B1Connections.theAppl.Forms.Item(pVal.FormUID);
Matrix mat = form.Items.Item("mat").Specific as Matrix;
DataTable dt = form.DataSources.DataTables.Item("matDT");
//Pont 1)
mat.GetLineData(pVal.Row)
//Point 2
//Change Values
int minutes = dt.GetValue("U_Minutes", pVal.Row-1);
dt.SetValue("U_Hours",pVal.Row-1, (double) minutes / 60);
//Point 3
mat.SetLineData(pVal.Row);
Now I will expain the problem:
For simplicity assume the matrix has 2 rows after load. After the user edit a column, validate event fires and:
-) After the call of GetLineData in Point 1) I verified that all DataTable Rows are identical (derived from the first row in the matrix)
-) If I substitute GetLineData in point 1) with FlushToDataSource, DataTable became corret but after the call of SetLineData in point 3) all the matrix rows are identical (derived from the first DataTable row).
-) If I also substitute SetLineData in point 3) with LoadFromDataSource, all works fine but i loose focus and performances
Is it a B1 8.8 Bug?Yes, but sap said that my customer is not officially approved.
the following is the original text.
Please note that SAP Business One Release 8.8 has only been released for
Ramp-Up. Because of this, only approved projects for productive usage a
re fully supported by SAP Business One Support. However feedback on prod
uct quality or bugs reporting from all partners - even from partners who
are not part of the Ramp-Up - is welcome and highly appreciated.
According to the information we have, your customer is not officially ap
proved for Ramp-Up yet. Due to the difficulty to estimate the number of
messages that will be submitted, SAP cannot commit itself to solving all
issues reported about projects not officially approved for Ramp-Up, nor
guarantee any response times.
Kind regards,
SAP Business One Support -
I want to make matrix with combobox column, it is not dificulte, but did somebody know is it posible with different values in each cell?
first row ( 0, Zero ), ( 1, One )
second row ( 0, Zero ), (2, Two ), (6, Six)
third row ( 0, Zero), (1, One )
.... ( Value, Description )
I make something but all cell's have the same set of pair (Value, Description )
P.S. Sorry for my englishHi Andy,
I have been playing around with this for a while now and (seeing that Ibai actually already gave you a solution) I'm just gonna post where I am up to now. I have a matrix with two columns on it (c_1 and c_2). c_1 holds the value 1, 2 or 3. Whenever the user clicks on c_2 I repopulate the combo box according to the value selected in c_1. The only problem is that it shows the second last selected row and not the one that is currently selected. I am just posting it here so it can maybe someday put someone onto the right track.
If pVal.FormTypeEx = "MainForm" Then
If pVal.ItemUID = "m_List" Then 'Matrix
If pVal.ColUID = "c_2" Then 'Column 2
If pVal.BeforeAction = False Then
If pVal.EventType = SAPbouiCOM.BoEventTypes.et_GOT_FOCUS Then
Dim oForm As SAPbouiCOM.Form
Dim oEdit As SAPbouiCOM.EditText
Dim oCombo As SAPbouiCOM.ComboBox
Dim oMatrix As SAPbouiCOM.Matrix
Dim oCol As SAPbouiCOM.Column
Dim i As Integer
oForm = oApplication.Forms.ActiveForm
oMatrix = oForm.Items.Item("m_List").Specific
oCol = oMatrix.Columns.Item("c_1")
oEdit = oCol.Cells.Item(pVal.Row).Specific
oCol = oMatrix.Columns.Item("c_2")
oCombo = oCol.Cells.Item(pVal.Row).Specific
For i = oCombo.ValidValues.Count - 1 To 0 Step -1
oCombo.ValidValues.Remove(i, SAPbouiCOM.BoSearchKey.psk_Index)
Next
If oEdit.Value = "1" Then
oCombo.ValidValues.Add("1", "One")
ElseIf oEdit.Value = "2" Then
oCombo.ValidValues.Add("2", "Two")
oCombo.ValidValues.Add("22", "TwoTwo")
ElseIf oEdit.Value = "3" Then
oCombo.ValidValues.Add("3", "Three")
oCombo.ValidValues.Add("33", "ThreeThree")
oCombo.ValidValues.Add("333", "ThreeThreeThree")
End If
End If
End If
End If
End If
End If
Hope it helps,
Adele
PS: Ibai, why do you have a new user name? You are the same Ibai Peña right? -
Matrix with Info Columns from different Table
Hi, how can i manage to have a column in a matrix that doesn't represent a value of the table the other columns are using?
For example, i have a matrix and this matrix has values of the UDT (@Table) and one column contains the projectcode. now i want one column in my matrix to show the project name of the OPRJ. how can i manage that, so that the value of this column in the matrix changes when i change the value of the other column with the project code?
best regards
PhilippHi
1) You can fill the matrix from Recordset.
For example: UDT is [@O01_USERTABLE].
PrjCode foreign key to the Projects table (OPRJ - not exposed through the DI API).
So, if you type correctly PrjCode, you can fetch description using method below.
Dim sSql As String = ""
sSql = " SELECT U.PrjCode AS PrjCode, S.PrjName As PrjName" & _
" FROM [@O01_USERTABLE] AS U, OPRJ AS S" & _
" WHERE U.PrjCode = S.PrjCode"
oRS = SBO_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
oRS.DoQuery(sSql)
If oRS.RecordCount > 0 Then
Dim i As Integer = 0
oRS.MoveFirst()
While oRS.EoF = False
i = i + 1
oForm.DataSources.UserDataSources.Item("uNr").Value = i ' 1" matrix column for row number
oForm.DataSources.UserDataSources.Item("uPrjCode").Value = oRS.Fields.Item("PrjCode").Value
oForm.DataSources.UserDataSources.Item("uPrjName").Value = oRS.Fields.Item("PrjName").Value
oMatrix.AddRow()
oRS.MoveNext()
End While
End If
2) On ManageDataEvent, call Matrix_FetchDescriptions(...)
Public Sub ManageDataEvent(ByRef BusinessObjectInfo As SAPbouiCOM.BusinessObjectInfo, ByRef BubbleEvent As Boolean)
Dim oForm As SAPbouiCOM.Form = SBO_Application.Forms.Item(BusinessObjectInfo.FormUID)
If BusinessObjectInfo.EventType = SAPbouiCOM.BoEventTypes.et_FORM_DATA_LOAD Then
If Not BusinessObjectInfo.BeforeAction Then
Try
oForm.Freeze(True)
Dim oMatrix As SAPbouiCOM.Matrix
oMatrix = oForm.Items.Item("mtx00").Specific
If oMatrix.RowCount > 0 Then
Call Matrix_FetchDescriptions(oForm, -1)
End If
Catch ex As Exception
Finally
oForm.Freeze(False)
oForm.Update()
End Try
End If
End If
oForm = Nothing
End Sub
' Update column Name
Private Sub Matrix_FetchDescriptions(ByRef oForm As SAPbouiCOM.Form, ByVal iRow As Integer)
Dim oMatrix As SAPbouiCOM.Matrix
Dim oColumn As SAPbouiCOM.Column
Dim oCell As SAPbouiCOM.Cell
Dim oEdit As SAPbouiCOM.EditText
Try
If SBO_Company.Connect Then
oMatrix = oForm.Items.Item("mtx00").Specific
If oMatrix Is Nothing Then Throw New Exception("ERROR: matrix object is nothing")
Dim iNrRows As Integer = oMatrix.RowCount ' iRow
If iNrRows > 0 Then
Dim i As Integer = 1
For i = 1 To iNrRows
Dim sCode As String = ""
Dim sName As String = ""
Try
' Matrix column PrjCode
oColumn = oMatrix.Columns.Item("ePrjCode")
oCell = oColumn.Cells.Item(i)
oEdit = oCell.Specific
sCode = oEdit.Value
sName = GetNameByCode(sCode)
If Not sName.Equals("") Then
' Matrix column PrjName
oColumn = oMatrix.Columns.Item("ePrjName")
oCell = oColumn.Cells.Item(i)
oEdit = oCell.Specific
oEdit.Value = sName
End If
If iRow = i Then Exit Sub
Catch ex As Exception
Finally
End Try
Next
oForm.Refresh()
End If
End If
Catch ex As Exception
' log exception
Finally
oMatrix = Nothing
oColumn = Nothing
oCell = Nothing
oEdit = Nothing
System.GC.Collect() 'Release the handle to the table
End Try
End Sub
To get Name using Code...
Private Function GetNameByCode(ByVal sCode As String) As String
If sCode.Trim.Equals("") Then Return ""
Dim sName As String = ""
Dim oRS As SAPbobsCOM.Recordset
Try
oRS = SBO_Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
Dim sSql As String = "SELECT PrjName FROM OPRJ WHERE PrjCode = '" & sCode.Trim & "'"
oRS.DoQuery(sSql)
oRS.MoveFirst()
While oRS.EoF = False
sName = oRS.Fields.Item("PrjName").Value()
Exit While
End While
Catch ex As Exception
Finally
If Not oRS Is Nothing Then
System.Runtime.InteropServices.Marshal.ReleaseComObject(oRS)
oRS = Nothing
End If
End Try
Return sName
End Function
Note: Matrix_FetchDescriptions() have second argument (iRow As Integer) what may be used to indicate in what row you need to update PrjName column.
May be ItemManagment event when item pressed can be used... Try
HTH
BR
Sierdna S. -
SSRS 2008 - Matrix subtotals in rows (like in Excel)
Hello guys,
I have to develop report in following structure:
My best shot so far was creating matrix, but I don't know how to add the subtotal rows which are calculated as one row values divided by another.
Source data snippet:
Row Number
Column 1
Column 2
21
1
2
22
3
2
23
6
6
24
9
6
Desired output in report:
Row Number
Column 1
Column 2
21
1
2
22
3
2
23
6
6
Row no. 23/Row no. 22
2
3
24
9
6
Row no. 24/Row no. 22
3
3
I was able to create matrix with Row Number but cannot figure out how to add rows with subtotals as showed above.
Any suggestion would be greatly apprecited.
RoyHi Roy,
According to your description, you want to create some calculated rows, which stores the previous row value divided by a specified row value.
In Reporting Service, we can use matrix to group data by multiple fields or expressions in row and column groups. But it’s impossible to add a data row directly between two row groups. In this scenario, it’s also impossible to get the value of a specific
data row. So we can never make a data row divided by another data row. By the way, even you could add a row, when you use rownumber() function, the row number will increase with the added row. So your requirement can’t be achieved currently.
Reference:
Matrices (Report Builder and SSRS)
If you have any question, please feel free to ask.
Best regards,
Qiuyun Yu
Maybe you are looking for
-
Solaris 11.2 x86 installation problem on GPT partitioned SSD
I recently bought a new computer with Windows 8.1 pre-installed on it. I want to install Solaris 11.2 as dual-boot together with the pre-installed windows 8.1. The computer has a 128 GB SSD which is GPT partitioned. The SSD has 5 GPT partitions which
-
Table Field Reading in an ABAP program
Dear All Gurus, This is my requirement.. I need to read the field name (not the value of the field) in an Internal Table loop. Ex : If internal table is currently reading 'LIFNR' ,need to read this field name into a variable, because I need to cross
-
Hello All, I just installed Ecc6.0 ABAP+JAVA, Windows SQL 2005. Install went ok, however I am not able to see the J2EE process table in the MMC, I wanted to know if anyone knows of how to get that view? Regards King
-
Nokia E65 Update to 2.0633.65.01
Hey Guys, i have a small problem. My Nokia E65 has the Firmware Version: Version: 1.0633.18.01 11-01-2007 RM-208 Nokia E65 The Nokia Software-Update Newsfeed says a Update to Version 2.0633.65.01 is available. When i try to Update my Cell, the Softwa
-
Could you please help me make this query less complicated
could you please help me make this query less complicated select t1.R_OBJECT_ID from dm_relation_sp a, ddt_resolution_sp t1 where a.parent_id = '0900000283560456' -----------ID and a.child_id = t1.R_OBJECT_ID union all select t3.R_OBJECT_ID from ddt_