VBSで取得の内容が条件分岐で意図していないElse側に流れる

日付チェックをするVBScriptで[DateErrFLG](True/False)取得し、その内容を次の条件分岐で活用したく、Condition文に「DateErrFLG = “True”」と入力しました。
条件分岐前の確認では[DateErrFLG]が"True"だったにも関わらず、条件分岐ではElse側に流れてしまいます。
事前準備として変数に[DateErrFLG]をstring型として準備済です。

対応方法を教えていただけませんか?

VBScriptってどうやって呼んでますか?
スクリプトの呼び出しから返り値をとるのってすごい面倒に思えます(「コードを呼び出し」アクティビティでVB.NETを読んでるような気がしますが、質問文からは不明です。)
「[DateErrFLG]が"True"」になっていることはどうやって確認しましたか?
True/FalseなのにBoolean型を使用しないのには理由があるのですか?

大文字小文字のミスとかそもそもつづりが微妙に違ってるとか空白が入っているなどが一番の原因とは思うのですが……

コードが分からないので対応方法も分かりません……

ご連絡ありがとうございます。
元々はSQLServerの所定テーブルの日付を参照し、当日日付となっているかを判断したかったのですが、この部分であればRPAではなくVBScriptでTrue/Falseの結果だけわかればよいと思い、VBScriptとなりました。

下記のVBScriptを「VBScriptを呼び出し」で実行し、出力結果を[DateErrFLG]に出力しています。
直後に確認用として「メッセージボックス」を追加し、[DateErrFLG]を表示しています。
UiPath側の変数宣言でBoolean型ではなく、String型にしている理由は「VBScriptを呼び出し」で出力される[DateErrFLG]が<’Boolean’から’String’への暗黙の型変換はできません>というエラーが出るためです。

■VBScript

Dim strSQL, DateErrFLG
Dim CN, RS
Set CN = CreateObject(“ADODB.Connection”)
Set RS = CreateObject(“ADODB.Recordset”)

コネクション部分
CN.Open

SQL部分
RS.Open strSQL, CN
If Cstr(Date) = FormatDateTime(RS.Fields(“CREATE_DATE”).Value, 2) Then
DateErrFLG = “True”
Else
DateErrFLG = “False”
End If
RS.Close
CN.Close

Set CN = Nothing
Set RS = Nothing

WScript.echo DateErrFLG

1 Like

ありがとうございます。

これ、理由はちょっとわかりにくいかもですね…^^;
単に Wscript.Echo “True” だけを動かすスクリプトを実行してみると…
"True\r\n"と改行が入ってしまいます。ですので、最後の改行を消すとかszResult.Contains(“True”)とかで比較してください。


「メッセージの詳細」は出力パネルでの表示[True]をダブルクリックすると見れます

1 Like

ご教示いただいた方法を参考にしたところ解決することができました。
ありがとうございました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.