Forum Discussion
Hi,
At the moment, that's impossible. I've registered your request as a suggestion in our DB.
In the meantime, you can get data from your table via ADO - http://support.smartbear.com/viewarticle/56229/
Is this possible now? I started a similar thread with the same type of question I believe... I would like to pass a variable value to a sql query in a keyword test.
Below is my thread;
- JohnLBevan10 years agoRegular Visitor
We recently had the same requirement, so knocked up the below code:
function StrFormat(template, args()) dim value dim result: result = template dim i: i = 0 for each value In args result = Replace(result , "{" & i & "}", value) i = i + 1 next StrFormat = result end function function CreateConnectionString(dbInstance, dbCatalog, dbUser, dbPass) if dbUser > "" then CreateConnectionString = StrFormat(connectionStringSqlCredentials, Array(dbInstance, dbCatalog, dbUser, dbPass)) else CreateConnectionString = StrFormat(connectionStringWinCredentials, Array(dbInstance, dbCatalog)) end if end function function ExecuteSqlReturnScalar(connectionString, query) Set con = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") con.Open connectionString rs.Open query, con ExecuteSqlReturnScalar = rs.Fields(0).Value Set rs = Nothing Set con = Nothing end function public function RunSql(dbInstance,dbCatalog,user,pass,query,pipeDelimArgs) dim args: args = split(pipeDelimArgs,"|") RunSql = ExecuteSqlReturnScalar(CreateConnectionString(dbInstance,dbCatalog,user,pass), StrFormat(qry, args)) end function
This code is added to TestComplete as a script.
We call the code with the following arguments (line breaks added for improved readibility):
"dbServer\instanceName"
, "myDatabase"
, "sqlUser"
, "sqlPassword"
, "select sum(Amount)
from CustomerInvoiceTable
where CustomerId='{0}'
and TransactionDate='{1}'"
, "CUS123|2015-03-01"i.e. the first 4 arguments specify the DB connection.
The fifth gives the SQL statement to run (with {n} placeholders for any string substitution)
The sixth is a string containing a pipe delimited set of parameters, used in the string substitution.
i.e.
"select sum(Amount)
from CustomerInvoiceTable
where CustomerId='{0}'
and TransactionDate='{1}'"
, "CUS123|2015-03-01"Becomes
"select sum(Amount)
from CustomerInvoiceTable
where CustomerId='CUS123'
and TransactionDate='2015-03-01'"Taking this approach means
- We have 1 script for all (mssql) database queries (where we only want 1 scalar value result).
- We can point it at any database; controlling the database connection details within TestComplete itself (i.e. putting in variables to hold these).
- We can keep a library of boilerplate SQLs also in TestComplete variables; with the SQL being easily readible.
- We can easily add variables in to the SQL; for the sixth parameter we just use TestComplete's code expression to concatenate our variables with pipe separators.
- We then use the Last Command Result to get the script's result back into a variable.
Hope this helps you.