数据库已经设置了ID自增,填报报表报错无法插入

数据库设置了自增ID,填报表有新增、删除、更新需求,填报属性就必须把能区分唯一值的ID设为主键,设计报表的时候ID的位置也没有添加控件,填报的时候就是报错无法为自增id插入值,我没有给这个字段添加文本控件啊!请问怎么解决image.png

FineReport 帆软用户Ux3qg7Z6dQ 发布于 2023-2-25 16:35
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
1
CD20160914Lv8专家互助
发布于2023-2-25 16:54(编辑于 2023-2-25 17:58)

数据库如果设置了自增id,那么不要把id做为填报的属性设置进去,你用uuid就行了。这样数据库会存一列真正的自增id,也会存一列uuid的值!!uuid可以保证数据唯一性,自增id的话也可以,只是这个自增id也可以当序号用,因为数据库的自增id是不需要填写的,它是数据库自动生成的,你填报根本就不能用这个字段,也不要添加填报属性,用uuid 做为主键去入库!

使用UUID自动生成主键- FineReport帮助文档 - 全面的报表使用教程和学习资料 (fanruan.com)

image.png

  • 帆软用户Ux3qg7Z6dQ 帆软用户Ux3qg7Z6dQ(提问者) 我把UUID设为主键了,但是每提交一次,它就把之前的也重复提交生产新的UUID,相当于每次提交都新增重复的数据,这个怎么办呀
    2023-02-25 17:34 
  • CD20160914 CD20160914 回复 帆软用户Ux3qg7Z6dQ(提问者) 你看我上面的链接。人家有写公式进行判断的。uuid要放在单元格里面的。看上面的截图。。那个公式不能少!!!
    2023-02-25 17:57 
  • 帆软用户Ux3qg7Z6dQ 帆软用户Ux3qg7Z6dQ(提问者) 回复 CD20160914 我就是放在这个位置,主键也勾的一模一样,也没有放ID,还是重复提交,我已经找到原因了,因为库里原本有UUID值为空的数据
    2023-02-27 10:11 
  • CD20160914 CD20160914 回复 帆软用户Ux3qg7Z6dQ(提问者) 好的
    2023-02-27 10:20 
最佳回答
0
用户k6280494Lv6资深互助
发布于2023-2-25 16:43(编辑于 2023-2-25 16:44)

把id放到单元格,在填报属性中,用公式

例如 id在H4

id   if(isnull(H4), "", H4)

意思是有id就用原来的id,表示更新

没id就表示新增

  • 帆软用户Ux3qg7Z6dQ 帆软用户Ux3qg7Z6dQ(提问者) 我照你说的设置后报无法更新标识列ID,不行诶,我还有个问题,那它要是新增的话会不会和数据库里的ID值重复呀
    2023-02-25 16:55 
  • 用户k6280494 用户k6280494 回复 帆软用户Ux3qg7Z6dQ(提问者) 自增不会出现重复,你试试楼下的方法吧
    2023-02-25 16:56 
最佳回答
0
用户6NWif5139660Lv6资深互助
发布于2023-2-25 17:07

你数据库里的ID字段是自增ID,他是自增的,所以你不能直接往里面插入数据,建议你把ID这个字段的插入在填报属性里删除掉

  • 帆软用户Ux3qg7Z6dQ 帆软用户Ux3qg7Z6dQ(提问者) 不知道为什么我去掉ID的话,新增和删除成功了,但是修改更新就相当于是新增了一列
    2023-02-25 17:13 
  • 用户6NWif5139660 用户6NWif5139660 回复 帆软用户Ux3qg7Z6dQ(提问者) 因为自增啊 你勾选主键了吗,要不就别设置自增用UUID得了
    2023-02-25 17:46 
  • 4关注人数
  • 1499浏览人数
  • 最后回答于:2023-2-25 17:58
    请选择关闭问题的原因
    确定 取消
    返回顶部