关于ADOStoredProc的奇怪的问题,200分奉上!在线等待!

我用ADOStoredProc调用sql server里的存储过程myproc
下面的代码却不行
ADOStoredProc1.Connection:=adoconnection1;
ADOStoredProc1.Name:=‘myproc’;
ADOStoredProc1.ExecProc;

奇怪的是如果我在属性栏里设置ADOStoredProc的connection、name之后
再用
ADOStoredProc1.ExecProc;
却可以通过

(我的存储过程里定义了一个返回参数 @maxID int output)

我想不通哪儿出问题了

这是怎么回事,难道是delphi在背后到底做了什么?
我想在程序里面动态设ADOStoredProc的name属性,该怎么办?

[442 byte] By [xiaohuan-屎蜢-球球的] at [2007-12-16]
# 1
关注
曾经遇到过,至今没有解决
zdcnow-磁效应 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 2
ADOStoredProc1.Name:=‘myproc’; 符号有问题''
outer2000-天外流星 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 3
with DataModule_GS.StoredProc_CZY do
begin
Close;
UnPrepare;
ParamByName('iCZ').Asstring:='删除';
ParamByName('iBM').Asstring:='工伤';
ParamByName('iYH').Asstring:=ComboBox_GLYH.Text;
ParamByName('iMM').Asstring:=Edit_GLMM.Text;
ParamByName('iQX').Asstring:=ComboBox_GLQX.Text;
ParamByName('iOldYH').Asstring:=ComboBox_GLYH.Text;
Prepare;
ExecProc;
end
和上边类似
ddvboy-ddv-我心憔悴 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 4
outer2000(天外流星):
ADOStoredProc1.Name:=‘myproc’; 符号有问题''

当然不是符号的问题,编译通过
xiaohuan-屎蜢-球球的 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 5
关注!!
lydwei at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 6
麻烦大家在自己的机器上试一试吧
xiaohuan-屎蜢-球球的 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 7
ado补丁包打过吗/
9igogo-就爱狗狗 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 8
9igogo(就爱狗狗):

我用的是D6,D5的时候打过,装了D6后就没打过,我刚才搜了一下,找不到D6的ado补丁,哪儿有?告诉我,分好说
xiaohuan-屎蜢-球球的 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 9
ADOStoredProc1.的参数问题 。。。你没有设置好你的参数?
LaoZheng-阿明 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 10
laozheng:
怎么设啊?
xiaohuan-屎蜢-球球的 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 11
存储过程是这样的
CREATE PROCEDURE [N_teacher_maxID]
@maxID [int] output
AS
select @maxID='...'

INSERT INTO ...

values(@maxID,...)

GO
插入一条记录,然后返回@maxID
xiaohuan-屎蜢-球球的 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 12
没有什么问题啊;我以前作过的就是用一个ADOStoredProc动态链接服务器程序的多个过程接口啊;一直很好

不过说来也怪;我在win2000上装的delphi6;新建一个程序;放入adotable、datasource1、和dbgrid;一样设好,可是在设计期把adotable打开没有任何问题;然后;一编译却错误;打不开adotable表;
同样的在98下面就是好的阿;

怎么回事啊??

:(郁闷
summe-夏飞扬 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 13
是这样的
TADOStoredProc实际上就是把CommandType设为cmdStoredProc 的ADODataSet
所以执行存储过程时
TADOStoredProc会把你的存储过程名转换为sql方式调用
# 14
如果想在程序里动态确定要执行的存储过程
还不如直接用ADODataSet
执行这样的一条语句:
call myproc
(如果此格式不对,请查一下sql server的帮助)
# 15
可能与参数的设置有关。
dailin-gz_dailin at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 16
我也遇到过,你可能有参数传递,所以是这样的:

ADOStoredProc1.Connection:=adoconnection1;
ADOStoredProc1.Name:=‘myproc’;
*********ADOStoredProc1.Parameters.Refresh;********
ADOStoredProc1.Parameters[1]=.....
...
ADOStoredProc1.ExecProc;

参数要刷新,否则得不到最新的参数列表!

如果还有问题,就把
ADOStoredProc1.Name='myproc;1';
试试看吧
Chen_ZhongHua-小狼 at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...
# 17
ADOStoredProc1.Connection := ADOConnection1;
ADOStoredProc1.ProcedureName := 'myproc';
ADOStoredProc1.Parameters.Refresh;
ADOStoredProc1.Parameters.ParamByName('@maxID').Direction := pdOutput;
ADOStoredProc1.ExecProc;
edpzjh at 2007-10-22 > top of Msdn China Tech,Delphi,VCL组件开发及应用...