当用dbnavigator 来进行删除记录时,对于那种关系数据库,比方说有两张相关联的表,无法进行删除。那该用什么方法呢?还有当要增加一条纪录时 如果数据库规定

  • 主题发起人 主题发起人 ★蓝天★
  • 开始时间 开始时间

★蓝天★

Unregistered / Unconfirmed
GUEST, unregistred user!
当用dbnavigator 来进行删除记录时,对于那种关系数据库,比方说有两张相关联的表,无法进行删除。那该用什么方法呢?还有当要增加一条纪录时 如果数据库规定某一字段必须不能为空,当用dbnavigator进行增加纪录时,怎么显示出错信息?请教了!! (100分)<br />当用dbnavigator 来进行删除记录时,对于那种关系数据库,比方说有两张相关联的表,无法进行删除。那该用什么方法呢?还有当要增加一条纪录时 如果数据库规定某一字段必须不能为空,当用dbnavigator进行增加纪录时,怎么显示出错信息?请教了!! [blue][/blue]
 
看一看D5自带的DEMO中的错误处理吧。
 
(是这样的,我有个access的数据库,里面有两个表分别是 Department 和 Employee
,其中 Department是主表,我现在已经用 adoconnection adodataset datasource
dbgrid 完成了对这两个表的显示和查询功能,现在我就是想在每个dbgrid上方分别加上
dbnavigator,想利用dbnavigator上面的删除键,删除dbgrid中被鼠标所选定的 记录 。
可是Department和Employee这两个表存在着关系,所以当我用dbgrid的删除键进行删除时,
就出现了错误,我不知道怎么来完成这一过程!!还需要些什么组件?是要用adocommand还
是要用adoquery? 我同学说 用这个方法 “DBNavigator的Onclick里判断是否按下删除按钮
,如果是,则执行:adodataset1.delete;adodataset2.delete;这里dataset1,dataset2 分
别是你的主表和从表所用的dataset ” 我用这个办法试过了,还是不行啊,我的
Employee表中部门代号中的值分别为‘n1,n2,n3',Department 中部门代号的值有
'n1,n2,n3,n4,n5'当我用了你刚才说的运行后,在department表中把n4删除后,发现表中
只有n1,n2,n3.不知为什么n5也被删除了。当我要把n1删除时,出现错误警告
Project Profect1.exe raised exception class EOleException with message 'The
record cannot be deleted or changed because table 'Employee' includes related
records'.Process stopped.Use Step or run to continue. 请问我该怎么办???
 
自己写增加,删除的按钮啊,把dbnavigator上的增加,删除按钮false掉,想实现什么都没有
问题了[:)]
 
能告诉我怎么写吗?我菜得厉害
 
放个按钮,OnClick中判断不能为空的项有没有输入值,没有就showmessage报错。
删除也放个按钮,点了之后在代码里分别删除两个表里的相关记录。
 
给个例子你看看:

新增的:
procedure TForm_daibiao.B_appendClick(Sender: TObject);
begin
t_daibiao.Append;
t_zp.append;
end;

删除的:
procedure TForm_daibiao.B_deleteClick(Sender: TObject);
var
begin
if t_daibiao.FieldByName('xm').asstring='' then application.MessageBox('不能删除空记录!','警告!',MB_OK )else
begin
if application.MessageBox('您确定要删除这一条记录吗?','提示',MB_OKCANCEL + MB_DEFBUTTON1)=IDOK then
begin
t_daibiao.Delete;
t_zp.Delete;
application.MessageBox('删除成功!','提示',MB_OK);
end;
end;
end;
t_daibiao与t_zp是关联的,你应该用一个dbnavigator控制,另外post也要自己写,差不多的
在dataset的beforepost事件里判断非空的字段是否不为空,否则给出出错信息。
ok!!多试试就可以了。
好了吧!给分!!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
751
SUNSTONE的Delphi笔记
S
S
回复
0
查看
758
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部