У меня возникла проблема при заполнении представления об использовании ресурсов MS Project из приложения Windows Forms в VB.Net (созданного с помощью Visual Studio Community 2019), и я хотел бы попросить совета у кого-то с большим опытомчем я, так как я не видел, чтобы получить что-нибудь самостоятельно.
Код довольно обширный, поэтому я постараюсь сократить его до конфликтной строки (буду рад показать больше, еслиэтого недостаточно):
projAssig.TimeScaleData(StartDate:=startDate, EndDate:=endDate, Type:=MSProject.PjAssignmentTimescaledData.pjAssignmentTimescaledWork, TimeScaleUnit:=MSProject.PjTimescaleUnit.pjTimescaleHours).Item(1).Value = CStr(workHours)
Эта строка находится в цикле For, где я перебираю все назначения определенного ресурса, чтобы заполнить их данными. «projAssig» - это такое назначение. И «startDate», и «endDate» являются переменными даты, а «workHours» - это переменная типа «Single».
Идея состоит в том, чтобы назначить количество часов «workHours» между «startDate» и «endDate». Эти три переменные происходят из других частей кода, и я могу убедиться, что их значения согласованы.
Проблема, с которой я столкнулся, заключается в том, что строка кода иногда завершается с ошибкой исключения:
System.Runtime.InteropServices.COMException: 'El valor del argumentsmento no es válido.'
Сообщение написано на испанском языке, но в основном оно говорит о том, что один из аргументов имеет недопустимое значение. Не указывает, какой именно.
Обратите внимание на следующие примеры:
startDate = # 9/25/2019 06:00:00 PM #, endDate = # 9/25/201922:00:00 #, workHours = 4 ||Работает без проблем.
startDate = # 9/25/2019 22:00:00 PM #, endDate = # 9/26/2019 06:00:00 AM #, workHours = 8 ||Сбой с вышеуказанным исключением.
startDate = # 9/25/2019 22:00:00 PM #, endDate = # 9/25/2019 11:00:00 PM #, workHours = 1 ||Сбой с вышеупомянутым исключением.
Как я упоминал выше, он говорит, что один из аргументов имеет недопустимое значение, но если я посмотрю на весь оператор в окне проверки, он отображает строковое значение ""(и не исключение или сообщение об ошибке, как я ожидал, учитывая сообщение выше).
Я не знаю, просто ли я забываю, и это проще, чем кажется, но я простоне видя этого. Или, может быть, я не понимаю, как на самом деле использовать метод TimeScaleData. Весь этот вопрос мне кажется странным.
Я буду признателен за любую помощь, которую вы сможете оказать. Спасибо за ваше время и ваше внимание.
С уважением