ADOQueryTmp := nil;
ADOQueryTmp := TADOQuery.Create(ADOQueryTmp);
ADOQueryTmp.Connection := Data1.ADOConnection1;
begin
s_sql:='EXEC PR_WLCRKSH '+CRKid+',1,'''+Frm_Main.User_Name+''','''+computername1+'''';
ADOQueryTmp.SQL.Clear ;
ADOQueryTmp.SQL.Add(s_sql) ;
ADOQueryTmp.open;
MsgBoxinfo(trim(ADOQueryTmp.FieldByName('result').asstring));程序没有问题,如果调用存储过程返回result就会很正常,如果没有就会报错,我希望不返回时就不要报错,直么都不显示
ADOQueryTmp := TADOQuery.Create(ADOQueryTmp);
ADOQueryTmp.Connection := Data1.ADOConnection1;
begin
s_sql:='EXEC PR_WLCRKSH '+CRKid+',1,'''+Frm_Main.User_Name+''','''+computername1+'''';
ADOQueryTmp.SQL.Clear ;
ADOQueryTmp.SQL.Add(s_sql) ;
ADOQueryTmp.open;
MsgBoxinfo(trim(ADOQueryTmp.FieldByName('result').asstring));程序没有问题,如果调用存储过程返回result就会很正常,如果没有就会报错,我希望不返回时就不要报错,直么都不显示
if not ADOQueryTmp.IsEmpty then
MsgBoxinfo(trim(ADOQueryTmp.FieldByName('result').asstring));
不行,open了就不行还用返回commandtext does not return a result set
启发,可以了
select '' as result'
if ADOQueryTmp.FieldByName('result').asstring<>'' then
MsgBoxinfo(trim(ADOQueryTmp.FieldByName('result').asstring));
ADOQueryTmp.ExecSQL;
MsgBoxinfo(trim(ADOQueryTmp.FieldByName('result').asstring));
这样就可以捕捉到commandtext does not return a result set信息
如果你是执行一个select语句的话,不用修改任何语句就可以捕捉到commandtext does not return a result set信息。
了解深入点,open和execsql的区别在于:
open返回结果集。
excsql不返回结果集。
在执行insert、update、delete等操作的时候,因为你并不需要返回结果集,就可以用excsql了。象标准的select 语句就得用 open 了:)
这个当然知道了,费话
我是要执行存储过程,但是执行存储里有些异常信息要返回给客户看,但是这个存储过程照样执行下去,不影响,只是提醒if @djbh='' or @djbh=null
begin
raiserror('单据编号不能为空。',16,1)
return
end
这个强制退出
if @bz=''
select '退货的话备注最好填一下' as result
这个只是提醒客户