Delphi 11+Fast Report 2.8 FMX修改数据集字段值后报表报错如何解决
问题原因
报错和字段名大小写无关,核心原因是你调用Edit修改字段值后,没有提交编辑状态,FDQuery此时处于dsEdit编辑状态,FastReport加载数据集遍历数据时无法识别该状态,所以触发报错。
解决方法
按需选择以下任意一种方案即可:
方案1:提交数据集编辑状态
修改完字段值后调用Post方法提交修改,让数据集回到正常浏览状态,修改后代码如下:
begin FDQuery1.Active:=true; FDQuery1.Edit; FDQuery1.FieldByName('cantidad').Value:=21; FDQuery1.Post; // 新增本行提交编辑状态 FrxReport1.ShowReport(); end;
如果需要修改多行数据,遍历每行时都要执行Edit→赋值→Post的完整流程。
如果不想把修改同步到原数据库,可以先把FDQuery的CachedUpdates属性设为True,此时Post只会把修改提交到本地缓存,报表打印完成后调用FDQuery1.CancelUpdates即可回滚本地修改,不影响数据库原始数据。
方案2:报表层面修改展示值(不改动数据集)
如果不想修改原数据集的任何状态,也可以直接在FastReport层面修改展示值:
- 先在FrxReport中新增自定义变量,绑定到原
cantidad字段,打印前直接给变量赋值即可 - 或者在报表对应组件的
BeforePrint事件中直接修改组件的Text属性,不需要调整后端数据集逻辑
内容的提问来源于stack exchange,提问作者Pedro Luque
相关产品推荐
相关产品推荐

