起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1017|回复: 29

【结】附件关联字段唯一问题

[复制链接]
发表于 2009-7-15 21:06:23 | 显示全部楼层 |阅读模式
我在一个功能的详细页表单中建了一个按钮,这个按钮的作用是执行一个append一条记录进业务主表。有入参,入参为业务表单FID。得到入参后,方法会把对应入参的记录的所有字段(除FID外地字段)的值赋给新append的记录。

问题是我使用了一个 fcontractid的字段做文档关联的字段。

当我在已完成(bsfinished,页面已只读)的记录的详细页使用这个按钮,就会报错:“FCONTRACTID”违反唯一约束

但我在编辑中(bsediting,页面可读写)的记录的详细页使用这个按钮,就没有报错。

如果我把文档关联的字段换成为业务主表的FID(这个字段的值没有传到新插入的记录中),也没有报错。

怀疑与文档关联的代码冲突。
所以想请教一下后台是如何关联文档的。

谢谢
回复

使用道具 举报

发表于 2009-7-16 09:39:47 | 显示全部楼层
楼主,我看你描述的意思是你业务数据复制了一条插入到业务数据表,此时你又没有添加附件,所以你这里怀疑跟文档关联有关系那是不对的吧。

你检查一下 你的业务数据表,FCONTRACTID这个字段是否不允许重复(是否做了唯一性约束之类的)或者说你直接在数据表上复制一个数据(除了fid外)看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-16 11:44:44 | 显示全部楼层
业务数据复制了一条插入到业务数据表,复制的内容包括FCONTRACTID(同时也用了这个字段来关联上传的文档)。然后就出问题了。
我试过把关联上传的文档的字段改为fid,就没问题了。所以想问一从在x3中append一条新纪录开始,后台如何运作的。根据那个报错,似乎是做update语句时出问题。我用monitor查错,但捉不到出错的sql。

另外在业务表中,FCONTRACTID没有unique定义。但又自动填充定义(当新建时。FCONTRACTID=fid)。
回复 支持 反对

使用道具 举报

发表于 2009-7-16 11:46:47 | 显示全部楼层
问题是我从你的描述来看,你复制一条数据后,并没有做文档关联操作。
你在studio中试试对这个表做复制插入看看效果。
另外你这个联动填充的触发条件改一下看看呢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-16 12:07:28 | 显示全部楼层
这样试的话目的性不强啊。

其实我是手工插入一条记录,只是有部分字段(包括FCONTRACTID)的数据来源是选定的同表单某条记录。
但append时,对FCONTRACTID一赋值就出错(对其他字段没问题。另外出错只出现在如一楼第四行描述的情况)。
另外试过把FCONTRACTID的自动填充设置去掉,则能正常在append时对FCONTRACTID赋值。但在保存时(点保存按钮,应该是post的动作吧),也报同样的错误。这时程序停在关联文档的upate方法上。但又看不到他是如何upate的。
所以决定文档关联是主要问题。
回复 支持 反对

使用道具 举报

发表于 2009-7-16 15:12:00 | 显示全部楼层
楼主,问题确实如此
你这样做相当于是两个业务数据对应同一个附件了,对吧?
这个在你们业务上是要实现这样的需求吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-16 16:32:58 | 显示全部楼层
恩,有这个要求。
但是根据一楼中第五行的试验。在一个没有只读的页面中执行按钮的代码,则没有报错。所以判断是这两种情况在后台定义了不同的数据策略。
所以要请教一下这两种情况的不同之处啦。
回复 支持 反对

使用道具 举报

发表于 2009-7-16 17:09:19 | 显示全部楼层
应该是只要这个字段添加的内容是重复的就会有问题,这样就会产生多个业务数据对应同一个附件的情况,最好尽量避免这种情况。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-16 17:25:10 | 显示全部楼层
根据一楼中第五行的试验。否定了8楼的结论。
应该是oa模板的代码写了相关的限制,但不清楚是哪个层级的数据策略。

业务需求中,需要重用以前上传的附件。
回复 支持 反对

使用道具 举报

发表于 2009-7-16 17:27:51 | 显示全部楼层
那等一下啊,我们找找是哪里出的问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-12 02:16 , Processed in 0.041044 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表