Logging Step results to different fields in adatabase

Hi guys, would be great if you can help me out on this one:
Imagine if I have 3 string test steps within a sequence, and I want to log the result of each of these steps in a different field (coulmn), what should I do?
The main difficulty here is how to access the result of the steps individually, i.e, what parameter are they hidden under?
I have been accessing the parameter: "Logging.StepResult.String", but this gives me result from all three steps at once, and I can only store the 3 results as different record in the same column.
Thanks in advance!  

Hi jack@nz,
Are you using custom database steps in your sequence or process model to pull this information into the database or are you going to Configure»Database Options?  If you are doing the first method, could you send a screenshot of your sequence or the sequence file itself?  If you are doing the second option, are you customizing a schema, and if so, which one?
Cheers,
Kelly
Cheers,
Kelly R.
Applications Engineer
National Instruments

Similar Messages

  • Logging step results question

    I'm using the sequential process model which includes database logging. I've modified the database schema and I am using my own insert statement. I'm trying to use the step results logging feature. I have 2 questions\issues I need help on:
    First Issue:
    I've created an insert statement and specified it to apply to a step result. When I look at my database results table, it appears that I get an extra entry in addition to my step results. I've disabled logging on all steps in my mainsequence except for 1 step so I know I should only see 1 database entry, however I see 2 entries. Even if I disable logging on all steps, I still get a single database entry when in fact I should see nothing. This is strange.
    Second Issue:
    In the above sql statement I retrieve my step results for each field this way:
    Logging.MainSequenceResults.TS.SequenceCall.ResultList[0].CurrentFilepath
    Logging.MainSequenceResults.TS.SequenceCall.ResultList[0].VoltageFilepath
    Logging.MainSequenceResults.TS.SequenceCall.ResultList[0].VoltageMode
    Logging.MainSequenceResults.TS.SequenceCall.ResultList[0].VoltageValue
    Logging.MainSequenceResults.TS.SequenceCall.ResultList[0].ResistorValue
    However, this is not flexible because if I change the location of the step, then the index will change. Also, if I need to loop on this step it will have the same problem. Is there a way to get this data in a more generic way?
    Michael Aivaliotis
    VI Shots LLC

    Well, I solved my other issue as well.
    I ended up using:
    Logging.StepResult.VariableName
    This seems to do it!
    Michael Aivaliotis
    VI Shots LLC

  • How is Parameters.Result used in callback? How is it different from Parameters.Step.Result?

    Hello,
    I have searched TestStand reference manuals, help, and the forums, and I haven't yet found exactly how Parameters.Result should be used in callbacks (if at all).
    I'm trying to figure out how to take a step that normally is not recorded in the result list, and force it to be recorded on the infrequent occasions that it fails. I'm thinking I should be using the Result, but I'm not sure how.  If I set Parameters.Step.RecordResult = True then the step does get set to record results, but that seems to be permanent in the sequence file and AFTER the failure goes unreported.
    Thanks in advance for your expert help!
    - Gizmogal
    Solved!
    Go to Solution.

    In stepping through the SequenceFilePostResultListEntry I finally discerned the difference between Parameters.Step.Result and Parameters.Result, which is only visible at run time:
    Parameters.Result has a TS container which refers to the current step, giving information such as StepGroup, StepName, StepType, among others. Its results-related properties are equivalent to the Parameters.Step.Result properties as far as I can tell.
    Parameters.Step.Result has a much more extensive TS container of type TEInf which appears to be test executive information.
    It seems kind of backwards from what I would expect, but there it is.
    I'm partway through shifting my paradigm - recording all results and then discarding those not of interest. I ended up adding a status string "RecordAlways" to force some steps to be recorded every time, and I toss any that are not equal to that or "Passed", "Failed", "Error", or "Terminated". It's working pretty well so far.
    Thanks again for your help!
    - Gizmogal

  • Logging step parameters to database

    I need to port some code from our in-house testexecutive to TestStand. The old testexecutive gives the parameters as Array of doubles to the measurement module witten in C. To port that code, I will create a custom teststep with a additonal container named Parameters as step property for each measurement module. Each parameter will be a number subproperty in that container and will be loaded with the property loader with values for a single teststep.
    That works fine so far.
    Since the parameters may change from time to time, we want to log them also in the result database (Access).
    SoI want to create a additional table named STEP_PARAMETER in the result database schema with the following members :
    CREATE TABLE STEP_PARAMETER
    ID
    COUNTER CONSTRAINT STEP_PARAMETER_CONSTRAINT PRIMARY KEY,
    STEP_RESULT INTEGER NOT NULL,
    PARAMETER_NAME TEXT,
    PARAMETER_VALUE DOUBLE,
    CONSTRAINT STEP_PARAMETER_FK FOREIGN KEY (STEP_RESULT) REFERENCES STEP_RESULT (ID)
    and add a substep to the steptype which loops over all subproperties of the Parameters Container to save name and value of that subproperty.
    However I've found some problems with that design:
    To write a generic substep I have to loop over all subproperties of the container without knowing number and names before. How to realize that in TestStand.
    And how do I realize a database access in detail. Do I have to open the result database myself. Or are there some ready to use database handles for the result database available in TestStand. And how do I get the get the reference key ( The ID of the step result record for that test step) ?

    Hi Markus,
    I know exactly what you are talking about. I found myself in a similar situation. I have several devices associated with a test, the number of devices is different from time to time and I needed to store that in the database. One idea was to write my own step that would write this device list to the database but I couldn't get the id from access.
    I finally figured out a way to do this. Follow this link to read the entry:
    http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=506500000008000000AF560000&UCATEGORY_0=_8_&UCATEGORY_S=0
    There is a difference between what I'm doing and what you will need to do. My array was per UUT, you array is per step is I understand correctly and this my complicate things.
    Hopefull
    y this can help you get started and give you some ideas. If I think on something else, I will let you know. Anyone out there has another idea?
    Marcela.

  • Issue with Duplicate Results and Summary Fields

    My report is based on an Access Database. For the purposes of this current issue, there is the Master Table called u201CCnu201D and then a related u201CTable Au201D which includes multiple records related to the Master and also a related u201CTable B,u201D also with multiple records related to the Master.
    For my report, I want to output results from Table B based on criteria in Table A. This naturally produces duplicate output on the report. As a result, the Summary Fields that I want to include are incorrect.
    I have tried multiple combinations of the Select Distinct function, suppression based on u201Cprevious fieldu201D being equal, summary fields, running totals and if-then statements and still cannot find a solution that works in all of the cases involved.
    Below are descriptions of three different scenarios that are occurring:
    EXAMPLE #1: Entry 1 has 2 records in Table A and 2 Records in Table B so "Select Distinct" including the Table B ID # and then a Summary Field for the Total produces the correct results, while a Running Total is Incorrect.
    EXAMPLE #2: Entry 2 has 2 records in Table A and 1 Record in Table B so a suppression formula of the field based on the "Previous =" Table B ID # and the Running Total produce the correct results, while Summary Field is incorrect.
    EXAMPLE #3: Entry 3 has 6 records in Table A and 6 Records in Table B. Neither Summary or
    Running Totals produce correct results.
    I would greatly appreciate any advice in terms of creative formulas, etc. that would help produce correct results here.
    Iu2019ll be pulling my hair out soon! Thanks so much-

    Hi Berry
    Try to create a command with a subquery. The subquery will be returning the the duplicate records and the main query that uses this subquery will find distinct records out of the resultset returned by the subquery.
    Let me know if this helps.
    Regards
    Nikhil

  • How do I insert multiple values into different fields in a stored procedure

    I am writing a Stored Procedure where I select data from various queries, insert the results into a variable and then I insert the variables into final target table. This works fine when the queries return only one row. However I have some queries that return multiple rows and I am trying to insert them into different fields in the target table. My query is like
    SELECT DESCRIPTION, SUM(AMOUNT)
    INTO v_description, v_amount
    FROM SOURCE_TABLE
    GROUP BY DESCRIPTION;
    This returns values like
    Value A , 100
    Value B, 200
    Value C, 300
    The Target Table has fields for each of the above types e.g.
    VALUE_A, VALUE_B, VALUE_C
    I am inserting the data from a query like
    INSERT INTO TARGET_TABLE (VALUE_A, VALUE_B, VALUE_C)
    VALUES (...)
    How do I split out the values returned by the first query to insert into the Insert Statement? Or do I need to split the data in the statement that inserts into the variables?
    Thanks
    GB

    "Some of the amounts returned are negative so the MAX in the select statement returns 0 instead of the negative value. If I use MIN instead of MAX it returns the correct negative value. However I might not know when the amount is going to be positive or negative. Do you have any suggestions on how I can resolve this?"
    Perhaps something like this could be done in combination with the pivot queries above, although it seems cumbersome.
    SQL> with data as (
      2        select  0 a, 0 b,  0 c from dual   -- So column a has values {0, 1, 4},
      3  union select  1 a, 2 b, -3 c from dual   --    column b has values {0, 2, 5},
      4  union select  4 a, 5 b, -6 c from dual ) --    column c has values {0, -3, -6}.
      5  --
      6  select  ( case when max.a > 0 then max.a else min.a end) abs_max_a
      7  ,       ( case when max.b > 0 then max.b else min.b end) abs_max_b
      8  ,       ( case when max.c > 0 then max.c else min.c end) abs_max_c
      9  from    ( select  ( select max(a) from data ) a
    10            ,       ( select max(b) from data ) b
    11            ,       ( select max(c) from data ) c
    12            from      dual ) max
    13  ,       ( select  ( select min(a) from data ) a
    14            ,       ( select min(b) from data ) b
    15            ,       ( select min(c) from data ) c
    16            from      dual ) min
    17  /
    ABS_MAX_A  ABS_MAX_B  ABS_MAX_C
             4          5         -6
    SQL>

  • Different field groups in the different account groups

    Dear IT Experts,
    I´m working on restructuring authorization in roles concerning the IC and TP customers.
    The goal of this changes is be able to have different field groups in the different account groups (TP and IC), for give you some more detail a good example can be, the same AMS user should be able to change general data and sales views for TP customers  but for IC he should only be allowed to change the sales views, however when the changes are made in the roles they are being ignored because as far as I could check the system does not have as a rule that the field groups are or can be dependent from the account group...
    I can give you a clear example:
    Role A
    F_KNA1_AEN -> VGRUP = 10-16
    F_KNA1_GRP -> ACTVT = 01, 02, 03
    F_KNA1_GRP -> KTOKD = INTR
    Role B
    F_KNA1_AEN -> VGRUP = 16
    F_KNA1_GRP -> ACTVT = 01, 02, 03
    F_KNA1_GRP -> KTOKD = THIR
    Despite it looks fine, the system is not validating the account group with the correspondent field group in each role, so the field groups that the system use is unique, it means it the content of the object F_KNA1_AEN in total independently of used account group!
    So my question is, can we apply any other object that makes the field group being directly depending of the account group, as we can see for example activities for each account group having something similar for field group and account group?
    Can someone please explain me step-by-step how I can do this work even if by another method?
    I´m quite new on this issues and I really need your wisdom to find a solution for this.
    Many thanks
    Katjia

    Hi Manoj
    The debate is each inidividual business unit has defined different account groups for the same vendor in their respective systems.
    The question is : What is the best practice-- Should we keep Vendor account group as main table field and define Vendors with one unique account groups OR we maintain the account group in qualified table each pointing to different business unit.
    In my opinion this is going to be very complex solution. Ideally we need to define all the Harmonization rules before syndicating data to different target systems.
    Is this possibel that the same vendor record which is existing as vendor of different account groups in different systems have same set of attributes. If yes then enabling the remote key for Account group Lookup field is one option and defining a unique Account group 'AG" (which is mapped to say AG1 from remote system1, AG2 from remote system2 and so on..)..
    Managing this via Qualified table will be very complex and not advisabel. As Rajesh also mentioned Account Group in MDM should be considered as Global attribute and all such harmonization rules should be defined in your project. AG1=AG2=AG in above exmaple.
    Hope this clarifies.
    Thanks-Ravi

  • Unresponsive Firefox nessages in my gmail acct., FB acct. and FB warning log ins from a different browser...

    When I am inside my Gmail account checking my email I get the "Firefox is unresponsive" message all the time since about a couple weeks or so. I get the same when inside my FB page. And twice now I got a message from FB that tells me that s/o has logged in from a different browser and asks me to verify that it was me. I have not changed my browser. Please advise.
    Thank you :)

    Hello,
    '''Try Firefox Safe Mode''' to see if the problem goes away. [[Troubleshoot Firefox issues using Safe Mode|Firefox Safe Mode]] is a troubleshooting mode that temporarily turns off hardware acceleration, resets some settings, and disables add-ons (extensions and themes).
    '''If Firefox is open,''' you can restart in Firefox Safe Mode from the Help menu:
    * Click the menu button [[Image:New Fx Menu]], click Help [[Image:Help-29]] and select ''Restart with Add-ons Disabled''.
    '''If Firefox is not running,''' you can start Firefox in Safe Mode as follows:
    * On Windows: Hold the '''Shift''' key when you open the Firefox desktop or Start menu shortcut.
    * On Mac: Hold the '''option''' key while starting Firefox.
    * On Linux: Quit Firefox, go to your Terminal and run ''firefox -safe-mode'' <br>(you may need to specify the Firefox installation path e.g. /usr/lib/firefox)
    When the Firefox Safe Mode window appears, select "Start in Safe Mode".
    ;[[Image:SafeMode-Fx35]]
    '''''If the issue is not present in Firefox Safe Mode''''', your problem is probably caused by an extension, theme, or hardware acceleration. Please follow the steps in the [[Troubleshoot extensions, themes and hardware acceleration issues to solve common Firefox problems]] article to find the cause.
    ''To exit Firefox Safe Mode, just close Firefox and wait a few seconds before opening Firefox for normal use again.''
    When you figure out what's causing your issues, please let us know. It might help others with the same problem.

  • Facing problem in getting data in different field

    hi,
    i have made a report in ALV format. n the whole code is this..
    TABLES: VBAK,vbap.
    type-pools: slis.       "ALV Declarations
    SELECT-OPTIONS:
    s_sales   for    vbak-kunnr    obligatory,
    s_date    for    VBAK-audat    obligatory.
    *Data Declaration
    types: begin of s_sales,
      kunnr like vbak-kunnr,
      ernam like VBRP-ernam,
      audat like VBAK-audat,
      aufnr like VBAK-aufnr,
      KBMENG like vbap-KWMENG,
      matnr like vbap-matnr,
      matwa like vbap-matkl,
      end of s_sales.
    DATA: IT_VBAKUK TYPE STANDARD TABLE OF s_sales INITIAL SIZE 0,
          WA_sales TYPE s_sales.
    *ALV data declarations.
    data: fieldcatalog type slis_t_fieldcat_alv with header line,
          gd_tab_group type slis_t_sp_group_alv,
          gd_layout    type slis_layout_alv,
          gd_repid     like sy-repid.
    *start-of-selection.
    START-OF-SELECTION.
      perform data_retrieval.
      perform build_fieldcatalog.
      perform build_layout.
      perform display_alv_report.
    *&      Form  build_fieldcatalog
          text
    form build_fieldcatalog.
      fieldcatalog-fieldname   = 'KUNNR'.
      fieldcatalog-seltext_m   = 'Customer Code'.
      fieldcatalog-col_pos     = 1.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'ernam'.
      fieldcatalog-seltext_m   = 'Customer Name'.
      fieldcatalog-col_pos     = 2.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'stadat'.
      fieldcatalog-seltext_m   = 'Order Date'.
      fieldcatalog-col_pos     = 3.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'aufnr'.
      fieldcatalog-seltext_m   = 'Order No'.
      fieldcatalog-col_pos     = 4.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'KWMENG'.
      fieldcatalog-seltext_m   = 'Quantity'.
      fieldcatalog-col_pos     = 5.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'matnr'.
      fieldcatalog-seltext_m   = 'Material Code'.
      fieldcatalog-col_pos     = 6.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
      fieldcatalog-fieldname   = 'matkl'.
      fieldcatalog-seltext_m   = 'Material Description'.
      fieldcatalog-col_pos     = 7.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    endform.                    "build_fieldcatalog
    *&      Form  build_layout
          text
    form build_layout.
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
    endform.                    "build_layout
    *&      Form  display_alv_report
          text
    form display_alv_report.
      gd_repid = sy-repid.
      call function 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = gd_repid
          is_layout          = gd_layout
          it_fieldcat        = fieldcatalog[]
          i_save             = 'X'
        TABLES
          t_outtab           = IT_VBAKUK
        EXCEPTIONS
          program_error      = 1
          others             = 2.
      if sy-subrc <> 0.
      endif.
    endform.                    " DISPLAY_ALV_REPORT
    *&      Form  data_retrieval
          text
    form data_retrieval.
      select vbakkunnr VBakernam VBAkaudat vbakaufnr vbapKWMENG vbapmatnr vbap~matkl
      up to 10 rows
        from vbak inner join vbap on vbakvbeln = vbapvbeln
        into table IT_VBAKUK.
    endform.                    "data_retrieval
    When a execute this query it get this result:
    Customer code Customer No. Order Date      *Order No. *        *Quantity *        Material code  Material Description
    0000001390     0000001390     0000001390     0000001390     0000001390     0000001390     0000001390
    0000001175     0000001175     0000001175     0000001175     0000001175     0000001175     0000001175
    0000001175     0000001175     0000001175     0000001175     0000001175     0000001175     0000001175
    0000001175     0000001175     0000001175     0000001175     0000001175     0000001175     0000001175
    0000001175     0000001175     0000001175     0000001175     0000001175     0000001175     0000001175
    0000001001     0000001001     0000001001     0000001001     0000001001     0000001001     0000001001
    0000002200     0000002200     0000002200     0000002200     0000002200     0000002200     0000002200
    0000002200     0000002200     0000002200     0000002200     0000002200     0000002200     0000002200
    0000002200     0000002200     0000002200     0000002200     0000002200     0000002200     0000002200
    0000002200     0000002200     0000002200     0000002200     0000002200     0000002200     0000002200
    You can see in all column data is repeating even tough i have given different field name...
    Kindly give me solution of this problem.
    Thanks n Regards.

    hi,
    i have these field:
    *select VBAK~KUNNR VBAK~ERNAM VBAK~AUDAT VBAK~AUFNR VBAP~KWMENG VBAP~MATNR VBAP~MATKL
      up to 10 rows
        from VBAK inner join VBAP on VBAK~VBELN = VBAP~VBELN
        into table IT_VBAKUK.
    endform.*
    I want to add these field in my parameter by using WHERE clause but don't know how to restrict these field using where clause.
    Kindly give me some example related to this.
    Regards

  • Different EvDre results in different PC

    Hi,
    my question is very simple but it makes me fool.
    I build new report with EvDre, but the results are different when we lunch it in different personal computer.
    For example, in my PC (logged in with my user and password) I return my values. In an other PC, logged in with the same user, EvDre report gives me no results.
    How can I resolve it?
    Thanks in advance.

    PLease include your version when posting; Assuming you are using BPC 7.0, the first test I would run on the PC that is not returning the values under the same ID as the first PC, is a Report Wizard report.  DO those 2 reports match in values? So if you run a trend report on both PC's using the exact same point-of-view from the Action Pane member settings, do you get the same values?
    Then create a simple EVDRE report and test results for both PC's.
    If that doesn't work, the next thing to do is run from BPC for Excel, etools, Client OPtions, Clear Local Application information.  Then exit.  Logging back in, please go through the Connection Wizard.  Retest the wizard and the EVDRE reports. 
    Hope this helps.

  • Sort an object by different fields

    Hello!
    Sorry for the (maybe) bad englisch but I'm a German.
    If I have an object fith different fields for example field1, field2, field3.
    To write a method which sorts an array of this objects by a given field?
    I mean something like this
    sort(String field, object[] o) {
    //sort by field
    instead of this
    sortbyfield1(object o){
    //sort by "field1"
    sortbyfield2(object[] o){
    //sort by "field2"
    hope you understood
    thanks
    Stefan

    When faced with this problem I usually use a Comparator helper class. Depending on whether the Comparator can be re-used I'll create a separate class or if not an inner or anonymous inner class. For example:
    import java.util.Comparator;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Collections;
    public class Main {
      // Compares Fields.f1 ascending
      public Comparator c1 = new Comparator() {
        public int compare(Object o1,
                           Object o2) {
          return ((Main.Fields)o1).f1.compareTo(((Main.Fields)o2).f1);
      public void sortem() {
        // Create our array of objects
        Object[] array = new Object[] {
          new Fields(new Integer(1),3,"3"),
          new Fields(new Integer(2),2,"1"),
          new Fields(new Integer(3),1,"2")
        // Sort on Field.f1 using reusable comparator
        Arrays.sort(array,c1);
        System.out.println(Arrays.asList(array));
        // Sort on Field.f2 using inner class
        Arrays.sort(array,new C2());
        System.out.println(Arrays.asList(array));
        // Sort on f3 using an anonymous inner class
        Arrays.sort(array, new Comparator(){
          public int compare(Object o1,
                           Object o2) {
            return((Main.Fields)o1).f3.compareTo(((Main.Fields)o2).f3);
        System.out.println(Arrays.asList(array));
      public static void main(String[] args) {
        Main m = new Main();
        m.sortem();
      // Class with many fields of different types
      class Fields {
        public Integer f1;
        public int     f2;
        public String  f3;
        public Fields(Integer f1, int f2, String f3) {
          this.f1 = f1;
          this.f2 = f2;
          this.f3 = f3;
        public String toString() {
          return ""+f1+" "+f2+" "+f3;
      // Inner class comparator on Field.f2
      class C2 implements Comparator {
        public int compare(Object o1,
                           Object o2) {
          int result = 0;
          int i1 = ((Main.Fields)o1).f2;
          int i2 = ((Main.Fields)o2).f2;
          if (i1==i1) result = 0;
          if(i1<i2) result = -1;
          else if (i1>i2) result = 1;
          return result;

  • Input in one formfield go to two different fields in a MySQL tablerow?

    Hi, I hope you can help me with this.
    How can I have input in one formfield go to two different fields in a MySQL tablerow without having the visitor to type out his input out twice?
    With the second one I would like to use md5.
    Any help is greatly appreciated.

    How can I have input in one formfield go to two different fields in a
    MySQL tablerow without having the visitor to type out his input out
    twice?
    You would need to write your query with the WHERE clause when you update to say "WHERE user=$userid".  That's the most basic way.  The $userid variable would need to come from either a session or a cookie if the user is logged in and you don't want them to enter the information again.  Or if this is from a previous page, the $userid could just be equal to the $_POST variable after sanitization.
    With the second one I would like to use md5.
    That's even simpler.  Before submitting the form, just do $md5_pass = md5($pass);
    http://us.php.net/manual/en/function.md5.php

  • Getting step results/pa​rameters on PostStepFa​ilure Engine Callback

    I'm trying to do some fault isolatio in my tests. I've enabled the PostStepFailure Engine Callback and I'm passing the step and result handles to a C function as CAObjHandles. My problem is that I can't find any of the step result/parameters like:
    TS.StepName
    TS.StepType
    Comp
    Measurement
    Limits.Low
    Limits.High
    The callback works fine, but I need to access these variables in order to do the fault isolation. Can any one tell me how I can access these six variables?
    I've tried to access these variables both in the sequence file and then passing the values to the C-function as well as in the C-function, but both methods yield errors
    Hurst

    Hi Hurst,
    The main problem here is going to be dealing with all the different step types.  Because Numeric Limit Test will pass different information to the parameters than a Pass/Fail Step.  You won't see any of the information there during development but if you put a breakpoint in your SequenceFilePostStepFailure callback then you will be able to look at the parameters in the Context tab.  You will see that if you fail a Numeric Limit Test you can get access to the limits by using Parameters.Step.Limits.Low/Parameters.Step.Limits.​High.  However, this wouldn't exist if you had a different step type. By looking at the Context tab when you put in a breakpoint you will be able to look for the other variables as well.
    Hope this helps.
    jigg
    CTA, CLA
    teststandhelp.com
    ~Will work for kudos and/or BBQ~

  • Getting Step Results into Labview

    Hi,
    I'm having what seems to be an easy problem but one which I cannot figure out quickly.
    I'm trying to do the following. I am trying to do some custom logging to a specific format for my Teststand results. I'd basically like to pass the Results parameters of each step into Labview Code where I will process there. To make it more user friendly I have created a Callback for SequenceFilePostResultListEntry. What I don't exactly know how to do is get the Results from the current step into LabVIEW
    At first I used the SequenceContext.PreviousStep but that did not give me what I needed. Hopefully I'm clear in what I am asking.
    Thanks for the help,
    Patrick

    Hi Patrick,
    Are you having trouble doing this with a LabVIEW Adapter Action Step?  If you are trying to pass specific run-time values to your LabVIEW VI, you will be able to find them by setting breakpoints and looking at the available variables.  
    For example, in your SequenceFilePostResultListEntry callback, if you wanted to use the test's Status result as an input to your LabVIEW Adapter Action Step, you could use the expression RunState.Caller.Step.Result.Status as the value you pass.
    Please let me know whether this answers your question.
    Warm Regards,
    Daniel D.
    National Instruments
    Automated Test Software R&D

  • Negate Boolean for Step.result.passfail

    Ok, I'm looking for why TestStand is doing what I did not expect.
    The first passes "Fail" to "!Step.result.PassFail" and  uses a data source of "Step.result.PassFail" this step always Regardless of the value of "Fail"
    The second passes "Fail" to "Step.result.PassFail" and uses a data source of "!Step.result.PassFail" and operates as I intended. (Fails if Fail is True).
    A brief search yeilded the "Don't do that... negate in code" answers to the old "how to Negate Boolean for Step.result.passfail?" question. But this does not explain the unexpected behavior and I'd really like to understand whats really happening here.
    Attached is a simple example that demos the behavior  using dialog express vis
    Jeff
    Attachments:
    Funny.seq ‏24 KB

    "!Bool" equals "!bool", as long as you make no case sensitive string compare
    Ok, the trick is understanding expressions.
    Play a little game with me please. Here are the steps to follow:
    1. Open your sequence file Funny.seq. Select step one.
    2. In code module tab, select the parameter Error Out value. Current content is "Step.Result.Error". Open the expression editor.
    3. In the expression, type "ABC" (including quotation marks). Press "Evaluate". You will see that the expression must either
    3. a) point to a container or
    3. b) be a container itself.
    4. Close the dialogs (cancel expression edit dialog) and open on for the parameter Fail (current value "Step.Result.PassFail"). Open the expression editor.
    5. Again, type "ABC" in the expression. Evaluate it again.  You will see that the expression must either
    5. a) point to a boolean or
    5. b) be a boolean itself.
    What do we learn from this steps?
    "Step.Result.PassFail" is the lookup string for a boolean variable. So the evaluation results in a pointer to a boolean.
    "!Step.Result.PassFail" is the negation of a boolean variable. Evaluation will therefore fetch the value of the lookup string (type: boolean) and then negate it. So the result will be a boolean value, but it does not point to the variable "Step.Result.PassFail" anymore! Since the result is boolean, the expression passes evaluation.
    That is the reason why "!Step.Result.PassFail" as parameter will NEVER pass the boolean return value of the VI to the TestStand dataset (aka execution).
    Let's proceed:
    6. Move to step two. Switch to tab "Data Source". Open the expression editor for the data source expression.
    7. Again, type "ABC" in the expression. Evaluate it again.  You will see that the expression must either
    7. a) point to a boolean or
    7. b) be a boolean itself.
    So, catch up: We have the same issue here as step 5! We are not referring to any variable anymore once the expression gets evaluated!
    So why does it work as desired nevertheless?
    I gave the explanation in my previous post:
    Norbert_B wrote:
    The reason why your negation in the data source works is the status expression:
    Step.DataSource !="Step.Result.PassFail"? Step.Result.PassFail = Evaluate(Step.DataSource):False, Step.Result.PassFail ?"Passed":"Failed"
    As you can see, your expression does NOT equal "Step.Result.PassFail". Hence your negated value of this variable is evaluated as stated in the case-select part (Step.Result.PassFail = Evaluate(Step.DataSource)). This evaluation results in your negated value. Next, the Result is set to either "Passed" (evaluated to True) or "Failed (evaluated to False).
    You make a STRING compare in the first part of the status expression. YOUR data source DOES NOT MATCH the expected string.
    So in the TRUE case, you evaluate your new data source and write the result back to Step.Result.PassFail. So essentially, this step (in your case) simply negates the content of Step.Result.PassFail! Next expression will query the boolean value of Step.Result.PassFail and write either "Passed" or "Failed" into the Step.Result.Status....
    hope this is now more clear,
    Norbert
    EDIT: The only weird thing is, that in the first step during execution TS does not create a warning (or error) because you assign a return value of the module to a "True" (boolean value).
    One thing you can also do to increase understanding about the "issue": Simply write "True" or "False" (without quotation marks!) into the expression field "Value" for the boolean return value of the VI.....
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.

Maybe you are looking for