关于主从表的疑问,请各位高手帮忙(100分)(100分)

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

milan

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个主从表,设主表为master: Ttable,从表为detail: Tquery
主表与从表之间用 detail的sql连接select * from Plan_workItem E where E.PhasePlanID=:PhasePlanID
......
我在服务器端是这样添加记录的
cdsmaster.insert
.......
cdsmaster.post
cdsdetail.insert
.......
cdsdetail.post
cdsmaster.applyupdates(0);
运行后,添加正确。
我想对提交的delta进行修改,在BeforeUpdateRecord事件中的代码为
if sourceds.Name='master' then
//处理主表
else
//处理从表
但是我发现经过cdsmaster.applyupdates(0);后,只能对从表进行处理,
请问各位高手,我该如何处理主表的数据?
为什么我cdsmaster.applyupdates(0);后sourceds总是指向从表
 
高手哪儿去了?
 
看样子,你是用了缓存更新是不是?
如果是的话,要是你的在数据库设计时也把master,detail设为主从表的话,请试试:
cdsmaster.insert
.......
cdsmaster.post
cdsmaster.applyupdates(0);
cdsdetail.insert
.......
cdsdetail.post
不成功可不要说我啊.
我用的是SQL 2000看来你用的是BDE,我一直用ADO,以前也用BDE的.
我在SQL 2000里如不先提交主表,从表就不能找到记录,连Post都不行!
好了,祝好运!
 
不行啊,我只能最后在提交主表,我的从表除了datasetfield设置了外,其它什么都没有设置。如果象你那样提交,从表就会报错。只有applyupdate主表,才能通过id=id来相对应的
提交从表。
 
我测试了一下,如果我只是
cdsmaster.insert
.......
cdsmaster.post
cdsmaster.applyupdates(0);
那么在在beforeupdate事件中,sourceds是指向master的。为什么从表post后,就
指向detail了呢?高手快帮帮忙啊?分数不够,再加。
 

错了,应该是
if sourceds=cdsmaster then
//处理主表
else
//处理从表
 
TO shiningplus:
sourceds是服务器端的,怎么会跑到客户端?你自己可以测试一下。
高手快来帮帮我啊!
 
改一下
if sourceds=master then
//处理主表
else
//处理从表
 
把从表作为主表的一个字段,提交时,只要提交主表,则从表自动提交了。
 
按理说sourceds.Name也可以
你自己跟踪一下sourceds.Name,可能是空格或者大小写的问题
 
我测试了一下,如果我只是
cdsmaster.insert
.......
cdsmaster.post
cdsmaster.applyupdates(0);
那么在在beforeupdate事件中,sourceds是指向master的。为什么从表post后,就
指向detail了呢?高手快帮帮忙啊?分数不够,再加。
 
不可能,我特地做了和你一模一样的程序,试了一下
cdsmaster.insert
.......
cdsmaster.post
cdsdetail.insert
.......
cdsdetail.post
cdsmaster.applyupdates(0);
BeforeUpdateRecord事件触发了两次
第一次SourceDS.Name='master',
第二次SourceDS.Name='detail',
一切都很正常
 
如果你留下E-mail,我可以把测试程序给你
 
lik@efidic.com
谢谢!
恭候你的邮件。把客户端和服务器端都发来看看。
如果测试通过,这100分全是你的。
 
已经发了,看看有什么问题把
 
谢谢你的程序:
程序我已经测试过了,不过我怎么只是测试出master,而没有detail啊?
 
你试着把table1改成Table1;我以前也遇到过这样类似的问题。
另,我已经把我的程序发到你的邮箱里了,请查收。
问题解决了,赶快给分啊!
 
把按一下按钮,会看见两个showmessage,一个master,一个detail
 
是大小写的问题。
table1应该改为Table1
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部