Forum Discussion

ilija_panov's avatar
ilija_panov
Contributor
14 years ago

Cannot return string value from ADO object output parameter

Hi Everyone,



I have the following function with an ADO object which invokes a SP and returns an output parameter for use in tests:




function getMenuIndex(MenuDesc, ParentDesc)   

{

    var SProc;

    var idx;

    SProc = ADO.CreateADOStoredProc();

    SProc.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog= " + Project.Variables.config.Value("cwn_db") + ";Data Source= " + Project.Variables.config.Value("cwn_server");

    SProc.ProcedureName = "qp_test_GetMenuIndex";

      // Adding an in parameter:

    SProc.Parameters.AddParameter();

    SProc.Parameters.Items(0).name = "MenuDesc"; 

    SProc.Parameters.Items(0).DataType = ftFixedChar;

    SProc.Parameters.Items(0).Size = 32; 

    SProc.Parameters.Items(0).Value = "Customer Data Registration"; 

      // Adding an in parameter:

    SProc.Parameters.AddParameter(); 

    SProc.Parameters.Items(1).name = "ParentDesc";

    SProc.Parameters.Items(1).DataType = ftFixedChar; 

    SProc.Parameters.Items(1).Size = 32;

    SProc.Parameters.Items(1).Value = "Register Customer Data"; 

      // Adding an out parameter 

    SProc.Parameters.AddParameter();

    SProc.Parameters.Items(2).name = "OutParamName"; 

    SProc.Parameters.Items(2).DataType = ftFixedChar;

    SProc.Parameters.Items(2).Size = 32;

    SProc.Parameters.Items(2).Direction = adParamOutput; 

    SProc.Parameters.Items(2).Value = null; 

      // Running the procedure

    SProc.ExecProc(); 

      // Obtaining the return value 

    Log.Message(SProc.Parameters.Items(2).Value)   //ok

    idx = SProc.Parameters.Items(2).Value;    //not ok

    return idx;

}



The  Log.Message(SProc.Parameters.Items(2).Value) confirms that the correct value SProc.Parameters.Items(2).Value has been returned by the SP:




Type Message Time Priority Has Picture Link

"[2]|[0]|[1]|[0]"               10:58:07 Normal




However the return at the end  of the ADO always returns a partial value "[2]  in the tests instead of the whole string "[2]|[0]|[1]|[0]"   :



 mainForm.StripMainMenu.Click(Database.getMenuIndex('Customer Data Registration', 'Register Customer Data'));



output:




Type Message Time Priority Has Picture Link

The control item '"[2]' not found. 11:41:09 Normal


If I replace the parameter inside  Click() with the string "[2]|[0]|[1]|[0]" from Log.Message in the ADO function everything works fine.



Getting out of options here, so I would really appreciate some help :-)



Thanks a lot,

    Ilija



P.S. Tried to replace ftFixedChar with ftString in the output paramter with no success.



 














No RepliesBe the first to reply