三层程序:主/从表更新中出现"Linkfields to detail must be unique"(200分)

  • 主题发起人 主题发起人 maming
  • 开始时间 开始时间
M

maming

Unregistered / Unconfirmed
GUEST, unregistred user!
早些时候做好的三层程序,最近发现一个大问题,请高手指点迷津。
如主表一次增加多条数据,在增加第三条时出现"Linkfields to detail must be unique"
因为以前每次增加一条就updateapply一下,所以问题没有被发现。
而从表一次增加多条数据没有这种错误!
程序中使用了以下功能,
1、clientdataset一次取20条记录;
2、主clientdataset.insert为增加代码;clientdataset.updateapply(-1)为提交代码.

 
你是采用什么方式作的M/S,
作M/s看起来简单,不注意很容易出错。
你的关连字段是什么,什么字段类型
以何种方式录入数据,如何刷新。
 
按照李维的例子做的,用了快一年了,以前一直没有对主表增加多条后再updateapply,这次
无意中增加多条,到增加第三条时出现了上面的那个错误,拿出源程序,找了半天没有搞定。
望大侠们指点。有做过的应该很容易搞定。
 
源程序!
 
我的做法是,主表增加时调用主表操作接口(里面可以增删改,起了个事务控制)在增加
主表后。调用从表操作接口(里面可以增删改,也起了个事务控制,
但是有个是否要事务的标志),这个时候调用当然不能起事务了。
用事务控制显现地提交数据,这样没有出现你的问题。
 
这个还要源程序,不会吧!只是简单的程序,服务器建好了主从关系,客户端用两个
clientdataset调用.
 
to zqs10597249:
那你没有用到主细表结构,只是单独增加主表和单独增加从表啊!
 
你主表增加多条记录时只有一个clientdataset.insert吗?
 
也就是说,clientdataset.insert是增加的语句,
点一下button1就执行一次,填入相关的信息后又点一下,就这样子增加。
 
点一下button1就执行一次,填入相关的信息后又点一下,
在又点一下之前有提交吗?clientdataset.updateapply(-1)为提交代码.
 
当然是先不提交才出现那样的问题。
 
那你每按一次就clientdataset.insert吧?然后clientdataset.post提交到本机
最后才clientdataset.updateapply(-1)。
clientdataset.insert后unique应该会改吧,我没有试过,呵呵
 
找到了主要原因,因为主clientdataset在增加时没有给主键赋值(提交后才有值)导致上面的
错误,从错误提示字面意思:“主表的key不唯一”,于是就可以找到原因了,真是一时搞迷惑。
多谢zqs10597249你的关注了.
 
多人接受答案了。
 
to :maming
对于三层,我也是才做这个项目,很多东西需要请您多指点。
我的qq:49427523,你的呢?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部