为什么用SELECT生成的视图有的可以直接编辑(在DBGRID中),有的则会出错? (50分)

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

soj

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么用SELECT生成的视图有的可以直接编辑(在DBGRID中),有的则会出错?
select语句如下

SELECT 课时.年级, 课时.班级, 教师.教师姓名, 课时.课时号, 题目.题目名称, 题目.难度系数, 课时.课时ID, 题目.类型, 备课记录.考试题
FROM 题目 INNER JOIN ((教师 INNER JOIN 课时 ON 教师.教师ID = 课时.教师ID) INNER JOIN 备课记录 ON 课时.课时ID = 备课记录.课时ID) ON 题目.题目ID = 备课记录.题目ID;

编辑时就会出错

但这样一条
select * from 课时 where 已备课=true;
就不会出错,是不是因为有多个表Delphi就不能自动更新?因为在Access里是可以级联更新的。

 
多个表连接是不可以更新的,这是一个原则!
 
直接编辑的query,必须把requestlive设为true,正如楼上所说多表联接的视图不能设其requestlive设为true,你试试就知
不过你可设query的cachedupdate为true,联接一个updatesql更新则可直接编辑了,存盘时再apply就是了
 
query中有多个表Delphi就不能编辑,但如果你是用的ado就可以
 
你們不知道用ADO連結后台表時﹐如果表有上萬條記錄﹐打開一個表就需要十几秒鐘吧嗎﹐
對這個問題各位高手有沒有解決方法﹗謝了﹗
 
to yangkee:
我用的就是ADO,为什么还是不能更新?表中ID我用的是自动增长字段,会不会是这个问题?
 
delphi中query部件,若where 中有多个表,或有order by参数,则无法实现对原数据库
的更新。
 
我用的是ADODATASET,是不是也不可以?
那么用户在DBGRID中的修改应该如何提交?
 
用UPDATASQL试试
 
多个表当然可以更新,你设好多个UpdateSQL就行了。
 
ADODataSet怎么连接UpdateSQL?
 
后退
顶部