实在不行了,自己搞了好久都搞不出来。只好求助大家了。
一个视图 Studentinfo有四个表组成,其中三个dorm,class.和Student 
Studentinfo.dormid->dorm.id+Student.dormid
Studentinfo.classid->class.id+Student.classiddorm,class 都是录好的单表。
现在通过Student表的添加删改来完成整个对 视图的操作。主要代码如下:
dm.student.append;dm.Student.FieldByName('classid').asinteger:=classid;
dm.Student.FieldByName('dormid').asstring:=dormid;dm.Student.post;dm.student.updatebatch(arall);
dm.studentinfo.refresh;
在数据控制 使用DBEDIT数据集为studentinfo.执行时,提示:EOleException 无法将NULL插入majorid,表dorm.dbo.class;该列不允许空值,INSERT失败。
majorid是class表中一个非空字段。当把它设置为可为空时,该条提示没有了,但是与此很相似的:
“无法将NULL插入dormid,表dorm.dbo.student;该列不允许空值,INSERT失败。”
实际的情况是当把程序关闭,再打开的时间,数据已经正常的添加了。
如果把最后一句dm.studentinfo.refresh;去掉,则没有以上提示,但是数据库没有办法刷新了,比如我使用BTNCLK 打开另外一个浏览dm.studntinfo的DBGrid,则新加的数据没有出现。这个问题我实在是搞不定了,请各位高手指教指教。在线等。