ilija_panov
14 years agoContributor
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.
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.