Hello,
I need help for intelligent report with openlab 2.5
Thank you for your help
SYB
Find maintenance, best practice, and troubleshooting articles.
Hello,
I need help for intelligent report with openlab 2.5
Thank you for your help
SYB
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.
Marty
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
Next
Return Value
End Function
Public Function ClearArray() As String
Redim MyArray(0,0)
Return "Sucessfull"
End Function