QTP,如何将十进制值(VarType = 14)转换为任何其他VarType,如int等

时间:2016-09-26 03:04:03

标签: sql sql-server vbscript qtp hp-uft

我在UFT中运行以下查询以从数据库中检索值。它为我返回正确的数字。该数字为21572939,但该数字的vartype为vbDecimal(14)。

sqlMsgQuery = ("SELECT MAX(CONTNO)FROM SERIES A, CONTRACT B WHERE A.SERIES = B.SERIES AND B.SERIES = "&"'AAA-W'"&_
              "AND A.PARTY_ROLE IS NULL AND B.CONTNO BETWEEN 21573931 AND 21574930")

另一方面,我有另一个保持相同值的变量,但是这个值是从oracle应用程序中检索的,而vartype是vbString(8)

我的工作是验证两个数字是否相等,然后将其写入数据表。我已经尝试了很多,但未能将带有vartype(14)的十进制值转换为int,并将其与我已经转换为int的其他字符串进行比较。

我在找什么: 1.在将数据发送到变量之前将数字转换为int的查询,以便我可以将其用作int 2.或者将执行转换的vbscript函数/代码。 3.或任何其他解决方案。

提前致谢。

2 个答案:

答案 0 :(得分:1)

如果SQL列CONTNO的长度为8,则需要创建一个带有VBString(8)的变量作为数据类型,用于存储SQL查询的结果。 并修改现有的查询,如下所示。

     sqlMsgQuery = ("SELECT CAST(MAX(CONTNO) as VARCHAR (8))
           FROM SERIES A, CONTRACT B 
           WHERE A.SERIES    = B.SERIES AND B.SERIES = "&"'AAA-W'"&_
          "AND A.PARTY_ROLE IS NULL AND B.CONTNO BETWEEN 21573931 AND 21574930")

答案 1 :(得分:0)

您可以使用SQL中的CAST将所需数据更改为所需的数据类型。

CAST ( expression AS data_type [ ( length ) ] )  

当您将列CAST作为(您想要的data_type)时,然后进行比较。确保两者都相同DATA_TYPELENGTH