环境delphi 5,sql server 2000,windows professional 2000,cs 结构
第一个问题:一个BDE  query1,
Query1.close;
Query1.sql := ‘select 1/0 as i’;
Query1.open;
竟然不发生除以零错误!!!
为甚么?
第二个问题: 一个BDE  query1,
Query1.close;
Query1.sql := ‘exec sp_test’;
Query1.open;
其中 exec sp_test在查询分析器中执行会出错,但是在前台却捕捉不到这个错误.
甚么意思啊?
真是被打败了!!!
各位兄弟帮忙分析分析,谢谢

解决方案 »

  1.   

    wfeng107(风风火火) ;
    我只是测试用的
      

  2.   

    Delphi 7,SQL 2005,Windows 2003 Server Sp1Query1.close;
    Query1.sql.Add('select 1/0 as i'); //Query1.sql := ‘select 1/0 as i’;
    Query1.open;发生异常可以捕捉
    ---------------------------
    Project1
    ---------------------------
    General SQL error.[Microsoft][ODBC SQL Server Driver][SQL Server]Divide by zero error encountered.
    ---------------------------
    确定   
    ---------------------------
    后一个就不测试了
      

  3.   

    query1.sql.text:='';
    or 
    query1.sql.add('');
    ................
      

  4.   

    postren(小虫) ;
    可能你的版本高的缘故Delphi是不是对某些类型的错误会忽略掉呢?
      

  5.   

    sorry,
    Query1.sql := ‘select 1/0 as i’; //这个是我笔误
    应为
    xQuery1.sql.text := ‘select 1/0 as i’;
    问题不在这里
      

  6.   

    cuteant(我这张旧船票能否登上你的破船|涛声是否依旧) ;
    请问在哪里关闭了错误提示啊,怎么样可以打开?
      

  7.   

    Tools->Debugger Options
    Intergrated Debugging
      

  8.   

    Tools->Debugger Options
    Intergrated Debugging
    我改过了,还是没用.吐血了
      

  9.   

    与SQL无关的吧ShowMessage(IntToStr(1/0));会不会出错?
      

  10.   

    举错例子了ShowMessage(IntToStr(StrToInt('1') div StrToInt('0')));看看会不会报错。
      

  11.   

    w2k+sql server 2000+d6+ado可以捕捉select 1/0 as i
    w2k+sql server 2000+d6+odbc可以捕捉select 1/0 as i
    第二个也应该能
    估计是d5的关系
      

  12.   

    ShowMessage(IntToStr(StrToInt('1') div StrToInt('0'))); 会报错
    我这里用的是bde.
    难道真的是版本关系,天哪,这么大一套系统,得有多少bug啊,都不敢用delphi了:(
      

  13.   

    大家帮我测测这段代码create procedure sp_child
    as
    select 1
    gocreate procedure sp_parent
    as
    exec sp_child
    raiserror 333333 'test'
    go
    Query1.close;
    Query1.sql.text := ‘exec sp_parent’;
    Query1.open;我这里的执行结果是不会报错,但如果修改为
    create procedure sp_parent
    as
    raiserror 333333 'test'
    go
    就会报错.
    BDE和ADO都是同样的结果
      

  14.   

    我用d6测试与楼主结果相同
    -------------------------------
    另外,这不一定只与delphi有关,我们以前用d5+oracle作过很多系统.没什么问题
    当初也是考虑到了borland与sqlserver兼容的问题
      

  15.   

    第一个,/这个不是除号,div才是;其次,单引号里面的是字符串,不是表达式.
    第二个,那是正常,你改一下能用就行了;比如我自己刚解决的一个问题,sql.Add('insert into mytbl'+'{这里要有一个空格,不然到execsql就异常,没有空格也不要execsql就没事} values(:id,:pwd)');
      

  16.   

    aimie(独孤行) :
    这位兄弟,
    第一个,“/”这个符号在sql里面是除号啊
    第二个, 你的意思是改成这样
     ‘exec sp_test   ’??
    加不佳这个空格有区别吗?没有道理啊
      

  17.   

    在另一个帖子里找到答案了。
    原因是如果在一个存储过程中有返回结果集的动作,那么delphi就捕捉不到错误。
    真是晕倒。
    给分。