LoadBatchActions to Populate a Matrix

We have managed to work out some XML that can be passed to LoadBatchActions to populate a matrix in a single call (With performance being the goal), however it doesn't seem possible to populate combo box columns using this mechanism.  Is there a way to populate combo box matrix cells with data using LoadBatchActions?  What we have so far is something like this, but the LnType2 column is causing the operation to fail because it is a combo box column:
<?xml version="1.0" encoding="UTF-16"?>
<Application>
  <forms>
    <action type="update">
      <form appformnumber="2000071350" uid="FSE_0000000">
        <items>
          <action type="update">
            <Item uid="Matrix">
              <Specific>
                <rows>
                  <action type="add">
                    <row index="0" />
                    <row index="0" />
                  </action>
                  <action type="update">
                    <row index="1">
                      <column uid="Um2" string="EA" />
                      <column uid="LnType2" string="P" />
                    </row>
                    <row index="2">
                      <column uid="Um2" string="EA" />
                      <column uid="LnType2" string="P" />
                    </row>
                </rows>
              </Specific>
            </Item>
          </action>
        </items>
      </form>
    </action>
  </forms>
</Application>

Hi Benjamin,
In the Business One UI API 2004 help file you could find an issue named "Adding Forms with XML" where it is explained the file format.
Moreless, you should use the valid values property under ItemSpecific tag to set the possible options, and then add some datasources to link the controls on the matrix with the tables in the DB.
Regards
Ibai Peñ

