2016-03-10 2 views
1

Я работаю над небольшим VBScript и пытаюсь создать scripting.dictionary[]. Я должен передать этот массив словаря функции в ref. Я получил эту функцию через скомпилированную библиотеку. определение функции ниже.Passing scripting.dictionary [] by ref to Function

public string Update(string name, ref Scripting.Dictionary[] Data, string sRecordId = "") 

Мои строки кода здесь

Set objQWS = CreateObject("Dll") 
Set X = PassDictionary 

objQWS.Update "Name", x, "" 

MsgBox "Additional Info Sent" 

Function PassDictionary() 
    Dim objDic 
    Set objDic = CreateObject("Scripting.Dictionary") 

    objDic.Add "id", 1 
    objDic.Add "name", "a" 
    objDic.Add "extd_price", "b" 
    objDic.Add "sales_rep", "c" 
    objDic.Add "opportunity_id", "d" 
    Set PassDictionary = objDic 
End Function 

Проблемная область является Update функция. Каждый раз, когда я запускаю код, на функции Update он дает мне ошибку «несоответствие типа». может ли кто-нибудь сказать мне, как я могу заставить эту работу работать?

+0

Отсутствует начало оператора 'If'. – Lankymart

+0

Существует инструкция If, я ошибочно опускаю эту часть при вставке моего кода сюда. –

+0

Существует инструкция If. Я пропустил это при вставке кода. Проблема в функции обновления –

ответ

0

Вы передаете один словарь, а не набор словарей. Попробуйте что-то вроде

Set x = PassDictionary 
arr = Array(x) 
objQWS.Update "Name", arr, "" 

Не уверен, что если он будет работать, хотя, так как VBScript не знает типы, поэтому массив будет иметь тип Variant().

Еще одна вещь, которую вы могли бы попробовать - это изменить тип параметра от Scripting.Dictionary[] до Scripting.Dictionary, так как вы передаете только один словарь.

+0

У меня есть копия кода, работающего в C#. Но я не могу написать правильный синтакс vbscript –

+0

somedll.Class crm = new somedll.Class(); Словарь [] ar = новый словарь [1]; crm.Login («admin», «admin99», «Test»); Словарь dc = новый словарь(); dc.Add («имя», «имя»); dc.Add ("value", "abc"); ar [0] = dc; string sr = crm.CreateOrUpdateRecord ("Возможности", ref ar, ""); –

+1

C# не VBScript. –