在一个存储过程中我用'Err'表示错误码,但在Delphi中调用时用FieldByName('Err').AsInteger发现负数成了正数,如-1成了1,-2成了2,导致程序运行错误,特向各位大侠请教。
解决方案 »
- 求助!D7下的可以换皮肤的控件,要有源码!谢谢各位!
- aiirii(ari-爱的眼睛) , wnhoo(e梦缘) 请来接分!
- 在Delphi中如何显示“水晶报表”的“子报表”
- Delphi 一个小问题!! (一解决,就结贴)
- 关于checkbox的问题?
- 怎样替换tstings中的一个字符串?
- delphi下用speech sdk保存wav文件出错
- Panel播放视频时,Panel上的其它控件显示不出来,如何才能同时显示?delphi
- 学习:vcl的消息处理机制,请指点。
- shellexecute的一些"高级"问题?请看看!
- 有关dbExpress组件的问题
- GetDriveType() API函数
ErrCode:= FieldByName('Err').AsInteger;
取值,结果ErrCode为正值,
ErrCode定义为int ,longint, int64都是这样但在查询分析器中执行结果正确为负值
继续运行,ErrCode:= FieldByName('Err').AsInteger后,ErrCode就成了正值。
再在查询分析器中执行语句,结果还是正确,为所设定的负值,不知是怎么回事。
Err
------
-100继续运行,ErrCode:= FieldByName('Err').AsInteger后,ErrCode就成了正值。
ErrCode = 100再在查询分析器中执行语句,结果还是正确,为所设定的负值:
Err
------
-100
不知是怎么回事。
再 StrToInt() 看看 (瞎猜的)
sSql := 'DECLARE @Err bigint '
+ ' EXECUTE prTest @Err OUTPUT '
+ ' SELECT @Err AS ErrCode' ;
with query1 do
begin
close;
SQL.Clear;
SQL.Add(sSql);
Open;
ErrCode := FieldByName('ErrCode').AsInteger;
...
end
最后采用 wjlsmail(计算机质子) ( ) 的思路用StrToInt()搞定了。