第一次写数据时老是出现EOleexception,实际上数据提交成功,以后都正常。

tohope 2006-10-16 02:14:22
实在不行了,自己搞了好久都搞不出来。只好求助大家了。
一个视图 Studentinfo有四个表组成,其中三个dorm,class.和Student
Studentinfo.dormid->dorm.id+Student.dormid
Studentinfo.classid->class.id+Student.classid

dorm,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,则新加的数据没有出现。

这个问题我实在是搞不定了,请各位高手指教指教。在线等。。。。

...全文
196 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
h886166 2006-10-16
  • 打赏
  • 举报
回复
不用updatebatch不行吗?用updatebatch又没做数据检测,万一数据有问题净报系统错误,
不如用ExecSQL
tohope 2006-10-16
  • 打赏
  • 举报
回复
回银狐兄,没有关联错误,我又检查了一遍。

dabaicai兄:改了之后效果一样。

我要崩溃了。。。
dabaicai 2006-10-16
  • 打赏
  • 举报
回复
把refresh改为requery
软件钢琴师 2006-10-16
  • 打赏
  • 举报
回复
查看一下是不是在视图里用力majorid 字段作为与另外的标的关联字段了

2,498

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