这是 HPE UFT 中成功运行查询并显示消息框的代码。 我希望它将查询结果或至少 1 列查询结果存储在 HPE UFT 数据表中,以便我稍后可以对这些贷款号码运行循环。
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
objConnection.open "provider=123ABC;Server=T1;User Id=****;
Password=****; Database=i_prod;Trusted_Connection=Yes"
sqlQuery="SELECT Table1 AS LoanNumber, lm.loanrecordid, clm.istexasconversion as TexasConversion FROM Table1 lm WITH (NOLOCK) LEFT JOIN Table2 clm WITH (NOLOCK) ON clm.lenderdatabaseid = lm.lenderdatabaseid AND clm.loanrecordid = lm.loanrecordid Where clm.istexasconversion IS NOT NULL"
objRecordSet.open sqlQuery, objConnection
value = objRecordSet.fields.item(0)
msgbox Value
objRecordSet.Close
objConnection.Close
Set objConnection = Nothing
Set objRecordSet = Nothing
这是 SQL 中使用的查询。
SELECT
lm.loanid AS LoanNumber
,Column1
,column2 as Texas
FROM table1 lm WITH (NOLOCK)
LEFT JOIN table2 clm WITH (NOLOCK)
ON clm.lenderdatabaseid = lm.lenderdatabaseid
AND clm.loanrecordid = lm.loanrecordid
最佳答案
首先,如果您最初在表中定义参数名称会有所帮助,如下所示:
Datatable.AddParameter("LoanNumber", dtGlobal)
Datatable.AddParameter("LoanID", dtGlobal)
Datatable.AddParameter("TexasConversion", dtGlobal)
这将使用您要插入的参数名称设置全局数据表的前三列。
然后,为了方便使用,将 RecordSet
中的数据放入 Array
中:
myArray = objRecordSet.GetRows ' do this before you close the recordset
最后,循环二维数组以用数据填充表:
For myLoop = 0 to UBound(myArray, 2) ' loop over the total rows
DataTable.SetCurrentRow(myLoop + 1) ' +1 as row count starts from 1 not 0
Datatable("LoanNumber") = myArray(0, myLoop)
Datatable("LoanID") = myArray(1, myLoop)
Datatable("TexasConversion") = myArray(2, myLoop)
Next
如果您需要存储数据表的副本(除非您计划仅在运行期间使用此数据,否则您将需要这样做):
Datatable.Export("\\Path\To\File\To\Save.xlsx")
如果您在执行此操作时遇到任何问题,请发表评论,我会尝试进一步解释。
关于sql - 将 SQL 查询中的列插入到 HPE UFT 中的数据列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48000389/