Windows更新KB4284835后,用于删除排序字段的现有代码不再起作用

2020-09-16 23:00发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在VS2015中使用VS版本13...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在VS2015中使用VS版本13.0.23的CR,我们有一个VB应用程序,可以有选择地从Engine.ReportDocument中删除一个或两个排序字段。 直到上周为止,此方法都运行良好,并且我们能够确定是Windows更新KB4284835引起的。 我会复制我们使用的语法,但似乎以一种奇怪的格式粘贴。

为了描述它,我们将一个Fields对象设置为ReportDocument.ReportClientDocument.DataDefinition.ResultFields。 然后,在其上使用FindField方法返回我们要查找的排序字段。 然后使用DataDefController.SortController,我们使用CanSortOn函数来验证它是一个排序字段,最后,我们使用SortController的.Remove方法,向它提供字段对象。

我们收到的错误是:无效的索引。 (来自HRESULT的异常:0x8002000B(DISP_E_BADINDEX))

如果我硬编码而不是.Remove方法中的字段对象,则它可以工作(但这不是一个好的最终解决方案)。 如果我对排序字段进行迭代以找到合适的索引值,将其存储在变量中并将该变量输入.Remove方法,则它将失败,并出现相同的错误。

所以我非常喜欢""?" 用这个观点。

任何帮助将不胜感激-谢谢!

4条回答
代楠1984
2020-09-16 23:47 .采纳回答

嗨,戴夫,

我请研发部门的Soda看看这个变化,他有这样的话:

'删除PCI列以进行排序
 resultFields = xtalReport.ReportClientDocument.DataDefinition.ResultFields
 sortField = resultFields.FindField(" ado.pa_APCI",
 CrFieldDisplayNameTypeEnum.crFieldDisplayNameLong,CeLocale.ceLocaleEnglishUS)
 sortController = xtalReport.ReportClientDocument.DataDefController.SortController
 如果sortController.CanSortOn(sortField)然后
     sortController.Remove(sortField)'<-这行错误
  万一

 的
 高亮sortField是CrystalDecisions.ReportAppServer.DataDefModel.Field,但对于SortController.Remove(object
 排序),输入参数应该是一个排序对象。

 因此,他应该将代码更新为以下内容:
 _sort = sortController.FindSort(sortField)
  如果sortController.CanSortOn(sortField)然后
     sortController.Remove(_sort)'<-这行错误
  万一
 

奇怪的是它曾经起作用,MS KBA打破了它...

谢谢

Don

一周热门 更多>