CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

主/从表的问题

楼主gaden007(斌)2001-12-18 22:56:26 在 Delphi / VCL组件开发及应用 提问

我的表A(主)和表B(从)是主从关系,如果想删除A表中的纪录时,如果B表中还有子纪录就会出错,我用Try..except系统还是不停的报错,而且是不停的出现错误对话框,除非关闭了程序,为什么会这样呢?  
  try  
      delete   A  
  except  
      shoemessage('B表中还有子纪录')  
  end;  
    它会先显示这条Message   ,之后就不停的出现系统的错误对话框 问题点数:20、回复次数:22Top

1 楼gaden007(斌)回复于 2001-12-19 09:40:48 得分 0

。。Top

2 楼gaden007(斌)回复于 2001-12-19 09:47:30 得分 0

怎么我在第一页见不到我的问题的Top

3 楼yinmingke(黄豆汤)回复于 2001-12-19 09:53:15 得分 3

让我来告诉你吧,添加数据要先在从表添,再添从表.删除数据要先删光从表的,然后再删除主表的.因为主表的1条记录对应着从表的多条记录.那么,我问你,如果主表的记录不存在了,对于从表的那些相对应的记录还有存在的必要吗?(至少在逻辑上是这样)Top

4 楼gaden007(斌)回复于 2001-12-19 10:28:58 得分 0

谢谢,这个我知道,但我在删除主表纪录时是不知道从表还有没有纪录的,所以  
  就用try...except,但还是不行Top

5 楼flyonet(人生如梦【★】梦如人生)回复于 2001-12-19 11:25:44 得分 3

try  
      delete   A  
  except  
      shoemessage('B表中还有子纪录')  
  end;  
    是没有执行Delete   A语句失败,所以才showmessage!Top

6 楼gaden007(斌)回复于 2001-12-19 11:35:04 得分 0

如果我的从表里还有纪录那肯定执行Delete   A   会失败,所以就用ShowMessage,但问题是它显示完Message后不过停的出现系统的错误信息,直到关闭程序,请问这是为什么Top

7 楼zzllabc(抱朴子--清心释累,绝率忘情)回复于 2001-12-19 11:42:47 得分 3

在IDE里运行的呢?还是直接运行程序?Top

8 楼gaden007(斌)回复于 2001-12-19 11:50:24 得分 0

直接运行了Top

9 楼gaden007(斌)回复于 2001-12-19 11:52:15 得分 0

就算是在IDE里运行正常也最多显示一次系统错误信息之后就没事了,但现在是不停的显显系统的错误,   不给做其它事Top

10 楼gaden007(斌)回复于 2001-12-19 12:32:02 得分 0

up...Top

11 楼flyonet(人生如梦【★】梦如人生)回复于 2001-12-19 12:42:40 得分 3

都写出来看看  
  Top

12 楼yinmingke(黄豆汤)回复于 2001-12-19 13:22:46 得分 0

老大阿,在删除你的主表记录的时候你不会先去子表里面查询一下有没有相关联的记录存在吗?  
  delete   A   是删除   a表中所有记录的意思吧?每删一条就会返回一个错误,当然会不停的显示系统错误了!Top

13 楼Rabbit_luo(走入深秋)回复于 2001-12-19 13:35:49 得分 4

如果在删除主表记录时,从表有记录可通过错误代码来判别,而不能简单地通过TRY--EXCEPT来!如果从表记录可删除的话你可在删除主表时通过触发器达到先删除从表的记录,如此一来就不会出错啦!Top

14 楼gaden007(斌)回复于 2001-12-20 15:44:31 得分 0

昨天不知干啥,老是回不了贴  
  yinmingke(黄豆汤) 你的意思我明白,我就是不想这样做,Delete   A   只是这样写,我的代码不是这样写的:  
  procedure   TFMshift.delClick(Sender:   TObject);  
  var   i:integer;  
          BookMarkList:TBookMarkList;  
          BookMark:TBookMarkStr;  
  begin  
        BookMark:=Qu_mshift.Bookmark;  
        BookMarkList:=DBGrid1.SelectedRows;  
        if     BookMarkList.Count>0   then  
            begin  
                if   MessageDlg('是否要删除这些纪录。',mtConfirmation,[mbyes,mbno],0)=mryes   then  
                    begin  
                          for   i:=0   to   bookmarklist.Count-1   do  
                                begin  
                                    Qu_mshift.BookMark:=BookMarkList[i];  
                                    try                                            
                                        Qu_mshift.Delete;                                      
                                    except  
                                      //   raise   exception.create('这条纪录不能删除   ');  
                                        on   E:Exception     do  
                                            begin  
                                                ShowMessage('错误:'+E.Message);  
                                            end;  
                                    end;  
                                  end;  
                          BookMarkList.Clear;  
                    end;  
            end;  
  end;  
  主表是Mshift它的从表是Mstaff  
  Top

15 楼gaden007(斌)回复于 2001-12-20 16:09:10 得分 0

再帮帮我好吗?Top

16 楼meady()回复于 2001-12-20 16:23:35 得分 4

把异常捕捉放在循环外面试试Top

17 楼gaden007(斌)回复于 2001-12-20 16:27:32 得分 0

谢谢,马上试试Top

18 楼hj_cn(风影)回复于 2001-12-20 16:46:45 得分 0

try  
      delete   A  
  except  
      shoemessage('B表中还有子纪录')  
  end;  
  其实你这样写不全面,可能是多种情况产生的异常,所以并不是只要B表有记录就会产生异常  
  应这样判断在删除主表之前先判断从表有没有记录如有或者先删除从表再删除主表或者不能删除这个由你定。Top

19 楼gaden007(斌)回复于 2001-12-20 17:08:27 得分 0

meady() :刚试过了,还是一样  
  hj_cn() 看来也只有这样了  
  Top

20 楼gaden007(斌)回复于 2001-12-21 11:19:08 得分 0

up...Top

21 楼meady()回复于 2002-01-14 20:41:08 得分 0

如果没解决的话,错误信息写出来看看Top

22 楼meady()回复于 2002-01-14 20:41:16 得分 0

所有的Top

相关问题

  • 主从表联结?????
  • 主从表问题
  • 主从表保存
  • 主从表问题。
  • 求主从表SQL
  • 主从表查询?
  • 主从表问题?
  • 主表-从表 和 父表-子表是一个意思吗?
  • 水晶报表显示主从表asp.net
  • 主从表的水晶报表问题。

关键词

  • 系统
  • 主表
  • 删除
  • 表
  • bookmarklist
  • 记录
  • mshift
  • 纪录
  • aexcept
  • shoemessage

得分解答快速导航

  • 帖主:gaden007
  • yinmingke
  • flyonet
  • zzllabc
  • flyonet
  • Rabbit_luo
  • meady

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo