2016-12-16 2 views
0

Я создал C# dll, используя веб-службу wsdl.exe. Исходя из этого, я создал приложение C# и VB.Net, и они оба извлекают данные, которые я ожидаю, и даю результат.Неверное количество аргументов в VBA (MS Access) с запросом SOAP, созданным через wsl.exe

Ошибка кода VBA, вызывающего ту же внешнюю dll. Dll возвращает объект, у которого есть свойство DataArea, которое представляет собой массив объектов.

Dim response As CustomerPrice.SimulatePriceResponseType 
Set response = New CustomerPrice.SimulatePriceResponseType 
Set response = CustPriceService.SimulatePrice(st) 
Dim bob As String 
bob = response.DataArea(0).bookPrice_Value 

В C# и VB.Net последняя строка дает требуемое значение. В VBA последняя строка указывает на «неверное число аргументов или присвоение недействительного имущества» В «Immediate отладки режима»

  • печати ответ дает SimulatePriceResponseType, как ожидалось.
  • печати response.DataArea дает тип несовпадения (ошибка 13)
  • печати response.DataArea (0) дает неверное число аргументов (ошибка 450)

Любые идеи, что происходит и что я могу сделать, чтобы почини это?

+0

Вы не показываете ни в snip, где вы устанавливаете/создаете ответ «var». –

ответ

0

Кажется, что это как-то связано с массивом или с тем, как VBA интерпретирует его, хотя я точно не знаю, что именно.

Я нашел исходный код dll и добавил свойство, которое возвращает только первый элемент массива как объект PriceData, а не массив PriceData [].

Работы как должно быть

Смежные вопросы