本文介绍了多个关于账表开发和报表扩展的技术话题,包括透视表、直接SQL账表、存储过程应用、报表权限设置、日期格式调整、分页开发、过滤框功能、报表插件使用、合计与累计颜色设置等。同时,还解答了关于账表开发过程中可能遇到的具体问题,如排序无效、数据不显示、字段格式设置、存储过程错误、SQL执行差异、表头字段锁定、数值格式化等,并提供了相应的解决方案或建议。
帖子:
3、简单账表--使用存储过程给简单账表取数
5、简单报表--简单报表扩展
9、直接sql账表--加基础资料数据权限
10、账表开发--设置日期格式
11、账表开发--开发分页账表
16、简单账表--如何开发简单账表
17、直接sql账表--表单插件对直接sql账表汇总字段的干预
19、直接sql账表--直接sql账表中打开直接sql账表
20、直接sql账表--直接sql账表中打开简单账表
问题:
1),简单账表Union all后不显示另一断脚本的值?
另一断脚本的值没有通过排序,或可能排序字段FIdentify被设置为0了,建议使用union all后重新排序。
2), 直接sql账表写的排序无效?
检查是否使用了top 100 percent ,如果是改成 top 99.999999 percent
3, 报表导出带重复的汇总数据,并且很卡以及进度条关闭了过很久才导出?
汇总数据的FIdentityId 和列表数据间隔了很多,没有按顺序来导致。
4, 父列和子列不具有类型匹配的列?
销售出库单的库存组和销售组都是引用业务组(BD_OperatorGroup)作为基础资料,业务组中的视图来源的实际物理表内码是int类型,而业务组设置成了long类型,导致万能报表套打模板解析报类型不匹配错误,需要把业务组的主键改成改成int, 并用下面sql更新数据库update T_META_LOOKUPCLASS set FPKFieldType=1 where FFormId='BD_OperatorGroup'
5. 直接sql账表使用存储过程加多个参数报错?
加单引号,并且存储过程如果传入了空值不会报错就可以
6. 万能报表绑定的字段不显示?
万能报表的数据来源是直接sql账表,直接sql账表使用存储过程,并且参数类型不对。
7. 账表扩展后不显示数据列?
标准插件没有禁用 或者 勾选了选项参数 仅显示汇总行数据 ,于是,报表里只有小计行,所以大部分字段都是全部是空的
8.属性字段不显示?
单据中的属性字段和过滤方案中的key是否相同
8. 直接sql账表测试没问题,前端运行时报丢失关键字错误?
1) oracle账套却选择了sqlserver数据类型导致。
2)关键字没有使用单引号
3)脚本最后面加了注释,导致运行时生成的脚本部分被注释掉
9. 扩展加入字段无效?
https://vip.kingdee.com/article/161564
10. 账表sql运行报错,但在数据库运行不报错?
1)/*dialect*/前面有空格。
2)使用了单引号括起来的中文名称,导致在合计时报错
11、简单账表字段格式右对齐?
var header1 = rHeader.AddChild("FBillNo", new LocaleValue("单据编号"));
header1.TextAlign = ControlAppearance.TEXTALIGN_RIGHT;
12、简单报表表头字段会锁死?
1)参考帖子:https://vip.kingdee.com/article/213224170397222144
13、BuilderReportSqlAdnTempTable 表名为空
1)没继承SysReportBaseService
14、存储过程,参数嗅探问题?
1)存储过程里不是直接运行语句,而是把语句带上变量,生成一个字符串,再让exec()这样的命令做动态语句运行
2) OPTION(RECOMPILE)
15、使用存储过程一致报错?
1)存储过程中使用的关键字顺序应该和关键字列表的顺序保持一致
16、设置数值类型千分位显示?
import clr clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.Core") from Kingdee.BOS.Util import * from Kingdee.BOS import * from Kingdee.BOS.Core.Report.PlugIn.Args import * from System import * def FormatCellValue(args): #if args.Header.ColType == SqlStorageType.SqlDecimal: #使用列类型 if args.Header.Key == "F_PAEZ_AMOUNT": #使用列名key oldValue = ObjectUtils.ToDecimal(args.FormateValue) newValue = oldValue.ToString("N"); args.FormateValue = newValue
17、过滤方案返回的到报表头的字段变了?
1)电脑系统时间格式问题