現在遠程數據模板中放置,一個ADOConnection,並連接數據庫,再放置3個AdoQuery.分別為:Q1、Q2、Q3.其中各表的關系為:Q1是Q2的主表通過ID和PID相關聯。Q2是Q3的主表,通過ITEM_CODE=ITEM_CODE and ID=PID 相連。並放置一個DataSetProvider1並連接Q1。
在客戶端中放置3個TClientDataset 分別為C1、C2、C3,其中C1是通過Provider連接DataSetProvider1。C2和C3通過DataSetField來連接Q2和Q3。
在顯示數據及在新增數據,三個表都新增時再保存不會出錯。
問:1)當調出新增的資料出來,隻修改C2中的資料然後再保存就會出錯:"Record Not Found or Changed by another user"但表卻隻有當前用戶在用。
之後還出現了(Unable to Find Record No Key Specified)
2)若隻刪除C3的資料時也會出現以上錯誤。語句為:
if not C3.isempty then
begin
C3.first ;
while not C3.eof do
begin
C3.delete ;
C3.next ;
end ;
end ;
if C3.changeCount > 0 then
C3.ApplyUpdates(-1)
請問為什麼??
解决方案 »
- 小弟现在在学习Delphi 7,各位大虾有没有什么入门书籍可以推荐啊,谢谢
- 如何用DBGrid显示DBRichEdi存的格式?
- 如何取得Dbgrid光标所在列的列名?
- ExtractStrings函数的用法
- 请问斑主,关于事件与过程的问题
- ~~~~100000(十万分)求救~如何判断有几个用户在使用这个文件
- adotable中新增、修改、删除记录后,在提交之前,如何知道对哪些记录做了改动?
- 用TrackBar怎样控制mediaplayer播放的音量
- 如何在activeform里面,关闭包含它的ie程序?
- 那个快一点?
- 怎么才能用RBuilder实现报表的小计累计功能
- 熟悉dbgrideh 的朋友帮个忙吧!!!!!
begin
C3.first ;
while not C3.eof do
begin
C3.delete ;
C3.next ; //这一句是多余的,Delete执行完后自动下移
end ;
end ;
if C3.changeCount > 0 then
C3.ApplyUpdates(-1);
C3.ApplyUpdates(-1);
1, yzykjh(多米诺骨牌),C3.next ; //这一句是多余的,Delete执行完后自动下移
2, 这种巢式数据中,既然你的C3是通过DataSetField从C1中拿到的数据,那么
ApplyUPdates自然也应通过C1来提交数据给远程数据模块,把C3.ApplyUpdates(-1)
改成C1.ApplyUpdates(-1)看看;
3,如果问题还存在,把客户端的代码贴出来看看
因为在ClientDataset1中,C2,C3只能算是C1的一个字段而已
第二,依你所说的是,主细表结构,那么普通的更新是不可以的,因为DataProvider是识别不了的,需要使用Tupdatesql控件(大概是这样,控件的具体名称现在已经模糊了!)
第三,如果还是不行,那么另请高人