VBScript - 根据另一个变量的值创建动态变量名称

时间:2015-07-22 14:54:31

标签: vbscript

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

Format in Excel: 
    ServiceName     (Header)
    EisOrdAmd
    EntCanAmd

我想根据传递的参数(第5行)为'fnExcQuery'函数中的第3个参数使用动态变量名,即,对于第1个循环,变量名应为'strQuery_EisOrdAmd',对于第2个循环,它应该是'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

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

2 个答案:

答案 0 :(得分:1)

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

Execute()

答案 1 :(得分:0)

避免使用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