Similar Messages

  • LoadBatchActions XML Date Parasing

    We are using LoadBatchActions to populate a matrix with data in a single call by passing an XML document, but we have noticed that in B1 2005, date columns in the matrix seem to parse the date wrong.  When you have the date format set to DD/Month/YYYY then it expects a month name in the XML date value instead of the neutral YYYYMMDD format.  I thought XML was supposed to be a language-neutral format, and that data passed to B1 was supposed to be in a language-neutral format.  Is there an error here?

    That's the problem.  Local settings should not affect data format at this level.  I can work around it by changing the string according to the local settings, but data formats are supposed to be locale-agnostic.
    The following code demonstrates the problem.  This code should work no matter what the local settings are, but it fails when using DD/Month/YYYY format:
    [code]
    Sub CreateDateMatrix()
       Dim frm As SAPbouiCOM.Form
       Dim cp As SAPbouiCOM.FormCreationParams
       Set cp = sboApp.CreateObject(cot_FormCreationParams)
       cp.FormType = "FSE_TestDate"
       cp.BorderStyle = fbs_Sizable
       Set frm = sboApp.Forms.AddEx(cp)
       frm.Visible = True
       Dim mtxItem As SAPbouiCOM.Item
       Set mtxItem = frm.Items.Add("Matrix", it_MATRIX)
       mtxItem.Left = 10
       mtxItem.Top = 10
       mtxItem.Width = frm.ClientWidth - 20
       mtxItem.Height = frm.ClientHeight - 20
       Dim ds As SAPbouiCOM.UserDataSource
       Set ds = frm.DataSources.UserDataSources.Add("DateDS", dt_DATE)
       Dim mtx As SAPbouiCOM.Matrix
       Set mtx = mtxItem.Specific
       mtx.Columns.Add("RowMark", it_EDIT).Editable = False
       With mtx.Columns.Add("Date", it_EDIT)
          .Editable = -False
          .DataBind.SetBound True, , "DateDS"
          .Width = 100
          .TitleObject.Caption = "Date"
       End With
       Dim populate As String
       populate = "<Application><forms><action type=""update"">" & _
          "<form uid=""" & frm.UniqueID & """>"
       populate = populate & "<items><action type=""update"">" & _
          "<Item uid=""Matrix"">"
       populate = populate & "<Specific><rows><action type=""add"">"
       Const rowCount As Integer = 5
       Dim i As Integer
       For i = 1 To rowCount
          populate = populate & "<row index=""" & CStr(i) & """ />"
       Next
       populate = populate & "</action><action type=""update"">"
       Dim dateString As String
       For i = 1 To rowCount
          dateString = Format$(Now + i, "yyyyMMdd")
          populate = populate & "<row index=""" & CStr(i) & """>" & _
             "<column uid=""Date"" string=""" & dateString & """ /></row>"
       Next
       populate = populate & "</action></rows></Specific></Item></action>" & _
          "</items></form></action></forms></Application>"
       sboApp.LoadBatchActions populate
       MsgBox sboApp.GetLastBatchResults
    End Sub
    [/code]

  • Urgent HELP required on forming the Matrix of data using PL/SQL

    Hi All,
    I'm new to this thread and require your urgent help in this regard.
    I've got a requirement for building a 5000 X 5000 matrix using PL/SQL. My original data tables have 5000 rows each and I need to do a correlation analysis using this data and need to store in a physical table and not in-memory. Is this feat achievable using mere PL/SQL? I understand that Oracle DB has a limitation of 1000 columns(but not sure) and hence I'd like to know whether there is any work-around for such scenarios. If not, what are the other alternative method(s) to achieve this feat? Do I need to use any 3rd party tools to get this done? An early reply from the experts is highly appreciated.
    Thanking you all Gurus in advance.
    Rgds
    Sai

    Welcome to OTN!
    I'll get to your quesiton in a moment, but first some welcome information. Many OTN posters consider it impolite to mark threads as "urgent". We are volunteers and have jobs of our own to do without people we don't know making demands. You are brand new and deserve some patience but please understand this. It is very likely before I finish this post someone will complain about the word "urgent" in your subject.
    On to more interesting things :)
    You can do the matrix, but are out of luck with a 5000 x 5000 table because Oracle only allows 1000 columns per table. There are ways to work around this.
    How do do the matrix depends on what you want to do. You can do this different ways. You can create a table beforehand and use PL/SQL or simple SQL to populate it, or use the CREATE TABLE AS syntax to create and populate it in one step if you can get the underlying SQL to work the way you want, something like
    create table my_table as
      select a.*, b.*
        from table1 a, table2 bcan populate a matrix from 2 tables with an intentional cartesian join (the WHERE clause was left out intentionally, provided your data is already in the data base.
    If not you can use a PL/SQL routine to populate the data.
    There are a couple of ways to solve the 1000 column limit. The easiest way might be to have 5 collections of 1000 columns each. A more complicated but more elegant soltion would be to have nested collections, allowing 2 colliections that you can loop through - a collection of collections. Nested collections can be hard to work with. A third way would be to use nested tables in the database but I personally do not like them and the insert, update, and delete statements for nested tables are hard to use.
    I'm not going to give a code example because I am not sure which solution is best for you. If you have further questions post them.

  • What is the best way to load 2 seperate tables to a single matrix

    What I would like to do  is create a date sorted list of customer orders and purchase orders for a single item(part) and populate a single matrix.
    and did i mention quick...

    Hi!
    i suppose you sould create for example UNION query:
    SELECT docdate, cardname, 'purch', docnum FROM OPCH
    UNION
    SELECT docdate, cardname, 'order', docnum FROM OPOR
    ORDER BY 1
    Then execute oRS.DoQuery and populate your matrix inside a loop...
    propably, somebody can give you some more advices..
    hope it helps..

  • Convert the matrix report output to excel sheet

    Hi,
    I am using reports 6i and database Oracle Database 10g Enterprise Edition Release 10.2.0.1.0.
    I have to convert the output of matrix report into Excel sheet.
    Is it possible.
    Is there any other way to populate the matrix data to the excel sheet.
    Thanks and regards,
    Ansaf.

    You can generate excel file by setting SYSTEM PARAMETER values as below
    DESFORMAT - DELIMITED
    DESTYPE -FILE
    DESNAME -File Name.XLS
    Although this is not a pure Excel file (Its only a tab delimited file) but you can open this with MSExcel or Open office Calc.
    Regards
    Ahamed Rafeeque Cherkala.

  • Change data in existing "Choose from list" matrix

    Hi,
      in UI GUI->order form . When add a new order, hit "TAB" to select BP from existing list. I want to use my own sql to populate the BP list (currently the GUI defaults to return all customers).
    Is there a way? I mean if I just want to change data in the matrix and let B1 continue to make the "Choose from list" form (form "10001") with my own new customer list.  Set BubbleEvent = true will just re-read all cards after I query my result.
      any help is appriciated!

    Hello,
    I came across the same issue with the Items Choose from List on the Sales Order screen. It is possible to load your own Choose from List form and populate the matrix using recordset objects and userdatasources. The same logic could be applied to the BP Choose from List form. The following code displays the user form and matrix items - separate code is needed to handle the selection process on this form. There maybe a faster way of acheiving this using UDTs etc but it seems to work ok.
    'When user presses Tab key in Item No. column.
    If pVal.EventType = et_KEY_DOWN Then
    If pVal.ItemUID = "38" And pVal.ColUID = "1" And _
    pVal.Before_Action = True And pVal.CharPressed = vbKeyTab Then
    'Load new Choose from List form.
    'This is actually an exported and edited version of the SBO form.
    LoadFromXML sIIS_ITEMLIST_XML
    'Populate matrix with items returned from SQL query.
    'Use recordset, arrays, userdatasources.
    Set oRecordSet = oCmp.GetBusinessObject(BoRecordset)
    sSql = "Select OITM.ItemCode, OITM.ItemName, OITM.OnHand FROM OITM " & _
        "Where Upper(Left(OITM.ItemCode,2)) = 'B1'"
    oRecordSet.DoQuery sSql
    nRows = oRecordSet.RecordCount
    If nRows <> 0 Then
    'Array declarations.
    Dim ItemCode(), ItemName(), OnHand()
    ReDim ItemCode(nRows - 1)
    ReDim ItemName(nRows - 1)
    ReDim OnHand(nRows - 1)
    'Add userdatasources to form.
    oForm.DataSources.UserDataSources.Add "ItemCode", dt_LONG_TEXT, 20
    oForm.DataSources.UserDataSources.Add "ItemName", dt_LONG_TEXT, 100
    oForm.DataSources.UserDataSources.Add "OnHand", dt_LONG_NUMBER
    i = 0
    'Populate arrays from recordset.
    Do While oRecordSet.EOF <> True
        ItemCode(i) = oRecordSet.Fields.Item(0).Value
        ItemName(i) = oRecordSet.Fields.Item(1).Value
        OnHand(i) = oRecordSet.Fields.Item(2).Value
        oRecordSet.MoveNext
        i = i + 1
    Loop
    'Bind data fields to form items.
    Set oMatrix = oForm.Items.Item("7").Specific
    Set oColumn = oMatrix.Columns.Item("ItemCode")
    oColumn.DataBind.SetBound True, "", "ItemCode"
    Set oMatrix = oForm.Items.Item("7").Specific
    Set oColumn = oMatrix.Columns.Item("ItemName")
    oColumn.DataBind.SetBound True, "", "ItemName"
    Set oMatrix = oForm.Items.Item("7").Specific
    Set oColumn = oMatrix.Columns.Item("OnHand")
    oColumn.DataBind.SetBound True, "", "OnHand"
    'Get data from datasources.
    Dim oUItemCode As SAPbouiCOM.UserDataSource
    Dim oUItemName As SAPbouiCOM.UserDataSource
    Dim oUOnHand As SAPbouiCOM.UserDataSource
    Set oUItemCode = oForm.DataSources.UserDataSources.Item("ItemCode")
    Set oUItemName = oForm.DataSources.UserDataSources.Item("ItemName")
    Set oUOnHand = oForm.DataSources.UserDataSources.Item("OnHand")
    oMatrix.Clear
    'For each returned record in recordset then
    'add row to matrix and populate it from
    'userdatasource.
    For i = 1 To nRows
        oMatrix.AddRow
        oUItemCode.Value = ItemCode(i - 1)
        oUItemName.Value = ItemName(i - 1)
        oUOnHand.Value = OnHand(i - 1)
        oMatrix.SetLineData
    Next i
    End If
    'Show form. This also sets focus to edittext field.
    oForm.Visible = True
    'Don't display standard SBO item list form.
    BubbleEvent = False
    End If
    End If
    Regards,
    Andrew.

  • Ordering and Reordering rows in a Matrix

    Hi,
    I am using a DBDataSource (User Defined) to populate a Matrix.
    I use Conditions to filter this matrix.
    I have a field called Seq in the Matrix and want to be able to order the matrix by Seq.
    Can this be done without using a SQL Query in the datasource.
    Also I have up and down buttons next to the Matrix - is there a way to move rows up and down (or reorder the rows) in the matrix without changing a code and requerying the Datasource ?
    Thanks
    Nick
    Pages: 1

    Hi Dragos,
    Hope this can help.
    In my form I have 2 matrix's that need reordering, and I have 2 buttons next to each up1/dn1 and up2/dn2
    Here is the event code :
    Private Sub FLBOM_ItemPress(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByVal oform As SAPbouiCOM.Form)
            Dim s As Integer = 0
            'Dim oform2 As SAPbouiCOM.Form
            'oform2 = SBO_Application.Forms.Item("FLBOM")
            Try
                If pVal.Before_Action = True Then
                    Select Case pVal.ItemUID
                        Case "up1"
                            FLBOM_MoveRow(pVal, oform, "matBOM", Direction.Up)
                        Case "dn1"
                            FLBOM_MoveRow(pVal, oform, "matBOM", Direction.Down)
                        Case "up2"
                            FLBOM_MoveRow(pVal, oform, "matSubBOM", Direction.Up)
                        Case "dn2"
                            FLBOM_MoveRow(pVal, oform, "matSubBOM", Direction.Down)
              End Select
                End If
            Catch ex As Exception
                MessageBox.Show("s=" & s.ToString & ":" & ex.Message)
            End Try
        End Sub
    I also pin this to the itempress event on the matrix itself - if the user selects the top row of the matrix
    it disables the up button, bottom of the matrix disables down button
          If pVal.FormMode = 1 Then
                                    Dim m As SAPbouiCOM.Matrix = oform.Items.Item("matBOM").Specific
                                    Dim r As Integer = pVal.Row
                                    Dim rc As Integer = m.RowCount
                                    Select Case r
                                        Case 1
                                            FLBOM_ItemEnable(oform, "up1", True)
                                            FLBOM_ItemEnable(oform, "dn1", False)
                                            FLBOM_ItemEnable(oform, "btnBOMDel", False)
                                        Case rc
                                            FLBOM_ItemEnable(oform, "up1", False)
                                            FLBOM_ItemEnable(oform, "dn1", True)
                                            FLBOM_ItemEnable(oform, "btnBOMDel", False)
                                        Case Else
                                            FLBOM_ItemEnable(oform, "up1", False)
                                            FLBOM_ItemEnable(oform, "dn1", False)
                                            FLBOM_ItemEnable(oform, "btnBOMDel", False)
                                    End Select
    ItemEnable looks like this
    Private Sub FLBOM_ItemEnable(ByVal oform As SAPbouiCOM.Form, ByVal Itm As String, ByVal Off As Boolean)
            Dim e As SAPbouiCOM.Item
            e = oform.Items.Item(Itm)
            If Off Then
                e.Enabled = False
            Else
                e.Enabled = True
            End If
        End Sub
    Then I have code to handle the moving of the rows - it is fairly generic - you feed it the form, matrix name and the direction and the code does the rest.
    You need to change the SQL to update the right UDT
    The matrix name(s) - remember I have 2 on the same form that I reorder so this code could easily be simplified.
    Private Sub FLBOM_MoveRow(ByVal pval As SAPbouiCOM.ItemEvent, ByVal oform As SAPbouiCOM.Form, ByVal Mat As String, ByVal dir As Direction)
            If pval.FormMode = 1 Then
                Dim oMatrix As SAPbouiCOM.Matrix = oform.Items.Item(Mat).Specific
                Dim irow As Integer
                Try
                    irow = oMatrix.GetNextSelectedRow(0, SAPbouiCOM.BoOrderType.ot_SelectionOrder)
                    If irow = 1 And dir = Direction.Up Then
                        SBO_Application.StatusBar.SetText("Cannot Go Up ", SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                        Exit Sub
                    End If
                Catch
                    SBO_Application.StatusBar.SetText("Must Select a Line in First", SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                    Exit Sub
                End Try
                If irow < 0 Then
                    SBO_Application.StatusBar.SetText("Must Select a Line First", SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
                    Exit Sub
                End If
                ' CODE HERE
                Dim oTbl As SAPbouiCOM.DataTable
                Dim sSql As String
                Dim Seq1 As Integer
                Dim Seq2 As Integer
                Dim code1 As String
                Dim code2 As String
                Dim oe As SAPbouiCOM.EditText
                oe = oMatrix.Columns.Item("colSeq").Cells.Item(irow).Specific
                Seq1 = oe.Value
                oe = oMatrix.Columns.Item("#").Cells.Item(irow).Specific
                code1 = oe.Value
                Select Case dir
                    Case Direction.Up
                        code2 = oMatrix.Columns.Item("#").Cells.Item(irow - 1).Specific.value
                        Seq2 = oMatrix.Columns.Item("colSeq").Cells.Item(irow - 1).Specific.value
                    Case Direction.Down
                        code2 = oMatrix.Columns.Item("#").Cells.Item(irow + 1).Specific.value
                        Seq2 = oMatrix.Columns.Item("colSeq").Cells.Item(irow + 1).Specific.value
                End Select
                oTbl = oform.DataSources.DataTables.Item("TEMPTable1")
                sSql = "UPDATE [@LYNXS_SP] SET U_Seq=" & Seq2 & " WHERE Code = '" & code1 & "'"
                oTbl.ExecuteQuery(sSql)
                sSql = "UPDATE [@LYNXS_SP] SET U_Seq=" & Seq1 & " WHERE Code = '" & code2 & "'"
                oTbl.ExecuteQuery(sSql)
                If Mat = "matBOM" Then
                    FLBOM_After_CFLBP(oform)
                Else
                    Dim om1 As SAPbouiCOM.Matrix = oform.Items.Item("matBOM").Specific
                    Dim e As SAPbouiCOM.EditText = om1.Columns.Item("#").Cells.Item(irow).Specific
                    LoadSubBom(e.Value, oform)
                End If
                Select Case dir
                    Case Direction.Up
                        irow = irow - 1
                    Case Direction.Down
                        irow = irow + 1
                End Select
                oMatrix.SelectRow(irow, True, False)
                Dim rc As Integer = oMatrix.RowCount
                Select Case irow
                    Case 1
                        FLBOM_ItemEnable(oform, "up1", True)
                        FLBOM_ItemEnable(oform, "dn1", False)
                    Case rc
                        FLBOM_ItemEnable(oform, "up1", False)
                        FLBOM_ItemEnable(oform, "dn1", True)
                    Case Else
                        FLBOM_ItemEnable(oform, "up1", False)
                        FLBOM_ItemEnable(oform, "dn1", False)
                End Select
                Try
                    If Mat = "matBOM" Then
                        Dim e As SAPbouiCOM.EditText = oMatrix.Columns.Item("#").Cells.Item(irow).Specific
                        LoadSubBom(e.Value, oform)
                    End If
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
            Else
                SBO_Application.StatusBar.SetText("Must Update Form First", SAPbouiCOM.BoMessageTime.bmt_Medium, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
            End If
        End Sub
    So Finally - here are the 2 routines that load the matrix - notice I use the same routines to initially load the matrix as I do after the above updates when the row is moved.
    Private Sub FLBOM_After_CFLBP(ByVal oform As SAPbouiCOM.Form)
            Dim oMatrix As SAPbouiCOM.Matrix
            Dim oMatrix2 As SAPbouiCOM.Matrix
            oMatrix = oform.Items.Item("matBOM").Specific
            Dim oe As SAPbouiCOM.EditText = oform.Items.Item("3").Specific
            Dim oc As SAPbouiCOM.ComboBox = oform.Items.Item("cbArea").Specific
            Dim SQLSTR As String = "SELECT * FROM [@LYNXS_SP] WHERE U_PARENTCODE IS NULL AND U_CARDCODE = '" & oe.Value & "' AND U_AREAID = '" & oc.Selected.Value & "'  ORDER BY U_AREAID, U_SEQ"
            oform.DataSources.DataTables.Item("TEMP").ExecuteQuery(SQLSTR)
            oMatrix.LoadFromDataSource()
            oMatrix2 = oform.Items.Item("matSubBOM").Specific
            oMatrix2.Clear()
        End Sub
    and
    Private Sub LoadSubBom(ByVal ParentID As Integer, ByVal oform As SAPbouiCOM.Form)
            Dim m As SAPbouiCOM.Matrix = oform.Items.Item("matSubBOM").Specific
            m.Clear()
            Dim SQLSTR As String = "SELECT * FROM [@LYNXS_SP] WHERE U_PARENTCODE = '" & ParentID & "' ORDER BY U_SEQ"
            oform.DataSources.DataTables.Item("TEMP").ExecuteQuery(SQLSTR)
            m.LoadFromDataSource()
        End Sub
    one last bit of code that is missing from the above
        Public Enum Direction
            Up
            Down
        End Enum
    Let me know how this goes for you.
    Regards,
    Nick

  • Link Button In Grid or Matrix ?

    Hello,
    I'm trying to populate a grid with data from a SQL query, using a datatable datasource, but I don't know how to specify which fields are to have drill-down(link buttons). After looking at this thread :
    Linked button in a Grid (SBO 2005)
    I'm left wondering how the Business One Report Generator can generate a grid with link buttons attached to the appropriate fields, when it is only given a SQL query.
    I'm thinking I might have to use a matrix, but how can i populate the matrix when if i don't know what the SQL query will be in advance?, also can I achieve the grouping using a matrix that the grid automatically does ?

    Hello Welch,
    Both Matrix and Grid can work with LinkButton. And regarding Grid, first of all, you need to define the gridcolumn type as gct_EditText, then in EditTextColumn Object, there is a property named LinkedObjectType, please set the property as in Matrix column.
    ' First define the column as EditText type
    oCol = oGrid.Columns.Item("Col1")
    oCol.LinkedObjectType = 4
    Hope this helps,
    Nick

  • Matrix Row Click Event

    Dear Support Team,
    I want to populate another matrix on clicking a row of a matrix.  which event should i capture.
    Thanking you
    Pradnya

    Hi Pradnya
    Hi you can use after click event on the # column ( or any other column as per your requirement )
    <B1Listener(BoEventTypes.et_CLICK, False)> _
            Public Overridable Sub OnAfterClick(ByVal pVal As ItemEvent)
                Dim ActionSuccess As Boolean = pVal.ActionSuccess
                Dim form As Form = B1Connections.theAppl.Forms.Item(pVal.FormUID)
                Dim item As Item = form.Items.Item("mtx1")
                Dim matrix As Matrix = CType(item.Specific, Matrix)
                'ADD YOUR ACTION CODE HERE ...
                If pVal.ItemUID = "mtx1" Then
                       If pVal.ColUID = "V_-1" Then  '# clumn id
                                    ' Write code for populating the matrix  
                    End If
                End If
            End Sub
    Hope this will help You
    Regards
    Arun

  • Sorting in User Matrix

    Hey All,
    If the user clicks on a column header in a user matrix is there a quick way of sorting that data accordingly? I understand that the developer has to do this manually.
    Does anyone have a code example of how to do this?
    I cannot find any in the forums, samples or help files.
    I use this code to populate my matrix:
    oDBDataSource.Query(oConditions);
    this.OMatrix.LoadFromDataSource();
    Thanks.

    Hi Laura,
    You have another message talking about how to sort a matrix:
    Re: Sort data in matrix using DBDataSources
    The only think you have to do is put this code inside the ItemEvent DoubleClick on the first column of your matrix. Then you have to sort your datas depending on the column clicked.
    Regards
    Trinidad.

  • Best Practice for Significant Amounts of Data

    This is basically a best-practice/concept question and it spans both Xcelsius & Excel functions:
    I am working on a dashboard for the US Military to report on some basic financial transactions that happen on bases around the globe.  These transactions fall into four categories, so my aggregation is as follows:
    Year,Month,Country,Base,Category (data is Transaction Count and Total Amount)
    This is a rather high level of aggregation, and it takes about 20 million transactions and aggregates them into about 6000 rows of data for a two year period.
    I would like to allow the users to select a Category and a country and see a chart which summarizes transactions for that country ( X-axis for Month, Y-axis Transaction Count or Amount ).  I would like each series on this chart to represent a Base.
    My problem is that 6000 rows still appears to be too many rows for an Xcelsius dashboard to handle.  I have followed the Concatenated Key approach and used SUMIF to populate a matrix with the data for use in the Chart.  This matrix would have Bases for row headings (only those within the selected country) and the Column Headings would be Month.  The data would be COUNT. (I also need the same matrix with Dollar Amounts as the data). 
    In Excel this matrix works fine and seems to be very fast.  The problem is with Xcelsius.  I have imported the Spreadsheet, but have NOT even created the chart yet and Xcelsius is CHOKING (and crashing).  I changed Max Rows to 7000 to accommodate the data.  I placed a simple combo box and a grid on the Canvas u2013 BUT NO CHART yet u2013 and the dashboard takes forever to generate and is REALLY slow to react to a simple change in the Combo Box.
    So, I guess this brings up a few questions:
    1)     Am I doing something wrong and did I miss something that would prevent this problem?
    2)     If this is standard Xcelsius behavior, what are the Best Practices to solve the problem?
    a.     Do I have to create 50 different Data Ranges in order to improve performance (i.e. Each Country-Category would have a separate range)?
    b.     Would it even work if it had that many data ranges in it?
    c.     Do you aggregate it as a crosstab (Months as Column headings) and insert that crosstabbed data into Excel.
    d.     Other ideas  that Iu2019m missing?
    FYI:  These dashboards will be exported to PDF and distributed.  They will not be connected to a server or data source.
    Any thoughts or guidance would be appreciated.
    Thanks,
    David

    Hi David,
    I would leave your query
    "Am I doing something wrong and did I miss something that would prevent this problem?"
    to the experts/ gurus out here on this forum.
    From my end, you can follow
    TOP 10 EXCEL TIPS FOR SUCCESS
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/204c3259-edb2-2b10-4a84-a754c9e1aea8
    Please follow the Xcelsius Best Practices at
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/a084a11c-6564-2b10-79ac-cc1eb3f017ac
    In order to reduce the size of xlf and swf files follow
    http://myxcelsius.com/2009/03/18/reduce-the-size-of-your-xlf-and-swf-files/
    Hope this helps to certain extent.
    Regards
    Nikhil

  • How do I create a printer friendly page in a popup window for a JSF page

    I have a JSF page that displays a table that shows the inventory level of a particular garment style. The table is like a matrix with each row representing a color of the style and each column representing a size of the garment. So the data in the table cell is for the inventory level of a particular color/size combination (e.g. navy blue of medium size ) for the particular style. The page also allows you to dynamically select a warehouse from a dropdown to see the inventory matrix of that warehouse.
    Now everything has been working fine except that the matrix table is not printer-friendly. So we need to have a Print button or link on the page that will generate a popup window that displays the same matrix table in a printer-friendly format (with different style sheet etc.). What is the best way to populate the matrix table in the popup? The data in the matrx table is stored in a hashmap in a InventoryManageBean of session scope.
    Also, shoud I use window.open to get the new window and if so what do I pass in the URL parameter?
    Any advice is appreciated. It would be great if you can include a code sample as I would think someone else must have had this done before.

    Any one please? This is urgent. Thanks a ton!

  • Control sort order of UDO Child

    Hey All,
    Can anyone tell me how I can control the display order of a document UDO lines matrix? We have document lines created that have a date in the data and the client would like the data to display with the newest entries on top.
    Anyone know how I can do this?

    I can see one possibility, but I have never tried it on a UDO screen.  Basically I am thinking you might be able to use a variation on a technique I described previously for adding sorting into a DBDatasource based screen
    Re: Sort data in matrix using DBDataSources
    Theoretically this might work for your UDO although you would also need to handle the fact that the UDO itself will be attempting to auto-populate the matrix whereas in my previous posting the matrix population was always under user control. (Either matrix.clear or set bubbleevent = false might handle this additional complexity)
    I think you could probably end up with something like the following
    - Intercept MATRIX_LOAD event
    - ??matrix.Clear??
    - **Populate Array from dbdatasource & Quicksort it**
    - for counter = 0 to (DBDataSource.Size - 1)
    -    Set offset on DBDataSource to **offset from Array**
    -    Matrix.Addrow
    - next
    - ??BubbleEvent = false??
    I have never tried it so it might not work out when it comes to updating, but on the plus side it should be pretty quick to add into an existing screen to test.
    One final thought - For a <b>really</b> quick test to see if it is likely to work before going to the trouble of introducing the array & proper sorting routine, simply loop through the dbdatasource from last record down to first record and see if everything still works with the rows displayed in reverse order.
    eg.
    - Intercept MATRIX_LOAD event
    - ??matrix.Clear??
    - for (DBDataSource.Size - 1) to Counter Step -1
    -    Set offset on DBDataSource to counter
    -    Matrix.Addrow
    - next
    - ??BubbleEvent = false??
    Hope it works out,
    John.

  • How to get the Business One UDF description from the UDF name

    Hi
    I have a matrix that gets populated by a datatable, which has a query set dependent on a folder that is selected and therefore it is possible to populate the matrix with different data. The problem I am having is that currently the column headings for the matrix are being bought through as "U_" and then the field name. Would it be possible for me to get the description for the UDF such as Card Code so that this can be displayed instead. I could alternatively change the SQL statements used by the datatable so I name each individual UDF but it would be better if I could simply look in a table for example and pull in the description for that UDF.
    Thanks a lot.
    Steve

    Hi Steven,
    User field definition (including the descriptions) are stored in the CUFD table.
    Regards,
    Vítor Vieira

  • Fastest Way To Add Data Through DI

    For Examples there're 5 or more rows in Matrix when i press add button it takes too long time about 10 seconds more. i dont know whether there's faster way. i did matrix row looping from row 1 to Matrix.rowcount to do oDocument_Lines.add .After all data add i do oDocument.add.
    I know that many developers complaint about the DI Performance, but is there any way to enhance DI performance ? Thanks

    Hi Hamdi,
    There is a work around, If you bind the Matrix to a user defined table (It can be a blank table), and then use the oMatrix.LoadFromDatasource and oMatrix.FlushtoDatasource, you can manipulate/collect/call the data using the dbdatasource object.
    This is quite fast, and I have had no problem with it, and also using a Documents object to do a goods receipt.
    To recap, bound dbdatasource (blank if needed) to a usertable, use flushtodatasource and LoadFromDatasource and use dbdatasource.offset method
    I attach some sample Code.
    Populate your Matrix
    oMatrix.FlushToDataSource()
    For i = 0 To Scanindb.Size - 1
                            If Trim(Scanindb.GetValue(4, i)) = "No" Then
                                ' Right we need to add the item
                                OITMOBject.ItemCode = Trim(Scanindb.GetValue(0, i))
                                OITMOBject.Manufacturer = "-1"
                                OITMOBject.ItemsGroupCode = "101"
                                OITMOBject.UserFields.Fields.Item(4).Value = Scanindb.GetValue(3, i)
                                OITMOBject.UserFields.Fields.Item(5).Value = Scanindb.GetValue(2, i)
                                ret = OITMOBject.Add
                                SBO_Application.MessageBox(ret)
                            End If
                        Next i

Maybe you are looking for

  • Can I use a Macbook Pro extender (125V, 2.5A) to extend my 60W MagSafe adapter?

    I am in India and I have a 60W MagSafe Adapter which I run without any problems as adapter supports 100-240V (India runs on 230V - https://www.google.com/webhp?#q=india+voltage) I have a Volex extender that I'd love to use but I am not sure if I can

  • TS3276 when i try to send a message i get :try later

    when i try to send a message  using mail i get TRY LATER (i used yahoo and i have 2 accounts) something goes wrong when i set up smtp

  • Caveman Method for the Zen Micro:

    What is the best way to go about banging my Zen Micro with the least of external damage, but maximum work-a-bility? I've tried my marble countertop and a ladder. I bang my Zen Micro on the side...

  • How to send multiple idocs from WE19?

    How to send 100 IDocs at  a time using We19? in other words, can we generate 100 IDocs from a single Idoc using We19 Thanks, Ven

  • Lost disk?

    I've lost my photoshop elements 7 disk and need to reinstall the software.  Is it possible to download if I have the serial number?