VBScript-基于另一个变量的值创建动态变量名
我已将“ServiceName”值存储在参数化代码行4的excel文件中VBScript-基于另一个变量的值创建动态变量名,vbscript,Vbscript,我已将“ServiceName”值存储在参数化代码行4的excel文件中 Format in Excel: ServiceName (Header) EisOrdAmd EntCanAmd 我想根据第5行传递的参数为'fnexquery'函数中的第三个参数使用动态变量名,即,对于第一个循环,变量名应为'strQuery_EisOrdAmd',对于第二个循环,变量名应为'strQuery_EntCanAmd' 1. ststrQuery_EisOrdAmd =
Format in Excel:
ServiceName (Header)
EisOrdAmd
EntCanAmd
我想根据第5行传递的参数为'fnexquery'函数中的第三个参数使用动态变量名,即,对于第一个循环,变量名应为'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找到解决方案,请您提供帮助。避免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
与其他语言中的eval一样,以这种方式执行动态代码时需要非常小心。话虽如此,您可以使用Execute函数来执行字符串,就像它是VBScript语句一样。在您的情况下,您需要使用以下语句:
Execute "blnResponse_Request = fnExcQuery(strUser, strPwd, strQuery_" & strServiceName & ")"
我无法将您的解决方案与我的查询匹配。对不起,如果我无知的话。根据您的陈述,您希望我创建字典来存储变量名,而不是创建动态变量名。我编写的strQuery\u EisOrdAmd、strentcaname查询在我的.vbs文件中是硬编码的,但是在执行过程中要使用的查询是基于输入的excel文件给出的。因此,在这里实现字典逻辑有点困惑。你能帮忙吗。