两个恼人的问题,SOS!!!!(DELPHI+SQL7.0)(100分)

  • 主题发起人 主题发起人 songxiao
  • 开始时间 开始时间
S

songxiao

Unregistered / Unconfirmed
GUEST, unregistred user!
1.我在用DBNavigator控件的refresh按钮刷新query的数据表时出现:
Table does not support this operation because it is not uniquely indexed.
而我的表已经在sql7.0下建立聚众索引.

2.我用两个query建立了Master/detail表,RequestLive都设为true,CacheUpdate都为True,
而且都用了Updatesql,但出现Master表能修改和删除,却不能修改和删除在DBGrid中的Detail表中的纪录.
 
问题2补充:更新代码为:
Database1.StartTransaction;
try
Master.ApplyUpdates;
Detail.ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
Master.CommitUpdates;
Detail.CommitUpdates;
如能使我满意,再加100!!!
 
关注!-------我也正要用到这个功能。
 
1.建立一个主键或者唯一索引,而且,在SQL语句中也应该包含此列
2.你是做三层?好象不该那么用吧?
 
1、表要加Primary key
2、如果要用TTable,用keyfields指定那个Primary Key的字段,
如此,才可以用Table.refresh,我为这个问题,弄了一天。最后试明白的。
没有找到理论上的根据,纯粹是实验结论。试试吧!
 
好象是query 中的sql 语句的问题 ,象类似order by 什么的。。。,我好象以前遇到过这个问题,,有点想不起来了。
 
To::低手
您的回答我很感兴趣,能否再详细一点。


各位高手:让我重声一下,主/从关系中我用的是query.
 
在网络数据库中,DBNavigator控件的refresh按钮不管用的,对本地库一帆风顺,
 
对第2个问题,原因是这样的:
如果两表有主从关系,每当主表记录
移动时,从表都会先关闭,再打开。
主表APPLYUPDATE后,当前记录已经
移动,而每次移动主表记录,从表都会先
关闭,再打开,在从表关闭及打开的过程
中,缓冲区的内容已经改变,所以APPLY
UPDATE就不能达到预期效果。
所以将
Master.ApplyUpdates;
Detail.ApplyUpdates;
改成
Detail.ApplyUpdates;
Master.ApplyUpdates;
 
mech的回答是错误的,可以参考dephi的在线帮助上的例子。
有可能detail的updatesql写的有问题
 
master 中建 primary key
detail 建立 foreign key
let foreign key field references primary key
 
to songxiao:
请教一下,如何用query实现主/从关系?
 
第一个问题:
我有时用
try
..
except
end;
让激发的错误什么都不做,就可以了。
 
为什么没有人回答?我快急死了!!!
 
TO ALL :谢谢你们的提醒。这两个问题我已经基本解决。
第一个问题:在Tquery1的beforeRefresh中写:
If (dataset is Tquery) then begin
(dataset as Tquery).close;
(dataset as Tquery).open;
Abort;
end;
第二个问题:我在安装文件的readme中找到了以下注释:
[Enterprise and Professional editions]
Cached Updates cannot be used effectively with
TQuery components when doing master-detail
links (DataSource property). This is because
the detail query is reexecuted each time the
master record pointer moves.
这说明用两个Tquery不能用Cached Updates实现Master/Detail关系
我把detail表改成TTable就不会出现这种问题。
 
正如你讲的,我用Tquery从来都无法refresh,特别是Insert 数据以后,无法显示出来,
只能用Close;Open,(但是这样还要refresh 干嘛??!!)很麻烦,如果谁能解决这个问题就好了!!
 
我也请教songxiao同样的问题,如何用query实现主/从关系?
 
Query可以刷新的,但一定要定义主键.
 
多人接受答案了。
 
后退
顶部