请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

xingtian

注册会员

2

主题

6

帖子

40

积分

注册会员

积分
40
最新发帖
xingtian
注册会员   /  发表于:2019-8-16 13:39  /   查看:2609  /  回复:7
请教一下 ActiveReport 12 很随机的报 Bad code path ,可能是由什么原因引起的?


Exception details:
System.InvalidOperationException: Bad code path
   在 GrapeCity.Enterprise.Data.DataEngine.Extensions.EnumerableExtensions.MemoizedBuffer`1.GetNext(Boolean& hasValue)
   在 GrapeCity.Enterprise.Data.DataEngine.Extensions.EnumerableExtensions.MemoizedBuffer`1.<GetEnumerator_>d__9.MoveNext()
   在 System.Linq.Enumerable.<SelectManyIterator>d__23`3.MoveNext()
   在 GrapeCity.ActiveReports.Extensibility.Rendering.Components.ItemCollectionExtensions.LazyItemCollection`1.CacheItem()
   在 GrapeCity.ActiveReports.Extensibility.Rendering.Components.ItemCollectionExtensions.LazyItemCollection`1.<GetEnumerator>d__1.MoveNext()
   在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   在 System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   在 GrapeCity.ActiveReports.Layout.TocBuilder.CreateToc(IMetadataDictionary metadata, DocumentMapNode node, ILayoutArea area)
   在 GrapeCity.ActiveReports.Layout.TocBuilder.Build(IReport report, IMetadataDictionary metadata)
   在 GrapeCity.ActiveReports.Layout.PageGenerator.CreatePage(LayoutScope context, Point`1 loc, PaginateResult pageFragment, Boolean isLastPage, Boolean isUpdatePageNumber, Int32 limit)
   在 GrapeCity.ActiveReports.Layout.LayoutEngine.<>c__DisplayClassf.<BuildPages>b__a(PaginateResult page, Boolean _, Boolean isLast)
   在 GrapeCity.Enterprise.Data.DataEngine.Extensions.EnumerableExtensions.<Select>d__3`2.MoveNext()
   在 System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   在 GrapeCity.ActiveReports.Layout.LayoutTree.SetPages(ITargetDevice targetDevice, IEnumerable`1 pages, LayoutNotificationCallback callback)
   在 GrapeCity.ActiveReports.Layout.LayoutEngine.BuildLayout(LayoutInfo layoutInfo)
   在 #GPr.#RLf.#NNf(IReport report, TargetDeviceCapabilities targetDevice, LayoutNotificationCallback callback)
   在 GrapeCity.ActiveReports.Export.Image.Page.ImageRenderingExtension.Render(IReport report, StreamProvider streams, NameValueCollection settings)
   在 GrapeCity.ActiveReports.Document.PageDocument.Render(IRenderingExtension renderingExtension, StreamProvider streams, NameValueCollection settings, Boolean forceDataRefresh, Boolean forceParameterDataRefresh, CancellationToken token)
   在 GrapeCity.ActiveReports.Viewer.Win.Rdlx.RdlReport.<>c__DisplayClass13.#czz()
   在 System.Threading.Tasks.Task.InnerInvoke()
   在 System.Threading.Tasks.Task.Execute()

7 个回复

倒序浏览
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2019-8-16 13:42:51
沙发
很随机的包,你使用的是矩表中的那个控件,是在报表设计器中报这个问题,还是在项目运行的时候出现这个问题,在设计器中可以正常运行。
回复 使用道具 举报
xingtian
注册会员   /  发表于:2019-8-16 13:50:26
板凳
KearneyKang 发表于 2019-8-16 13:42
很随机的包,你使用的是矩表中的那个控件,是在报表设计器中报这个问题,还是在项目运行的时候出现这个问题 ...

矩表 Tablix ,是在项目运行过程中,展示时偶然会出现,刷新一下又可以正常显示了,但很随机的不知道什么时候又出现了,更奇怪的是同样的错误还遇到过一闪而过的时候,若不是录屏都看不到这个错误,报表的模板是存放在  我的文档  的目录下的(每次展示时自动将模板拷贝到该目录,在更新数据源后在展示)
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2019-8-16 17:59:02
地板
你报表中使用了矩表出现 这个问题的话,那么你使用最新版本的V13看看。V13在矩表方面进行了加强,V13的下载链接:https://downloads.grapecity.com. ... 1/ActiveReports.zip
回复 使用道具 举报
xingtian
注册会员   /  发表于:2023-5-26 16:28:28
5#
坑啊,ar16.4又随机报这个错了,从反编译的源码来看应该是内部逻辑有问题,报错位置应该是 Gcef.Data.DataEngine.dll\DataProcessing\TablixImpl.cs :
public static TablixImpl.IdFn<T> MakeIdFn<T>(Func<IEnumerable<T>> getLeafMembers) where T : class
                {
                        IEnumerator<T> iterator = null;
                        Dictionary<T, int> map = new Dictionary<T, int>(TablixImpl.ObjectRefComparer<T>.Instance);
                        int index = 0;
                        return delegate(T member)
                        {
                                if (iterator == null)
                                {
                                        iterator = getLeafMembers().GetEnumerator();
                                }
                                int result;
                                Dictionary<T, int> map;
                                if (map.TryGetValue(member, out result))
                                {
                                        return result;
                                }
                                while (iterator.MoveNext())
                                {
                                        T t = iterator.Current;
                                        int index;
                                        if (t == member)
                                        {
                                                index = index;
                                                index++;
                                                return index;
                                        }
                                        map = map;
                                        T key = t;
                                        index = index;
                                        index++;
                                        map[key] = index;
                                }
                                throw new InvalidOperationException("Bad code path");
                        };
                }
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-5-29 10:22:34
6#
xingtian 发表于 2023-5-26 16:28
坑啊,ar16.4又随机报这个错了,从反编译的源码来看应该是内部逻辑有问题,报错位置应该是 Gcef.Data.Da ...

目前看是代码抛出的错误,为了更高定位问题,方便咱们具体描述一下使用场景,一般报错做了什么操作,具体是预览还是导出还是设计器操作?
其次可以的话,可以给我们上传一个您这边经常报错的报表Demo。
回复 使用道具 举报
xingtian
注册会员   /  发表于:2023-5-30 14:15:15
7#
sqlite和报表见附件,随机的报错

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2023-5-30 17:14:17
8#
xingtian 发表于 2023-5-30 14:15
sqlite和报表见附件,随机的报错

我这边试了好几次,应该都是没有问题的:

要不您试一下我这个Demo,看会不会出现,如果没有,应该还是集成项目影响的,可以进一步对比:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部