当前位置:主页>销售管理软件> 列表

非常有趣的存储过程问题,讨论都有分 找管家婆软件免费版

财务软件版1楼: 调用存储过程使用TADOStoredProc,出现一个非常有趣的现象(代码付在后面),当返回一个Int的值小于10时,一切正常.但当Int值大于或者等于10时,就会出现错误,错误提示为:"Could not convert variant of type(OleStr) into type(boolean)",用ShowMessage调试显示返回的结果,显示"*"
说明:@ChildCount在SQL存储过程中为INT,ChildCount 为Integer值

详细代码
proc.Parameters.Clear;
DM.ado.Parameters.ParseSQL()
proc.ProcedureName := ''[dbo].[dt_User_DelCatetory]'';
with proc.Parameters do //增加存储过程的参数
begin
AddParameter.Name := ''@DeleteID'';
AddParameter.Name := ''@JoinTable'';
AddParameter.Name := ''@JoinField'';
AddParameter.Name := ''@Result'';
AddParameter.Name := ''@ChildCount'';
end;

with proc.Parameters do
begin
ParamByName(''@DeleteID'').Value := IntToStr(PCurNode(Node.Data)^.NodeID);
ParamByName(''@JoinTable'').Value := TableName;
ParamByName(''@JoinField'').Value := FieldName;
ParamByName(''@Result'').Value := ''0'';
ParamByName(''@ChildCount'').Value := ''0'';
ParamByName(''@Result'').Direction := pdOutput; //输入出结果
ParamByName(''@ChildCount'').Direction := pdOutput;
end;
proc.ExecProc;
DeleteResult := proc.Parameters.ParamByName(''@Result'').Value; //结果
ChildCount := proc.Parameters.ParamByName(''@ChildCount'').Value; //不能删除的记录数
proc.Close;
//64,''tb_Corporation'',''ci_Area'',@Result,

2楼: 学习,我还从来没有用过存储过程呢。 如管家婆软件免费版

3楼: 估计楼主是TADOStoredProc的paramenter里对应参数的datatype不对

4楼: 呵呵,根据wky4305z的提示,我增加了存储过程的类型为ftInteger,结果解决了问题,非常谢谢,但我不明白为什么会这样?我原来没有指定数据类型,希望能为我解答
后天给分.

5楼: 设置了ProcedureName 以后,就不要手工添加Parameters 了吧?

6楼: royal1442
那怎么增加值?

财务软件版7楼: 接受答案了.