Vbscript 通过引用将scripting.dictionary[]传递给函数
我正在使用小型VBScript并尝试创建Vbscript 通过引用将scripting.dictionary[]传递给函数,vbscript,Vbscript,我正在使用小型VBScript并尝试创建脚本。字典[]。我必须通过引用将字典数组传递给一个函数。我是通过编译库得到这个函数的。函数定义如下 public string Update(string name, ref Scripting.Dictionary[] Data, string sRecordId = "") 我的代码行在这里 Set objQWS=CreateObject(“Dll”) Set X=密码字典 objQWS.Update“Name”,x“ MsgBox“已发送其他信息”
脚本。字典[]
。我必须通过引用将字典数组传递给一个函数。我是通过编译库得到这个函数的。函数定义如下
public string Update(string name, ref Scripting.Dictionary[] Data, string sRecordId = "")
我的代码行在这里
Set objQWS=CreateObject(“Dll”)
Set X=密码字典
objQWS.Update“Name”,x“
MsgBox“已发送其他信息”
函数PassDictionary()
模糊对象
设置objDic=CreateObject(“Scripting.Dictionary”)
objDic.添加“id”,1
添加“名称”、“a”
对象。添加“extd_价格”、“b”
对象。添加“销售代表”、“c”
objDic.添加“opportunity\u id”、“d”
Set PassDictionary=objDic
端函数
问题在于更新
功能。
每次我运行代码时,在
Update
函数上,它都会给我一个错误“类型不匹配”。有人能告诉我怎样才能让它工作吗?你传递的是一本词典,而不是一组词典。试试像这样的东西
Set x = PassDictionary
arr = Array(x)
objQWS.Update "Name", arr, ""
但是,不确定它是否能工作,因为VBScript实际上不知道类型,所以数组的类型将为Variant()
您可以尝试的另一件事是将参数的类型从
Scripting.Dictionary[]
更改为Scripting.Dictionary
,因为您只传递一个字典。您传递的是一个字典,而不是一个字典数组。试试像这样的东西
Set x = PassDictionary
arr = Array(x)
objQWS.Update "Name", arr, ""
但是,不确定它是否能工作,因为VBScript实际上不知道类型,所以数组的类型将为Variant()
您可以尝试的另一件事是将参数的类型从
Scripting.Dictionary[]
更改为Scripting.Dictionary
,因为您只传递一个字典。缺少If
语句的开头。有一个If语句,我在这里粘贴代码时错误地忽略了这一部分。这里有一个If语句。我在粘贴代码时错过了这一点。问题在于更新函数缺少If
语句的开头。有一个If语句,我在将代码粘贴到此处时错误地忽略了该部分。有一个If语句。我在粘贴代码时错过了这一点。问题出在更新函数中。我有一份在c#中工作的代码副本。但是我无法编写vbscriptsomedll.Class crm=new somedll.Class()的正确语法;字典[]ar=新字典[1];crm.Login(“admin”、“admin99”、“Test”);Dictionary dc=新字典();dc.添加(“名称”、“名称”);dc.增加(“价值”、“abc”);ar[0]=dc;字符串sr=crm.CreateOrUpdateRecord(“Opportunities”,ref-ar,”);我知道,但我必须用vbscript转换代码。但我不知道我是如何提出两种可能的方法的。你试过其中任何一种吗?我有一份用c语言编写的代码。但是我无法编写vbscriptsomedll.Class crm=new somedll.Class()的正确语法;字典[]ar=新字典[1];crm.Login(“admin”、“admin99”、“Test”);Dictionary dc=新字典();dc.添加(“名称”、“名称”);dc.增加(“价值”、“abc”);ar[0]=dc;字符串sr=crm.CreateOrUpdateRecord(“Opportunities”,ref-ar,”);我知道,但我必须用vbscript转换代码。但我不知道我是如何提出两种可能的方法的。你有没有试过?