ASP.NET MVC中RDLC报表双日期筛选出现schema不匹配报错咨询
RDLC日期筛选查询架构不匹配报错解决方案
报错含义
"the new command text returns data with schema different from the schema of the main query. Check your query's command text if this is not desired."
该报错核心为当前执行的查询返回的字段结构,和RDLC报表设计时预先定义的数据集结构不一致。
具体解决步骤
- 清理查询冗余重复字段
你现有查询中同时返回了SiparisKalems.Urunid和别名Expr1的Uruns.Urunid,属于重复字段,很容易触发架构校验不通过,可直接删除冗余字段,修正后的查询如下:
SELECT SiparisKalems.SiparisKalemId, SiparisKalems.Siparisid, SiparisKalems.SiparisKalemTarih, SiparisKalems.SiparisKalemAdet, SiparisKalems.SiparisKalemFiyat, SiparisKalems.SiparisKalemToplam, SiparisKalems.Urunid, Uruns.UrunAdi, Uruns.UrunFiyat, Uruns.UrunGorsel, Uruns.Kategoriid, Uruns.Durum FROM SiparisKalems INNER JOIN Uruns ON SiparisKalems.Urunid = Uruns.Urunid WHERE SiparisKalems.SiparisKalemTarih BETWEEN @Param1 AND @Param2 ORDER BY SiparisKalems.SiparisKalemTarih DESC
这里也可以保留原有的>=+<=写法,和BETWEEN逻辑完全一致。
刷新RDLC数据集架构
打开RDLC报表设计器,找到对应绑定的数据集节点,右键选择「刷新」,系统会自动拉取最新查询的字段结构,同步更新本地存储的数据集定义。校验参数类型匹配
确认你在后台给RDLC传递@Param1和@Param2参数时,传入的是DateTime类型的值,不要传入字符串格式的日期,避免隐式类型转换导致架构校验失败。重建数据集(可选)
如果刷新后依然报错,可以直接删除原有绑定的数据集,按照最新的查询语句重新创建同名数据集,再重新绑定报表中用到的字段即可。
注意事项
不要在查询中使用SELECT *或者动态拼接修改返回字段的数量、顺序、数据类型,必须保证每次查询返回的结构和数据集定义完全一致。
内容的提问来源于stack exchange,提问作者Cumali Bekçi
相关产品推荐
相关产品推荐

