2016-09-26 1 views
0

Je lance la requête suivante dans UFT pour récupérer une valeur de la base de données. Il renvoie le bon numéro pour moi. Le numéro est 21572939 mais le vartype pour le nombre est vbDecimal (14).QTP, Comment convertir une valeur décimale (VarType = 14) en n'importe quel autre VarType comme int, etc.

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") 

D'autre part, j'ai une autre variable qui détient la même valeur, mais cette valeur est récupérer à partir d'une application Oracle et le vartype est vbString (8)

mon travail est de vérifier si le les deux nombres sont égaux et puis l'écrivent à datatable. J'ai beaucoup essayé mais je n'ai pas réussi à convertir une valeur décimale avec un vartype (14) en int et à le comparer avec l'autre chaîne que j'ai déjà convertie en int.

Qu'est-ce que je cherche: 1. Soit une requête qui convertit le nombre en entier dans la base de données avant qu'il ne soit envoyé à la variable afin que je puisse l'utiliser comme int 2. Ou une fonction vbscript/code qui fera la conversion. 3. Ou toute autre solution.

Merci d'avance.

+0

Divisez par 10 et enfoncez-le. –

Répondre

0

Vous pouvez modifier les données requises pour le type de données souhaité en utilisant CAST dans SQL.

CAST (expression AS data_type [ (length) ]) 

Lorsque vous obtenez la colonne CAST comme (data_type vous voulez) puis comparer. Assurez-vous que les deux sont identiques DATA_TYPE et même LENGTH.

1

Si la longueur de la colonne SQL CONTNO est 8, vous devez créer une variable avec VBString (8) comme type de données pour stocker le résultat de la requête SQL. Et modifiez la requête existante comme ci-dessous.

 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")