环境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在查询分析器中执行会出错,但是在前台却捕捉不到这个错误.
甚么意思啊?
真是被打败了!!!
各位兄弟帮忙分析分析,谢谢
第一个问题:一个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在查询分析器中执行会出错,但是在前台却捕捉不到这个错误.
甚么意思啊?
真是被打败了!!!
各位兄弟帮忙分析分析,谢谢
我只是测试用的
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.
---------------------------
确定
---------------------------
后一个就不测试了
or
query1.sql.add('');
................
可能你的版本高的缘故Delphi是不是对某些类型的错误会忽略掉呢?
Query1.sql := ‘select 1/0 as i’; //这个是我笔误
应为
xQuery1.sql.text := ‘select 1/0 as i’;
问题不在这里
请问在哪里关闭了错误提示啊,怎么样可以打开?
Intergrated Debugging
Intergrated Debugging
我改过了,还是没用.吐血了
w2k+sql server 2000+d6+odbc可以捕捉select 1/0 as i
第二个也应该能
估计是d5的关系
我这里用的是bde.
难道真的是版本关系,天哪,这么大一套系统,得有多少bug啊,都不敢用delphi了:(
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都是同样的结果
-------------------------------
另外,这不一定只与delphi有关,我们以前用d5+oracle作过很多系统.没什么问题
当初也是考虑到了borland与sqlserver兼容的问题
第二个,那是正常,你改一下能用就行了;比如我自己刚解决的一个问题,sql.Add('insert into mytbl'+'{这里要有一个空格,不然到execsql就异常,没有空格也不要execsql就没事} values(:id,:pwd)');
这位兄弟,
第一个,“/”这个符号在sql里面是除号啊
第二个, 你的意思是改成这样
‘exec sp_test ’??
加不佳这个空格有区别吗?没有道理啊
原因是如果在一个存储过程中有返回结果集的动作,那么delphi就捕捉不到错误。
真是晕倒。
给分。