【问题标题】:VBScript - Create a dynamic variable name based on another variable's valueVBScript - 根据另一个变量的值创建一个动态变量名
【发布时间】:2015-07-24 15:21:26
【问题描述】:

我已将“ServiceName”值存储在 Excel 文件中以进行参数化(代码 - 第 4 行)。

Format in Excel: 
    ServiceName     (Header)
    EisOrdAmd
    EntCanAmd

我想根据传递的参数(第 5 行)为“fnExcQuery”函数中的第三个参数使用动态变量名,即,对于第一个循环,变量名应该是“strQuery_EisOrdAmd”,对于第二个循环,它应该是“strQuery_EntCanAmd”

1.  ststrQuery_EisOrdAmd = "Select * from EisOrdAmd"
2.  strQuery_EntCanAmd = "Select * from EntCanAmd"
3.  Do While (Not objRecordSet_TestData.EOF)
4.      strServiceName = Trim(objRecordSet_TestData.fields("ServiceName"))
5.      blnResponse_Request = fnExcQuery(strUser, strPwd, strQuery_<strServiceName>)            
        '1st Loop: strQuery_EisOrdAmd ; 2nd Loop: strQuery_EntCanAmd 
6.      objRecordSet_TestData.MoveNext
7.  Loop

如何为第三个参数创建动态变量名。我无法使用 vbscript 找到解决方案,请您帮忙。

【问题讨论】:

    标签: vbscript


    【解决方案1】:

    与其他语言中的eval() 一样,以这种方式执行动态代码时需要非常小心。话虽如此,您可以使用Execute() 函数来执行一个字符串,就像它是一个VBScript 语句一样。在您的情况下,您需要使用以下语句:

    Execute "blnResponse_Request = fnExcQuery(strUser, strPwd, strQuery_" & strServiceName & ")"      
    

    【讨论】:

      【解决方案2】:

      避免 Eval 或 Execute 但使用字典:

      Option Explicit
      
      Dim dN : Set dN = CreateObject("Scripting.Dictionary")
      dN("AA") = "aa"
      dN("BB") = "bb"
      Dim sN
      For Each sN In Split("AA CC BB")
          If dN.Exists(sN) Then
             WScript.Echo sN, dN(sN)
          Else
             WScript.Echo sN, "???"
          End If
      Next
      

      输出:

      cscript 31566748.vbs
      AA aa
      CC ???
      BB bb
      

      【讨论】:

      • 我无法将您的解决方案与我的查询相匹配。对不起,如果我无知。根据您的说法,您希望我创建字典来存储变量名,而不是创建动态变量名。我编写的查询(strQuery_EisOrdAmd、strEntCanAmd)在我的 .vbs 文件中被硬编码,但在执行期间要使用的查询是根据输入的 excel 文件给出的。所以我有点困惑在这里实现字典逻辑。你能帮忙吗?
      猜你喜欢
      • 2019-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      相关资源
      最近更新 更多