openlab cds 2.5 intelligent report


I need help for intelligent report with openlab 2.5

Thank you for your help


  • Hello,

    You cannot directly use a table to display the data in that format. You can use a matrix object, but that object type has limitations on presentation options. If you must use a table object, then you would have to store the other compound results as injection indexed variables, to display them in the same table as columns. See the table objects, compare two compounds, for an example of that process.  


  • Solution: Create a hidden table for each component. Store the values, like AreaCompund1, ConcComp1, or something like this and add Injection_ID for unique key value. Then create a new table, for all the compounds, for value use ConcComp1(Injection_ID) ; ConcComp2(Injection_ID).....  :)

  • Can you give me an example please thank you as Martin.adams

  • Hello,

    If you look at the object, compare two compounds, it uses the same process to display a stored value for another peak. I will also show an example below where I display peak B values in a table with peak A. First, I create a table and filter it for Peak B. In the columns for area and concentration we use save expression result as to store the area and concentration in variables indexed by injection ID. You can then hide the table. In a second table filtered for peak A we will display the 2 variables for Peak B. 

    Table Filter

    Store Concentration per injection for Peak B

    Store Area for Peak B

    Hide Table

    Filter for second table.

    Variables in second table.

    Example Output

  • Hello,

    If you have multiple compounds or values to store the method from the previous reply can require several hidden tables and variables to track. Below I outline the use of embedded code to accomplish the same output using a single hidden table. Please note this is simplified test code and can be improved as a compiled dll in C# or VB.NET. I have created custom dlls for customer projects with similar functions that have more flexibility, but the basic idea can be seen here. Using the custom code, you would have a hidden table filter for named peaks using the FillArray function in a column expression. In the expression you send the injection id plus the compound name as the first value and then the peak results you wish to store. The code as written requires the first four values with the fifth optional. Once you have filled the array you can call back the values in a table filtered for just one peak as before. In the example I use peak A as the filter. In the expression to call back the value you use the peak name and the injection ID plus the column number of the result you want to call back. =Val(Code.UseArray(Injection_ID + "Peak B", 2)) would call back the retention time for peak B when used in a table column. Using variations of that expression in the columns you can display all the stored peak data. 

    Public Dim MyArray(5,1) as Object
    Public Dim rows as Integer = 0
    Public Dim test as Integer = 0

    Public Function FillArray(ByVal CompoundName As String,ByVal RT as Double, ByVal PeakArea As Double, ByVal Conc As Double,Optional ByVal Amount as Double = 0) As String

        rows = Ubound(MyArray,2) + 1
        Redim Preserve MyArray(5,rows)
        MyArray(1,rows) = CompoundName
        MyArray(2,rows) = RT
        MyArray(3,rows) = PeakArea
        MyArray(4,rows) = Conc
        MyArray(5,rows) = Amount
        Return "Complete"
    End Function

    Public Function UseArray(ByVal CompoundName As String, ByVal DataCol as Integer) As Double
        Dim Value as Double = 0
        Dim rowcount as Integer
        rowcount = Ubound(MyArray,2)
            For index As Integer = 1 To rowcount
                 If MyArray(1,index) = CompoundName
                    Value = MyArray(DataCol,index)
                 End If
        Return Value
    End Function

    Public Function ClearArray() As String

        Redim MyArray(0,0)
        Return "Sucessfull"
    End Function

Was this helpful?